Ios 无法设置一个SCN的初始半径

Ios 无法设置一个SCN的初始半径,ios,swift,scenekit,Ios,Swift,Scenekit,我可以在我的场景中添加二十个半径为0.5的小球 但是,当我尝试只添加一个球体时,无论指定什么半径,球体都会以默认半径1.0显示 下面是我用来添加一个球体的代码。我只是把这段代码放在一个for循环中,添加二十个球体——效果很好 func drawSpheres() { var x:Float = 0.0 var radius:CGFloat = 0.5 let sphereGeometry = SCNSphere(radius: radius) let sphere

我可以在我的场景中添加二十个半径为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)
}

我错过了什么明显的东西吗

你所看到的问题只是想变得聪明而已。一切都按预期进行

为了能够渲染场景,场景工具包需要一个摄影机作为视点。如果场景包含摄影机,则该摄影机将自动成为视点。但如果场景中没有摄影机,则场景工具包必须创建自己的摄影机(或者无法一起渲染,这就不太可取)。当场景工具包创建自己的“默认”视点时,它会尝试适应场景的内容,以便尽可能地填充视图(稍微简化)

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


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

您是打印单个球体的半径还是看起来太大?我正在打印半径,输出的半径与我指定的相同,例如0.1。但是,不管指定的值是多少,球体都会占据整个模拟器屏幕。非常感谢@DavidRönnqvist!