gpt4 book ai didi

javascript - Three.js,从Collada导入的Camera看不到物体场景

转载 作者:行者123 更新时间:2023-11-30 17:22:03 24 4
gpt4 key购买 nike

我正在努力使用 Three.js 来理解 Collada Animation 是如何锻炼的!我在 3Dsmax 中制作了一个带有移动相机的动画,并将场景导出到 Collada 中。

loader.load( ColladaName, function ( collada ) {

model = collada.scene;
model.updateMatrix();
animations = collada.animations;
kfAnimationsLength = animations.length;
model.scale.x = model.scale.y = model.scale.z = 0.001; // 1/8 scale, modeled in cm
document.getElementById('preload').style.opacity = '0';

callback()

} );

我从 collada 捕获相机对象:

 model.traverse(function(child) {

if (child instanceof THREE.PerspectiveCamera) {

camera = child;
camera.near = 1;
camera.fov = 30;
camera.castShadow = true;
}

if (child instanceof THREE.SpotLight) {

child.castShadow = true;

child.shadowBias = 0.02;

child.shadowCameraNear = 1;
child.shadowCameraFov = 60;
child.intensity = 1.2;

child.shadowMapWidth = 1024; // default is 1024
child.shadowMapHeight = 1024; // default is 1024
child.shadowDarkness = 0.06; // default is 512

}

});

camera.aspect = window.innerWidth / window.innerHeight;

camera.updateProjectionMatrix();

然后我在我的场景中渲染它: camera.lookAt(场景。位置) renderer.render(场景, 相机);

一切都显示出来了,我可以看到我的模型,用我导入的相机,但我的相机没有看到场景,也没有像我的 3Dsm 放大和缩小中那样再现 x 旋转!如果我记录相机位置,它总是显示:0,0,0。更好的是,如果我记录 model.children[0] 位置,它对应于导入到 collada 中的透视相机,它总是显示 0,0,0

我做错了什么?

编辑 1:

我尝试使用从 collada 导入的相机设置我的相机矩阵:

camera.matrixNeedsUpdate = true;
model.children[0].matrixNeedsUpdate = true;
model.children[0].lookAt(model.position)

camera.matrix.elements = model.children[0].matrix.elements

但不幸的是没有结果..

最佳答案

我怀疑问题是您正在对“本地空间”中的位置执行 camera.lookAt()。

尝试这样做:

var vector = new THREE.Vector3();
vector.setFromMatrixPosition( object.matrixWorld );

camera.lookAt( vector );

关于javascript - Three.js,从Collada导入的Camera看不到物体场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24974509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com