更新摄像头辅助投影矩阵(3.JS)



我是通过将其设置为使用其MatrixWorld属性的两个导出的假人在两个导出的假人之间切换相机。

camera_foreground.matrixWorld = (dummy_shot1.matrixWorld);
camera_foreground.updateProjectionMatrix();

这效果很好,但是我创建的cameral_helper并未继承矩阵更改。

它不允许我在助手本身上运行updateProctiveMottionMatrix()。我已经尝试将助手育儿到原始相机。我还尝试将助手设置为同一dummy_shot1.matrixworld。什么是让助手与它为/来自?

创建的相机一起更新的最佳方法

您可以使用THREE.CameraHelper.update()更新相机辅助器的frustum。

给定两个摄像机:camera1camera2,您可以将CameraHelper转换从camera1切换到camera2

cameraHelper.camera = camera2;
cameraHelper.matrix = camera2.matrixWorld;
cameraHelper.update();

注意

另一种对您来说似乎更方便的解决方案是为每个相机创建一个THREE.CameraHelper,然后用以下方式切换当前显示的助手:

camera1.helper.visible = false;
camera2.helper.visible = true;

此外,THREE.Layers也可用于控制当前显示的助手。

3DSMAX摄像机/相机动画不受3DSMAX Collada Exporter的支持。为了解决这个问题,我正在出口傻瓜(从最大到三j),这些假人曾被送往所说的相机。我担心假人没有动画就会通过(因为父母(3DSMAX摄像机)被忽略了)。

假人经过了很好的效果(我想),因为相机位置/旋转将矩阵复制到三分。试图让助手做同样的事情时出现了问题(在通过调试摄像机查看场景时很明显)。

似乎三个中的camera_helper对象与这些特定假人的矩阵播放不好(可能是因为在3DSMAX中,它们是从父母身上吸入的)。奇怪的是,摄像机(如上所述)正常工作。

为了解决问题,我使用了一个很棒的maxScript(http://www.breidt.net/scripts/mb_collapse.mcr)来复制/烘烤/烘烤所有父键帧从3DSMAX摄像机(不再是继承))。然后将Collada友好的假人出口到三分。

感谢Neeh的帮助和问题。它正在重建一个测试场景以上传,我注意到新的假人(未育儿为相机)与助手的效果很好。