ios - 如何缩放和定位附加了 SCNSkinner 的 SCNNode?
问题描述
使用 SceneKit,我正在加载一个非常简单的文件,该.dae
文件由一个带有三个相关骨骼的大圆柱体组成。我想缩小圆柱体并将其放置在地面上。这是代码
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
是骨架的根。如果你翻译/缩放这个节点而不是Cylinder
你会得到你想要的。
推荐阅读
- mysql - 更新或创建条件数据作为输入
- excel-formula - 用于提取字符串末尾带有多个右括号的文本的 Excel 公式
- powershell - 使用 Powershell 创建应用服务或插槽
- java - backStack 中的片段
- amazon-web-services - Postfix 发送短信 - Debian
- javascript - 如何将 .then() 函数的响应放入 module.exports 中?
- r - 如何在ggplot中指示y轴不是从0开始?
- ios - 动态表视图单元格和 IBOutlets - 以编程方式从 Stepper Inside Cell 保存数据
- sql - 如何将具有相同 ID 的行合并到一个列表中
- xcuitest - XCUITest - 单击主屏幕上的元素