创建平行于相机的垂直 SCNPlane
Create Vertical SCNPlane parallel to camera
我想在用户点击相机前面的屏幕时创建一个 SCNPlane,我可以创建平面但它不平行于相机
guard let sceneView = sender.view as? ARSCNView else {return}
guard let currentFrame = sceneView.session.currentFrame else {return}
let camera = currentFrame.camera
let transform = camera.transform
var translationMatrix = matrix_identity_float4x4
translationMatrix.columns.3.z = -0.1
var modifiedMatrix = simd_mul(transform, translationMatrix)
let plane = SCNNode(geometry: SCNPlane(width: 0.42, height: 0.63))
plane.geometry?.firstMaterial?.diffuse.contents = UIColor.yellow
plane.simdTransform = modifiedMatrix
self.sceneView.scene.rootNode.addChildNode(sphere)
如何使平面与相机平行?
感谢您的帮助
旋转你的飞机
guard let sceneView = sender.view as? ARSCNView else {return}
guard let currentFrame = sceneView.session.currentFrame else {return}
let camera = currentFrame.camera
let transform = SCNMatrix4(camera.transform)
let translationMatrix = SCNMatrix4Rotate(
SCNMatrix4MakeTranslation(0, 0, -0.1),
Float.pi / 2,
1, 0, 0)
let modifiedMatrix = SCNMatrix4Mult(transform, translationMatrix)
let plane = SCNNode(geometry: SCNPlane(width: 0.42, height: 0.63))
plane.geometry?.firstMaterial?.diffuse.contents = UIColor.yellow
plane.transform = modifiedMatrix
self.sceneView.scene.rootNode.addChildNode(plane)
旋转使用
node.eulerAngles.x = -.pi / 2
对我来说效果很好。起初我有一个平行于相机的平面节点,但现在它位于地面上。
我想在用户点击相机前面的屏幕时创建一个 SCNPlane,我可以创建平面但它不平行于相机
guard let sceneView = sender.view as? ARSCNView else {return}
guard let currentFrame = sceneView.session.currentFrame else {return}
let camera = currentFrame.camera
let transform = camera.transform
var translationMatrix = matrix_identity_float4x4
translationMatrix.columns.3.z = -0.1
var modifiedMatrix = simd_mul(transform, translationMatrix)
let plane = SCNNode(geometry: SCNPlane(width: 0.42, height: 0.63))
plane.geometry?.firstMaterial?.diffuse.contents = UIColor.yellow
plane.simdTransform = modifiedMatrix
self.sceneView.scene.rootNode.addChildNode(sphere)
如何使平面与相机平行? 感谢您的帮助
旋转你的飞机
guard let sceneView = sender.view as? ARSCNView else {return}
guard let currentFrame = sceneView.session.currentFrame else {return}
let camera = currentFrame.camera
let transform = SCNMatrix4(camera.transform)
let translationMatrix = SCNMatrix4Rotate(
SCNMatrix4MakeTranslation(0, 0, -0.1),
Float.pi / 2,
1, 0, 0)
let modifiedMatrix = SCNMatrix4Mult(transform, translationMatrix)
let plane = SCNNode(geometry: SCNPlane(width: 0.42, height: 0.63))
plane.geometry?.firstMaterial?.diffuse.contents = UIColor.yellow
plane.transform = modifiedMatrix
self.sceneView.scene.rootNode.addChildNode(plane)
旋转使用
node.eulerAngles.x = -.pi / 2
对我来说效果很好。起初我有一个平行于相机的平面节点,但现在它位于地面上。