Javascript 3.js和colladaloader
我是Three.JS新手,正在尝试通过ColladLoader将一个非常简单(单立方体)的Sketchup模型加载到Three.JS中,我没有收到任何错误,但没有显示任何内容:Javascript 3.js和colladaloader,javascript,three.js,Javascript,Three.js,我是Three.JS新手,正在尝试通过ColladLoader将一个非常简单(单立方体)的Sketchup模型加载到Three.JS中,我没有收到任何错误,但没有显示任何内容: var renderer = new THREE.WebGLRenderer(); var loader = new THREE.ColladaLoader(); var scene = new THREE.Scene(); var camera = new THREE.Camera(); loader.load('Te
var renderer = new THREE.WebGLRenderer();
var loader = new THREE.ColladaLoader();
var scene = new THREE.Scene();
var camera = new THREE.Camera();
loader.load('Test.dae', function (result) {
scene.add(result.scene);
});
camera = new THREE.PerspectiveCamera(35, window.innerWidth / window.innerHeight, 1, 10000 );
camera.position.set(0, 0, 5);
scene.add(camera);
renderer.render(scene,camera);
有人能发现任何直接的错误吗?谢谢加载collada后,您需要重新播放场景。差不多
loader.load('Test.dae', function (result) {
scene.add(result.scene);
renderer.render(scene,camera);
});
此外:
- 相机可能位于几何体内部。默认情况下,面是单面的,从后面/里面看时它们是不可见的。您可以尝试更改摄影机或对象位置和/或设置material.side=THREE.DoubleSide,以便从前面和后面都可以看到面
- 模型的比例可能太小,因此可能太小或太大而无法显示。尝试不同的相机位置(例如z=-1000,-100,-10,-1,1,10,100,1000),并使用lookAt()将其指向0,0,0,或者,我认为ColladLoader现在有一个比例设置,不确定
- 加载器默认为位置0,0,0,因此位于世界/场景的中心。这并不一定意味着屏幕的中心,取决于摄像机。在某些情况下,Collada模型本身可以使中心远离可见对象,因此当它放置在场景中时,可以有效地“偏离中心”。但这不太可能
- 场景中没有任何灯光
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(100, window.innerWidth / window.innerHeight, 0.1, 1000);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
camera.position.set(0, 0, 4);
var loader = new THREE.ColladaLoader();
loader.load("test.dae", function (result) {
scene.add(result.scene);
});
function render() {
requestAnimationFrame(render);
renderer.render(scene, camera);
}
render();
我认为您需要在collada场景中添加对象,或者您正在添加的对象的缩放可能有问题,请缩放它,然后更新对象的矩阵 如果您仍然有问题,可能是某些版本的IE阻止您下载本地文件(您的Test.dae),因此使用firefox或将代码放到服务器上可能值得尝试。好的一点(忽略了异步负载),但它仍然没有显示任何内容。我试过改变背景颜色,但没有用。我需要指定渲染位置还是默认为屏幕中心?谢谢你的帮助,虽然它并没有解决我的问题,但我在遵循你的建议时偶然发现了这个解决方案。
loader.load('test.dae', function colladaReady(collada) {
localObject = collada.scene;
localObject.scale.x = localObject.scale.y = localObject.scale.z = 2;
localObject.updateMatrix();
scene.add(localObject);