internal static SCNVector3?UnprojectPointLocal(this ARSCNView self, CGPoint point, NMatrix4 planeTransform) { var result = self.Unproject(point, planeTransform); // Convert the result into the plane's local coordinate system. var pt = new SCNVector4(result.X, result.Y, result.Z, 1); var invertedPlane = planeTransform.ToSCNMatrix4(); invertedPlane.Invert(); var localResult = invertedPlane.Times(pt); return(localResult.Xyz); }