【发布时间】:2021-04-06 17:29:22
【问题描述】:
我正在尝试了解如何将相机与usesOrthographicProjection = true 一起使用。我需要进行设置,这样当我们第一次看到场景时,对象应该是完整可见的。
我使用了Xcode的SceneKit模板,稍微调整了一下相机(所有代码都在viewDidLoad)。使用默认值
相机(透视投影),它看起来像这样:
cameraNode.position = SCNVector3(x: 0, y: 0, z: ship.boundingBox.max.z + 20)
接下来,我尝试设置正射投影,现在看起来是这样的:
cameraNode.camera?.usesOrthographicProjection = true
cameraNode.position = SCNVector3(x: 0, y: 0, z: ship.boundingBox.max.z + 20)
无论我如何尝试更改相机位置,它看起来仍然与上图相同。我试过使用GLKMatrix4MakeOrtho 无济于事。没有任何效果。我应该怎么做才能改变第一视图印象?
cameraNode.camera?.usesOrthographicProjection = true
// let width = Float(UIScreen.main.bounds.size.width)
// let width: Float = 9
// let glMat = GLKMatrix4MakeOrtho(-width/2,
// width/2,
// -width/2,
// width/2,
// 1,
// 1000)
// let glMat = GLKMatrix4MakeOrtho(ship.boundingBox.min.x,
// ship.boundingBox.max.x,
// ship.boundingBox.min.y,
// ship.boundingBox.max.y,
// ship.boundingBox.min.z,
// ship.boundingBox.max.z)
// cameraNode.camera?.projectionTransform = SCNMatrix4FromGLKMatrix4(glMat)
cameraNode.position = SCNVector3(x: 0,
y: 0,
z: ship.boundingBox.max.z + 20)
【问题讨论】:
-
你试过
orthographicScale吗?在这里阅读 - developer.apple.com/documentation/scenekit/scncamera/… -
@BlindNinja 谢谢,似乎设置
orthographicScale有效。但是我不知道它是如何工作的,因为文档不详细。我会努力争取更多结果。 -
我不是 100% 确定,但它就像焦距一样工作。你只是设置它的位置,但它应该覆盖多少区域,这是未知的。您会看到相同尺寸和位置的广角镜头与普通镜头的投影不同。
-
好的,因为
orthographicScale有效,我仍然无法完全控制相机位置。就像,我想将相机位置设置在上方和右侧稍高的位置(第一视角对角线),这与我预期的不一样。仍然需要帮助。
标签: swift camera scenekit glkit orthographic