Ios SceneKit-1:1点与SceneKit位置的比例使用什么正交投影

Ios SceneKit-1:1点与SceneKit位置的比例使用什么正交投影,ios,objective-c,xcode,3d,scenekit,Ios,Objective C,Xcode,3d,Scenekit,要在SceneKit中以1:1的SceneKit点与屏幕点/像素比率制作2D应用程序,必须使用什么正交投影 例如: 我想在屏幕上定位(200200)的位置,并使用一个带(200200,0)的SConvector。我需要什么正交投影呢?如果您想要一个正交投影,其中一个场景空间单位对应于屏幕空间的一个点,那么您需要一个投影,其中左剪裁平面为零,右剪裁平面位于屏幕的任何宽度(以点为单位)。(顶部/底部也是如此,只要将对象保持在设置的近/远范围内,近/远就无关紧要。) 为此,可能最容易设置自己的投影矩阵

要在SceneKit中以1:1的SceneKit点与屏幕点/像素比率制作2D应用程序,必须使用什么正交投影

例如:
我想在屏幕上定位(200200)的位置,并使用一个带(200200,0)的SConvector。我需要什么正交投影呢?

如果您想要一个正交投影,其中一个场景空间单位对应于屏幕空间的一个点,那么您需要一个投影,其中左剪裁平面为零,右剪裁平面位于屏幕的任何宽度(以点为单位)。(顶部/底部也是如此,只要将对象保持在设置的近/远范围内,近/远就无关紧要。)

为此,可能最容易设置自己的投影矩阵,而不是计算出与所需尺寸相对应的正交比例和相机位置:

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); 

这很好,谢谢你!同时,我发现可以使用屏幕高度/2.0作为正交比例。我想知道如果您将正交投影标志设置为true,SceneKit是否能够进行某些优化。这就是为什么我一直在努力。您认为什么会带来更好的性能?属性组合
正交投影
+
正交比例
可能只是基于摄影机方向和视口设置投影矩阵的快捷方式,因此应该没有性能差异。好的,很酷,我只是对SceneKit还没有足够的了解,谢谢!你从哪里知道的?仅从文档中?@Max还需要了解平行光的
正交比例
,因此了解您如何学会使用它将非常有用。很遗憾,scenekit上的文档很少。@rickster您好,视口和正交比例之间的关系是什么?我搞不懂,您好,视口和正交比例之间的关系是什么?我对此感到困惑