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

但是,当我尝试仅添加一个球体时,无论我指定什么半径,该球体的默认半径均为1.0。

这是我仅用于添加一个球体的代码。我只是将此代码放在for循环中以添加二十个球体-效果很好。

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

我是否缺少明显的东西?

最佳答案

您看到的问题仅仅是SceneKit试图变得聪明。一切实际上都按预期进行。

为了能够渲染您的场景,Scene Kit需使用摄影机作为视点。如果您的场景中包含摄像机,则会自动成为视角。但是,如果您的场景中没有相机,SceneKit则必须创建自己的相机(或者无法全部渲染在一起,这会不太可取)。当SceneÂKit创建自己的``默认''视点时,它会尝试适应场景的内容,以使其尽可能地填充视图(略微简化)。

这可能会带来一点便利,但是在您的情况下,这意味着当您扩大球体时,SceneKit会调整其视点,以使球体仍然覆盖整个视图。如果场景中只有一个球体,则意味着您看不到球体半径的任何差异,因为它将始终覆盖整个视图。

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

关于ios - 无法设置一个SCNSphere的初始半径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31546858/

10-12 22:01