如何将collada对象加载到three.js?
我刚接触three.js,在加载collada对象时遇到问题。我无法使home.dae在浏览器中渲染 我根据答案在第二次更新中更新了代码如何将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
// 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)
- 我想到的几件事:
THREE.OrbitControls()
添加到场景中并四处导航。(),您也可以尝试从控制台访问collada对象或在调试器中检查它(查找geometry.boundingBox
和其他属性)。此外,您的第二次更新缺少render
-调用,这是否遗漏了?我可以在浏览器的开发人员工具下的“网络”选项卡中看到图像和dae文件,但对象本身没有在浏览器中渲染。好的,这样您就可以让相机从(0,1,4)查看到(0,0,0),但可能该对象比该对象大得多,或者在其他地方。请尝试将THREE.OrbitControls()
添加到场景中并四处导航。(),也可以尝试从控制台访问该collada对象或在调试器中检查它(查找geometry.boundingBox
和其他属性)。此外,您的第二次更新缺少渲染
-调用,是否忽略了此调用?