【发布时间】:2016-06-12 05:45:45
【问题描述】:
【问题讨论】:
标签: interface-builder scenekit
【问题讨论】:
标签: interface-builder scenekit
重新定位节点的pivot。例如,
truckNode.pivot = SCNMatrix4MakeTranslation(13.4, 12.9, 28.9)
您也可以更改枢轴的旋转,但您似乎只对上述示例所满足的平移方面感兴趣。
另一种选择是让您的节点成为一个空的“容器节点”的子节点。在容器中重新定位您的节点,然后在容器节点上执行所有后续平移和旋转。
使用 Interface Builder 的另一个选项。选择您的 dae 文件。编辑器窗口的底部左侧是一个方形按钮,左侧有一个条形图。单击它以打开场景图形。这将显示文件中节点的分层列表。在 Xcode 窗口右侧的实用程序面板中,选择“框”图标。您可以在那里以数字方式调整节点位置。您也可以直接在编辑器中拖动其轴。但这不会改变我认为你想做的支点。如上所述,您可能必须创建一个新节点来充当容器。这可以通过右键单击场景图中的节点以调出菜单来完成。在我看来,在代码中设置pivot 更容易。详情如下。
顺便说一句,您可以从此编辑器的场景图中获取 dae 场景中的节点名称。以下是在代码中访问 dae 节点的方法:
guard let theTruck = SCNScene(named: "myTruck") else {
print("Couldn't find molecule in dictionary (myTruck)")
return }
let truck = theTruck.rootNode.childNodeWithName("truckBase", recursively: true)!
truck.pivot = SCNMatrix4MakeTranslation(12.0, 0, 8.0)
在本例中:“myTruck”是不带 dae 后缀的 dae 文件的名称。 “truckBase”是 dae 文件中根节点的名称(如果需要,您可以在编辑器场景图中更改名称)。 “卡车”是您已为其分配文件根节点的新节点。像你一样操作它,而不是你的 dae 的根节点。 "theTruck" 是 dae SCNScene 的临时持有者,仅用于访问其中的节点。您可以以同样的方式访问您的 dae 中的任何其他节点,从而允许您在代码中操作它们。
【讨论】: