2015-04-05 51 views

回答

5

如果您想要一個正投影投影,其中場景空間的單位與屏幕空間點相對應,則需要一個投影,其中左剪裁平面位於零,右剪裁平面位於屏幕寬度的任意點。 (同上/下,近/遠無關緊要,只要你將物體保持在你設置的近/遠範圍內即可。)

爲此,建立自己的投影矩陣可能是最簡單的,而不是制定什麼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); 
+0

這很好,謝謝!在此期間我發現可以使用screen/2.0的高度作爲orthographicScale。我想知道如果您將orthographicProjection標誌設置爲true,SceneKit是否能夠做某些優化。這就是爲什麼我一直在努力。你認爲什麼會導致更好的表現? – Max 2015-04-06 22:46:46

+0

'orthographicProjection' +'orthographicScale'屬性組合可能只是基於攝像機方向和視口設置投影矩陣的快捷方式,所以應該沒有性能差異。 – rickster 2015-04-06 22:55:24

+0

好吧,很酷,我只是沒有足夠的洞察到SceneKit,謝謝!你從哪裏瞭解到的?只是從文檔? – Max 2015-04-06 23:02:50