如何缩放和定位附加了 SCNSkinner 的 SCNNode?
How to scale and position a SCNNode that has a SCNSkinner attached?
我正在使用 SceneKit 加载一个 very simple .dae
file,其中包含一个带有三个关联骨骼的大圆柱体。我想缩小圆柱体并将其放置在地面上。这是代码
public class MyNode: SCNNode {
public convenience init() {
self.init()
let scene = SCNScene(named: "test.dae")
let cylinder = (scene?.rootNode.childNode(withName: "Cylinder", recursively: true))!
let scale: Float = 0.1
cylinder.scale = SCNVector3Make(scale, scale, scale)
cylinder.position = SCNVector3(0, scale, 0)
self.addChildNode(cylinder)
}
}
这行不通;当我看到它时,圆柱体仍然很大。我能让代码工作的唯一方法是删除关联的 SCNSKinner
.
cylinder.skinner = nil
为什么会发生这种情况,我如何正确缩放和定位模型、骨骼和所有部分?
当几何体被蒙皮时,它是由它的骨架驱动的。这意味着不再使用蒙皮节点的变换,重要的是骨骼的变换。
对于此文件,Armature
是骨架的根目录。如果你 translate/scale 这个节点而不是 Cylinder
你会得到你想要的。
我正在使用 SceneKit 加载一个 very simple .dae
file,其中包含一个带有三个关联骨骼的大圆柱体。我想缩小圆柱体并将其放置在地面上。这是代码
public class MyNode: SCNNode {
public convenience init() {
self.init()
let scene = SCNScene(named: "test.dae")
let cylinder = (scene?.rootNode.childNode(withName: "Cylinder", recursively: true))!
let scale: Float = 0.1
cylinder.scale = SCNVector3Make(scale, scale, scale)
cylinder.position = SCNVector3(0, scale, 0)
self.addChildNode(cylinder)
}
}
这行不通;当我看到它时,圆柱体仍然很大。我能让代码工作的唯一方法是删除关联的 SCNSKinner
.
cylinder.skinner = nil
为什么会发生这种情况,我如何正确缩放和定位模型、骨骼和所有部分?
当几何体被蒙皮时,它是由它的骨架驱动的。这意味着不再使用蒙皮节点的变换,重要的是骨骼的变换。
对于此文件,Armature
是骨架的根目录。如果你 translate/scale 这个节点而不是 Cylinder
你会得到你想要的。