SceneKit - 1:1 使用什么 orthographicProjection 指向 SceneKit 位置比

SceneKit - What orthographicProjection to use for 1:1 points to SceneKit position ratio

必须使用什么 orthographicProjection 才能在 SceneKit 中制作具有 1:1 SceneKit 指向屏幕 points/pixels 比率的 2D 应用程序?

示例: 我想在屏幕上的 (200, 200) 位置放置一些东西,我想为它使用带有 (200, 200, 0) 的 SCNVector。为此我需要什么 orthographicProjection?

如果您想要一个场景单元 space 对应于屏幕上的一个点 space 的正交投影,您需要一个左裁剪平面为零且右裁剪平面为零的投影以点为单位的屏幕宽度是多少。 (与 top/bottom 和 near/far 一样,只要您将对象保持在您设置的 near/far 范围内即可。)

为此,最简单的方法可能是设置自己的投影矩阵,而不是计算出 orthographicScale 和相机位置对应于您需要的尺寸:

GLKMatrix4 mat = GLKMatrix4MakeOrtho(0, self.view.bounds.size.width,
                                     0, self.view.bounds.size.height,
                                     1, 100); // z range arbitrary
cameraNode.camera.projectionTransform = SCNMatrix4FromGLKMatrix4(mat);
// still need to position the camera for its direction & z range
cameraNode.position = SCNVector3Make(0, 0, 50);