我想在three.js中获得相机渲染量的控制点
可以使用带有属性pointMap的camera example中的相机助手来访问它
console.log(cameraOrthoHelper.pointMap);
返回:
c, cf1, cf2, cf3,cf4, cn1, cn2, cn3, cn4, f1, f2, f3, f4, n1, n2, n3, n4, p, t, u1, u2, u3
我感兴趣的是n1 ... n4和f1 ... f4(橙色立方体)
但价值似乎是错误的。 我需要做些什么来利用现实世界坐标中的值?
答案 0 :(得分:2)
使用相机的属性设置这些点。
new THREE.OrthographicCamera( left, right, top, bottom, near, far );
所以,如果你想改变“橙色盒子”,你应该改变相机,你的助手也会改变......
您可以获取相机辅助矩阵并将其应用于您感兴趣的顶点。 如果你想要橙色框,这意味着你需要四个近点和四个点:
近点:
cameraHelper.pointMap[n1][0]
cameraHelper.pointMap[n2][0]
cameraHelper.pointMap[n3][0]
cameraHelper.pointMap[n4][0]
远点:
cameraHelper.pointMap[f1][0]
cameraHelper.pointMap[f2][0]
cameraHelper.pointMap[f3][0]
cameraHelper.pointMap[f4][0]
将相机辅助矩阵应用于点,并将它们放在世界空间中。在你这样做之前你还要更新正交相机的worldMatrix,看来cameraHelper矩阵依赖于它:
camera.updateMatrixWorld();
point.applyMatrix4( cameraHelper.matrix );
检查 a fiddle here ,证明上述代码有效。