gpt4 book ai didi

javascript - 使用轨迹球控件手动设置相机位置和 fov (THREEJS)

转载 作者:行者123 更新时间:2023-11-30 15:19:45 27 4
gpt4 key购买 nike

我在 THREE.JS 中手动设置了我的透视相机positionfov。它的行为符合预期。但是,当我稍后尝试通过 TrackBall Controlsscene 交互时,它只显示黑屏,没有错误。

JS Fiddle

相关代码:

var bbox = new THREE.Box3().setFromObject(scene);
var center = bbox.getCenter();
var size = bbox.getSize();

// update some controls properties
controls.target.set(center.x, center.y, center.z);

// position the camera on the y axis
camera.position.set(center.x, center.y - size.y, center.z);

// fit FOV
var dist = size.y / 2;
var fov = 2 * Math.atan( size.z / ( 2 * dist ) ) * ( 180 / Math.PI );

camera.fov = fov;

camera.updateProjectionMatrix();

为了能够与场景正确交互,我缺少了哪一步

谢谢

==== 编辑

基于已接受答案的工作 fiddle :Fiddle

最佳答案

我认为当相机“向上”位置平行于相机位置和目标定义的矢量时,无法正确投影案例。相机向上位置应指定如何在垂直于从相机位置到目标的矢量的平面中定向 View ,但如果 camera.up 沿该平面的分量为零,则它无法工作。在您的代码中:

  • 相机的“向上”位置是默认的 (0,1,0)
  • 从相机位置到相机目标的向量是(0,size.y,0)

最简单的修复可能是指定一个不同的相机“向上”,即

camera.up = new THREE.Vector3(0,0,1.);

或任何其他不平行于 y 方向的矢量。

关于javascript - 使用轨迹球控件手动设置相机位置和 fov (THREEJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43909459/

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