ARKit – iOS 中的 SCNNode 旋转问题
ARKit – SCNNode rotation issue in iOS
我正在尝试通过观看 WWDC 2017 视频来创建演示应用程序。
let planeNode = SCNNode(geometry: imageplane)
sceneView.scene.rootNode.addChildNode(planeNode)
var translation=matrix_identity_float4x4
translation.columns.3.z = -0.1
planeNode.simdTransform = matrix_multiply(currentFrame.camera.transform,
translation)
以上代码工作正常,并正确显示平面。但是点击它会改变快照的旋转,尝试了不同的方法但没有任何效果。
任何帮助将不胜感激。
在采用相机平移之前更改 SCNNode
的旋转:
let planeNode = SCNNode (geometry: imageplane)
planeNode.eulerAngles.z = Float.pi / 2
var translation = planeNode.simdTransform
translation.columns.3.z = -0.1
planeNode.simdTransform = matrix_multiply(currentFrame.camera.transform,translation)
sceneView.scene.rootNode.addChildNode(planeNode)
我 运行 遇到了同样的问题,通过在将相机 t运行sformation 应用于节点之前旋转 t运行slation 矩阵解决了这个问题。
Obj-C 中的代码:
SCNNode *planeNode = [SCNNode nodeWithGeometry:imagePlane];
simd_float4x4 translation = planeNode.simdTransform;
translation.columns[3].z = -0.1;
translation = SCNMatrix4ToMat4(SCNMatrix4Rotate(SCNMatrix4FromMat4(translation), GLKMathDegreesToRadians(90), 0, 0, 1.0));
planeNode.simdTransform = matrix_multiply(currentFrame.camera.transform, translation);
[self.sceneView.scene.rootNode addChildNode:planeNode];
我正在尝试通过观看 WWDC 2017 视频来创建演示应用程序。
let planeNode = SCNNode(geometry: imageplane)
sceneView.scene.rootNode.addChildNode(planeNode)
var translation=matrix_identity_float4x4
translation.columns.3.z = -0.1
planeNode.simdTransform = matrix_multiply(currentFrame.camera.transform,
translation)
以上代码工作正常,并正确显示平面。但是点击它会改变快照的旋转,尝试了不同的方法但没有任何效果。
任何帮助将不胜感激。
在采用相机平移之前更改 SCNNode
的旋转:
let planeNode = SCNNode (geometry: imageplane)
planeNode.eulerAngles.z = Float.pi / 2
var translation = planeNode.simdTransform
translation.columns.3.z = -0.1
planeNode.simdTransform = matrix_multiply(currentFrame.camera.transform,translation)
sceneView.scene.rootNode.addChildNode(planeNode)
我 运行 遇到了同样的问题,通过在将相机 t运行sformation 应用于节点之前旋转 t运行slation 矩阵解决了这个问题。
Obj-C 中的代码:
SCNNode *planeNode = [SCNNode nodeWithGeometry:imagePlane];
simd_float4x4 translation = planeNode.simdTransform;
translation.columns[3].z = -0.1;
translation = SCNMatrix4ToMat4(SCNMatrix4Rotate(SCNMatrix4FromMat4(translation), GLKMathDegreesToRadians(90), 0, 0, 1.0));
planeNode.simdTransform = matrix_multiply(currentFrame.camera.transform, translation);
[self.sceneView.scene.rootNode addChildNode:planeNode];