Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将collada对象加载到three.js?_Three.js_Collada - Fatal编程技术网

如何将collada对象加载到three.js?

如何将collada对象加载到three.js?,three.js,collada,Three.js,Collada,我刚接触three.js,在加载collada对象时遇到问题。我无法使home.dae在浏览器中渲染 我根据答案在第二次更新中更新了代码 // INITIAL var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000); var render

我刚接触three.js,在加载collada对象时遇到问题。我无法使home.dae在浏览器中渲染

我根据答案在第二次更新中更新了代码

        // INITIAL

        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.ColladaLoader();
        loader.load('home.dae', function(collada){
            scene.add(collada);
        });

        function render() {
          renderer.render(scene, camera);
        }

        render();


        // SECOND UPDATE

        var scene = new THREE.Scene();
        var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);
        camera.position.set(0,1,4);
        camera.lookAt(scene.position);

        var renderer = new THREE.WebGLRenderer();
        renderer.setSize(window.innerWidth, window.innerHeight);
        document.body.appendChild(renderer.domElement);

        var loader = new THREE.ColladaLoader();

        loader.load('home.dae', function(collada){
            scene.add(collada.scene);
        });

        function render() {
            requestAnimationFrame(render);
            renderer.render(scene, camera);
        }

        render();

渲染函数只调用一次。试试这个-

function render() {
    requestAnimationFrame(render);
    renderer.render(scene, camera);
}

还要检查文件路径是否有效。

渲染函数只调用一次。试试这个-

function render() {
    requestAnimationFrame(render);
    renderer.render(scene, camera);
}

还要检查您的文件路径是否有效。

请记住以下几点:

  • 正如@Rasheduzzaman已经指出的,渲染函数调用得太早(当您调用
    render()
    时,
    scene.add(collada);
    调用不可能发生。请使用他的答案
  • collada加载程序的工作方式有点不同:文档对此并不清楚,但返回的对象是collada文件中可能包含的所有内容的集合,请参见此处以获取列表:(另外:使用浏览器devtools中的调试器检查在那里找到的数据)。您可能需要执行
    scene.add(collada.scene)
    或类似内容
  • 您没有为相机设置位置,因此它位于(0,0,0),这可能不是一个好主意,请尝试
    camera.position.set(0,1,4)
    或类似的方法
  • 您需要知道预期的情况:您正在加载的模型的大小是多少?它放在哪里?确保将您的相机指向那里(可以使用
    相机。查看(object.position)
    ),并相应地调整近平面和远平面

    • 我想到的几件事:

      • 正如@Rasheduzzaman已经指出的,渲染函数调用得太早(当您调用
        render()
        时,
        scene.add(collada);
        调用不可能发生。请使用他的答案
      • collada加载程序的工作方式有点不同:文档对此并不清楚,但返回的对象是collada文件中可能包含的所有内容的集合,请参见此处以获取列表:(另外:使用浏览器devtools中的调试器检查在那里找到的数据)。您可能需要执行
        scene.add(collada.scene)
        或类似内容
      • 您没有为相机设置位置,因此它位于(0,0,0),这可能不是一个好主意,请尝试
        camera.position.set(0,1,4)
        或类似的方法
      • 您需要知道预期的情况:您正在加载的模型的大小是多少?它放在哪里?确保将您的相机指向那里(可以使用
        相机。查看(object.position)
        ),并相应地调整近平面和远平面

      我尝试了,但仍未呈现。dae文件与html文件位于同一目录中。我尝试了,但仍未呈现。dae文件与html文件位于同一目录中。我可以在浏览器的开发人员工具下的“网络”选项卡中看到图像和dae文件,但对象本身未在浏览器中呈现。确定,因此您可以让摄影机从(0,1,4)到(0,0,0),但对象可能比(0,0,0)大得多,或者在其他地方。请尝试将
      THREE.OrbitControls()
      添加到场景中并四处导航。(),您也可以尝试从控制台访问collada对象或在调试器中检查它(查找
      geometry.boundingBox
      和其他属性)。此外,您的第二次更新缺少
      render
      -调用,这是否遗漏了?我可以在浏览器的开发人员工具下的“网络”选项卡中看到图像和dae文件,但对象本身没有在浏览器中渲染。好的,这样您就可以让相机从(0,1,4)查看到(0,0,0),但可能该对象比该对象大得多,或者在其他地方。请尝试将
      THREE.OrbitControls()
      添加到场景中并四处导航。(),也可以尝试从控制台访问该collada对象或在调试器中检查它(查找
      geometry.boundingBox
      和其他属性)。此外,您的第二次更新缺少
      渲染
      -调用,是否忽略了此调用?