无法设置一个SCNSphere的初始半径

时间:2015-07-21 18:26:17

标签: ios swift scenekit

我可以在场景中添加20个半径为0.5的小球体。

但是,当我尝试仅添加一个球体时,无论我指定的是什么半径,球体都会以默认半径1.0显示。

以下是我用来添加一个球体的代码。我只是将这个代码放在for循环中以添加20个球体 - 这样可以正常工作。

func drawSpheres() {
    var x:Float = 0.0
    var radius:CGFloat = 0.5
    let sphereGeometry = SCNSphere(radius: radius)
    let sphereNode = SCNNode(geometry: sphereGeometry)
    sphereNode.position = SCNVector3(x: x, y: 0.0, z: 0.0)
    self.rootNode.addChildNode(sphereNode)
}

我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:2)

你看到的问题只是Scene Kit试图变得聪明。一切都在按预期工作。

为了能够渲染场景,Scene Kit需要一个摄像头作为视点。如果您的场景包含相机,则会自动成为视角。但是如果你的场景中没有摄像头,Scene Kit必须自己创建(或者不能全部渲染,这是不太可取的)。当Scene Kit创建自己的“默认”视点时,它会尝试适应场景的内容,以便尽可能地填充视图(略微简化)。

这可能是一个不错的小便利,但在你的情况下,这意味着当你使球体变大时,Scene Kit会调整其视角,以便球体仍然覆盖整个视图。如果场景中只有一个球体,这意味着您无法看到球体半径的任何差异,因为它将始终覆盖整个视图。

如果您将自己的相机添加到场景中并根据自己的喜好进行配置,则可以在更改球体半径时看到差异。