Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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
Javascript 3.js和colladaloader_Javascript_Three.js - Fatal编程技术网

Javascript 3.js和colladaloader

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

我是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('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);