使用three.js我有以下内容。
给定正在查看的对象和摄像机位置,他们选择了如何计算最终摄像机位置以“最适合”屏幕上的对象?
如果在某些屏幕上按原样使用摄像机位置,则对象在我的视口边缘上流血,而其他对象看起来较小。我相信可以将物体安装到相机的视锥中,但找不到合适的东西。
我假设您正在使用透视相机。
您可以设置相机的位置和/或视野。
以下计算对于作为立方体的对象是准确的,因此请考虑对齐对象以面向相机的边界框。
如果摄像机居中并正视立方体,请定义
dist = distance from the camera to the _closest face_ of the cube
和
height = height of the cube.
如果您按照以下方式设置相机的视野
fov = 2 * Math.atan( height / ( 2 * dist ) ) * ( 180 / Math.PI ); // in degrees
那么立方体的高度将与可见高度匹配。
此时,您可以将相机倒退一点,或者稍微增加视野。
如果视场是固定的,则使用以上公式求解距离。
编辑:如果要使多维数据集width匹配可见 宽度 ,aspect则将其设置为画布的纵横比(画布宽度除以画布高度),然后像这样设置相机的视场
width
aspect
fov = 2 * Math.atan( ( width / aspect ) / ( 2 * dist ) ) * ( 180 / Math.PI ); // in degrees
three.js r.69