🎉
ARKit
NG
!!
///
///
/// - Parameter screenPosition: CGPoint
/// - Returns: SCNVector3
func realWorldVector(screenPosition: CGPoint) -> SCNVector3? {
let results = self.hitTest(screenPosition, types: [.existingPlane])
//
guard let result = results.first else {
return nil
}
// SCNVector3
return SCNVector3.positionFromTransform(result.worldTransform)
}
ARKit
• AR 

3D → ARSCNView (AR + SceneKit)

2D → ARSKView (AR + SpriteKit)
• https://github.com/levantAJ/Measure




// Node
let constraint = SCNLookAtConstraint(target: SCNNode)
constraint.isGimbalLockEnabled = true
textNode.constraints = [constraint]
☺
LIFULL HOME‘S App Night #AR 最速対応をした間取り計測の秘話
LIFULL HOME‘S App Night #AR 最速対応をした間取り計測の秘話

LIFULL HOME‘S App Night #AR 最速対応をした間取り計測の秘話

  • 2.
  • 3.
  • 7.
  • 8.
    /// /// /// - ParameterscreenPosition: CGPoint /// - Returns: SCNVector3 func realWorldVector(screenPosition: CGPoint) -> SCNVector3? { let results = self.hitTest(screenPosition, types: [.existingPlane]) // guard let result = results.first else { return nil } // SCNVector3 return SCNVector3.positionFromTransform(result.worldTransform) }
  • 9.
    ARKit • AR 
 3D→ ARSCNView (AR + SceneKit)
 2D → ARSKView (AR + SpriteKit)
  • 11.
  • 13.
  • 14.
  • 17.
    // Node let constraint= SCNLookAtConstraint(target: SCNNode) constraint.isGimbalLockEnabled = true textNode.constraints = [constraint] ☺