有人知道如何在SceneKit接口生成器中更改节点的起源吗?原点是不正确的,但是移动它只是移动模型,我想移动原点,所以它位于对象的中间:-/
也许我需要用不同的产地再出口我的型号?

发布于 2016-06-10 23:10:09
重新定位节点的pivot。例如,
truckNode.pivot = SCNMatrix4MakeTranslation(13.4, 12.9, 28.9)你也可以改变枢轴的旋转,但看起来你只对上述例子所满足的平移方面感兴趣。
另一个选项是使您的节点成为否则为空的“容器节点”的子节点。在容器中重新定位节点,然后在容器节点上执行所有后续的转换和旋转。
另一个使用接口生成器的选项。选择你的dae文件。在编辑器窗口的底部,左边是一个方形按钮,左边是一个条形按钮。点击它打开场景图。这将显示文件中节点的分层列表。在Xcode窗口右侧的实用程序面板中,选择"box“图标。您可以通过数字调整节点的位置。您还可以在编辑器中直接拖动它的轴。但这不会改变枢轴,我认为这是你想要做的。您可能需要创建一个新的节点来充当上面提到的容器。这可以通过右键单击场景图中的节点来弹出菜单来实现。在我看来,在代码中设置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中的任何其他节点,允许您在代码中操作它们。
https://stackoverflow.com/questions/37757438
复制相似问题