Mor*_*lde 5 ios scenekit swift
我已将项目上传到GitHub,以便轻松复制问题.
我有一个测试场景,我想在这里定位一个对象(SCNBox
在这种情况下是一个)和屏幕一样宽.这是整个代码.
let scene = SCNScene()
let rootNode = scene.rootNode
// Box
let boxGeometry = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0)
let boxMaterial = SCNMaterial()
boxMaterial.diffuse.contents = UIColor.redColor()
boxGeometry.firstMaterial = boxMaterial
let boxNode = SCNNode(geometry: boxGeometry)
boxNode.position = SCNVector3(
x: 0,
y: 0,
z: -1)
rootNode.addChildNode(boxNode)
// Camera
let camera = SCNCamera()
camera.zNear = 0
let cameraNode = SCNNode()
cameraNode.position = SCNVector3(
x: 0,
y: 0,
z: 0)
cameraNode.camera = camera
rootNode.addChildNode(cameraNode)
Run Code Online (Sandbox Code Playgroud)
但这并不能产生我所期望的 - 100%宽度覆盖率.如下面的屏幕截图所示,两侧总共有大约2.5%的空白区域.为什么?如何调整相机/盒以实现屏幕宽度的完全覆盖?
这里是您的代码所做的快速直观表示(从顶部查看):
1)在(0,0,0)创建一个2x2x2立方体
2)将立方体移动到(0,0,-1)
3)在(0,0,0)添加相机
如您所见,相机与立方体相交.这是一种不可预测的行为,它可以交叉,在Z上战斗,或者只是向内看.
在您的问题中,您使用了1x1x1盒子.这是它的样子:
如您所见,该框应填充视图.但那是因为我使用的是标准相机(36毫米,或大约50°xfov).通过移动你的场景,我意识到你有一个非常大的FOV,这意味着你的场景看起来像这样:
或者,如果我们放大:
开始了!那么我们如何解决这个问题呢?通过增加FOV.在我们的例子中,角度是90.但你可以用简单的三角法再次找到它.
现在盒子完全填满了视口!
归档时间: |
|
查看次数: |
876 次 |
最近记录: |