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

Popular posts from this blog

python - Operations inside variables -

Generic Map Parameter java -

arrays - What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? -