我正在编写一个Three.js应用程序,该应用程序将使用多个摄像机以不同角度显示场景中的对象,以不同的角度同时显示其场景视图。我需要以事先未知的任意比例读取具有(X,Y,Z)坐标的对象,并且需要将我的一台相机沿Z方向直接放在该对象的中心上方向下放置,以使整个对象显示在视图窗格中。 (由于用户可以从对象的初始坐标拖动对象,因此我想保留额外的空间。)我希望画布完全显示相机看到的内容,而不是更多,并且此FoV可能不包括(0,0,0)
我无法获得代码,我认为应该将相机定位在向下看它的对象上方,以达到我期望的方式工作。在下面的简化演示代码中,如果将centerPosition
设置为(0,0,0),则会得到预期的行为。如果将其设置为其他内容,则希望看到相同的东西(因为相机相对于对象的位置应相同),但我没有看到。 (OrthographicCamera和PerspectiveCamera都无法达到我的期望。)
已编辑:现在,我有一个较短的代码示例可以实际工作。我还确定我的问题与我对TrackballControls的使用有关:如果我使用PerspectiveCamera而不是OrthographicCamera,并且不不使用TrackballControls,我将获得预期的行为。
是否可以使用控件并仍然获得我期望的初始位置?
交互式示例(向下滚动至“兴趣代码”,然后尝试在指示的地方更改相机或控件): https://jsfiddle.net/JBLillian/3xnfoqc6/4/