无法设置一个 SCNSphere 的初始半径
Unable to set initial radius of one SCNSphere
我可以在我的场景中添加 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)
}
我是不是遗漏了什么明显的东西?
您看到的问题只是 Scene Kit 试图变聪明。一切实际上都按预期工作。
为了能够渲染您的场景,Scene Kit 需要一个相机作为视角。如果您的场景包含相机,那么它会自动成为视点。但是,如果您的场景中没有相机,Scene Kit 必须创建自己的相机(或者无法一起渲染,这不太可取)。当 Scene Kit 创建自己的 "default" 视点时,它会尝试适应场景的内容,以便尽可能地填充视图(略微简化)。
这可能是一个不错的小便利,但在您的情况下,这意味着当您将球体变大时,Scene Kit 会调整其视角,以便球体仍然覆盖整个视图。如果场景中只有一个球体,这意味着您看不到球体半径的任何差异,因为它始终会覆盖整个视图。
如果您将自己的相机添加到场景中并根据自己的喜好进行配置,您将能够在更改球体半径时看到差异。
我可以在我的场景中添加 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)
}
我是不是遗漏了什么明显的东西?
您看到的问题只是 Scene Kit 试图变聪明。一切实际上都按预期工作。
为了能够渲染您的场景,Scene Kit 需要一个相机作为视角。如果您的场景包含相机,那么它会自动成为视点。但是,如果您的场景中没有相机,Scene Kit 必须创建自己的相机(或者无法一起渲染,这不太可取)。当 Scene Kit 创建自己的 "default" 视点时,它会尝试适应场景的内容,以便尽可能地填充视图(略微简化)。
这可能是一个不错的小便利,但在您的情况下,这意味着当您将球体变大时,Scene Kit 会调整其视角,以便球体仍然覆盖整个视图。如果场景中只有一个球体,这意味着您看不到球体半径的任何差异,因为它始终会覆盖整个视图。
如果您将自己的相机添加到场景中并根据自己的喜好进行配置,您将能够在更改球体半径时看到差异。