ios - How to move/drag an 3D AR Object to Scene View? -
i'm have problem move/drag ar object in scene view.
// object needs move around
@property (nonatomic, strong) scnnode *movedobject; // method move object around scene view
-(void)handlemoveobjectfrom:(uipangesturerecognizer *)recognizer { if (recognizer.state == uigesturerecognizerstatebegan) { nslog(@"pan state began"); cgpoint tappoint = [recognizer locationinview:self.sceneview]; nsarray <scnhittestresult *> *result = [self.sceneview hittest:tappoint options:nil]; if ([result count] == 0) { return; } scnhittestresult *hitresult = [result firstobject]; self.movedobject = [hitresult.node parentnode]; } if (recognizer.state == uigesturerecognizerstatechanged) { nslog(@"pan state changed"); if (self.movedobject) { cgpoint tappoint = [recognizer locationinview:self.sceneview]; nsarray <arhittestresult *> *hitresults = [self.sceneview hittest:tappoint types:arhittestresulttypefeaturepoint]; arhittestresult *result = [hitresults lastobject]; //attempt 1 scnvector3 vector = scnvector3make(result.worldtransform.columns[3].x, result.worldtransform.columns[3].y, result.worldtransform.columns[3].z ); self.movedobject.position = vector; //attempt 2 simd_float4x4 cameratransform = self.sceneview.session.currentframe.camera.transform; simd_float3 cameraworldposition = simd_make_float3(cameratransform.columns[3]); nslog(@"vector: %f, %f, %f", cameraworldposition.x, cameraworldposition.y, cameraworldposition.z); [self.movedobject setsimdposition:cameraworldposition]; //attempt3 scnmatrix4 matrix = scnmatrix4frommat4(result.worldtransform); scnvector3 vector = scnvector3make(matrix.m41, matrix.m42, matrix.m43); nslog(@"vector: %f, %f, %f", vector.x, vector.y, vector.z); self.movedobject.position = vector; nslog(@"moving object position"); } } if (recognizer.state == uigesturerecognizerstateended) { nslog(@"done moving object"); self.movedobject = nil; } } any highly appreciated.
thanks.
Comments
Post a Comment