【问题标题】:Cannot display 3D model in threejs无法在threejs中显示3D模型
【发布时间】:2020-06-20 02:41:43
【问题描述】:

我正在尝试显示一个 gltf 模型,但它没有出现。我正在运行一个http服务器,所以它现在导致更多错误,这个“错误:无法建立连接。接收端不存在。”出现了

    <html><head>
<title>My first three.js app</title>
<style>
  body {
    margin: 0;
  }
  canvas {
    display: block;
  }
</style></head>[enter image description here][1]<body>
<script src="js/three.js"></script>
<script src="js/GLTFLoader.js"></script>
<script> var scene = new THREE.Scene();
  var camera = new THREE.PerspectiveCamera(
    75,
    window.innerWidth / window.innerHeight,
    0.1,
    1000
  );var renderer = new THREE.WebGLRenderer();
  renderer.setSize(window.innerWidth, window.innerHeight);
  document.body.appendChild(renderer.domElement);

  var loader = new THREE.GLTFLoader();
  loader.load("LegoEv3.glb", handle_load);
  var mesh;

  function handle_load(gltf) {
    mesh = gltf.scene.children[0];
    scene.add(mesh);
    mesh.position, (z = -1000);
  }

  renderer.render(scene, camera);
</script>

【问题讨论】:

  • “我正在运行一个没有的 http 服务器”很难理解。你确定mesh = gltf.scene.children[0] 是正确的吗?您在加载模型之前进行渲染,请尝试在 handle_load 函数的末尾调用另一个渲染调用(以便在模型加载并添加到场景后再次渲染)。
  • 我不明白你能给我更多的细节
  • 我添加了一个答案,所以我可以包含一个代码示例。

标签: javascript html three.js gltf


【解决方案1】:

在加载模型之前只渲染一次。
加载模型并添加到场景后再次尝试渲染

function handle_load(gltf) {
    mesh = gltf.scene.children[0];
    scene.add(mesh);
    mesh.position, (z = -1000);
    renderer.render(scene, camera); // You need to render after model is added
}

【讨论】:

  • 从源 'null' 访问 XMLHttpRequest 在 'file:///C:/LegoRobot/ComplexRobot.glb' 已被 CORS 策略阻止:跨源请求仅支持协议方案:http ,数据,铬,铬扩展,https。我有,这是我现在遇到的错误请注意我已将我的 3d 模型更改为另一个
猜你喜欢
  • 2016-02-25
  • 2020-05-03
  • 1970-01-01
  • 2012-10-06
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
  • 2019-07-02
相关资源
最近更新 更多