我试图将一个物体(实际上是Maya的一个立方体)旋转90度单向旋转,然后再次点击它旋转-90度。
轻敲时的旋转正在工作,但枢轴似乎位于原点(0,0,0),因此它始终围绕原点旋转。
我希望能够操纵锚点,但将几何体保持在同一个位置。
理想情况下,如果可能,锚点将移动到对象的左后角?
这是我到目前为止所尝试的:
使用:result.node.pivot = SCNMatrix4MakeTranslation(-30.0, 0.0,
-20)
但似乎只是将枢轴点和几何体移动到一起。
从Maya再次带入我的几何体中 正确的地方,但Xcode似乎将所有枢轴重置为原点。
使一个空节点将枢轴移动到所需位置(粗略地)并将我的对象放在空节点中并且不起作用。
任何帮助都会很棒!提前谢谢你:)
以下是旋转对象的代码:
var objectHit = false
var firstTimePressed : Bool = false
var hitTestOptions = [SCNHitTestOption: Any]()
hitTestOptions[SCNHitTestOption.boundingBoxOnly] = true
let results: [SCNHitTestResult] = sceneView.hitTest(latestTouchLocation, options: hitTestOptions)
// The user has touched the virtual object
for result in results {
let object = VirtualObject.isNodePartOfVirtualObject(result.node)
if object != nil {
objectHit = true
}
if object?.childNode(withName: "door", recursively: true) == result.node{
if(firstTimePressed == false){
print("object should open")
result.node.pivot = SCNMatrix4MakeTranslation(-30, 0, -20)
result.node.runAction(SCNAction.rotateBy(x: 0, y: -1.5708, z: 0, duration: 1))
firstTimePressed = true
}
else{
print("object should close")
result.node.pivot = SCNMatrix4MakeTranslation(-30, 0, -20)
result.node.runAction(SCNAction.rotateBy(x: 0, y: 1.5708, z: 0, duration: 1))
firstTimePressed = false
}
}
}