www.jpct.net
jPCT-AE - a 3d engine for Android => Support => Topic started by: cefengxu on November 03, 2015, 01:26:48 pm
-
hi master:
for the issue " the model rendered by JPCT always lied on the mark and can not be rotate basic the matrix output from ARToolkit "
actually, the matrix output from the ARToolkit::ARNativeActivity.getTransformationMatrix() is correctly and the result of matrix be such like this:
0.9592849 0.042872142 -0.27916315 0.0
0.161977 -0.8932123 0.41944835 0.0
-0.23136866 -0.44758964 -0.86379063 0.0
-58.357327 38.013783 381.9324 1.0
<< Orange Color : the rotation info[/size] [/size]Green Color: the translation info>>
so i think i just set the translation and rotation for the model and the result should be right. and then i set up to jpct-matrix and set into the model like this:
Matrix dump = new Matrix();
dump.setDump(ARNativeActivity.getTransformationM());
dump.transformToGL();
a.clearTranslation();
a.translate(dump.getTranslation()); // the translation could be sure that it's right because the model can translate through the mark on the screen
a.clearRotation();
a.setRotationMatrix(dump); // and then the model lied on the mark
dump.rotateX/Y/Z((float)Math.PI/2); i try to use matrix rotation to rotate the model before process a.setRotationMatrix(dump) , but no work , the model some time will missing
so , i think i can not handle it now , i have spend server day to deal with this issue but no work.
-
the code was shown below :
Matrix dump = new Matrix();
dump.setDump(ARNativeActivity.getTransformationM());
dump.transformToGL();
md2model.clearTranslation();
md2model.translate(dump.getTranslation()); // the translation could be sure that it's right because the model can translate through the mark on the screen
md2model.clearRotation();
md2model.setRotationMatrix(dump); // and then the model lied on the mark
-
Looks fine to me...except that you set the translational part again in the rotation matrix.
That's actually not how it's supposed to be. The transformation matrix has be split into a translation and a pure rotation i.e. basically a 3x3 matrix with 0,0,0,1 as forth row and column.
And then do something like
md2model.rotateX(...);
after all that. As long as your rotation pivot isn't way off, it should work.
-
at the end , i have to change the rotation of the model in blender firstly, and then the rendering result is correct......
Thanks
-
hi master:
for the issue " the model rendered by JPCT always lied on the mark and can not be rotate basic the matrix output from ARToolkit "
actually, the matrix output from the ARToolkit::ARNativeActivity.getTransformationMatrix() is correctly and the result of matrix be such like this:
0.9592849 0.042872142 -0.27916315 0.0
0.161977 -0.8932123 0.41944835 0.0
-0.23136866 -0.44758964 -0.86379063 0.0
-58.357327 38.013783 381.9324 1.0
<< Orange Color : the rotation info[/size] [/size]Green Color: the translation info>>
so i think i just set the translation and rotation for the model and the result should be right. and then i set up to jpct-matrix and set into the model like this:
Matrix dump = new Matrix();
dump.setDump(ARNativeActivity.getTransformationM());
dump.transformToGL();
a.clearTranslation();
a.translate(dump.getTranslation()); // the translation could be sure that it's right because the model can translate through the mark on the screen
a.clearRotation();
a.setRotationMatrix(dump); // and then the model lied on the mark
dump.rotateX/Y/Z((float)Math.PI/2); i try to use matrix rotation to rotate the model before process a.setRotationMatrix(dump) , but no work , the model some time will missing
so , i think i can not handle it now , i have spend server day to deal with this issue but no work.