Ios GLKMathProject给了我一些疏远的数字

Ios GLKMathProject给了我一些疏远的数字,ios,xcode,opengl-es,coordinates,glkit,Ios,Xcode,Opengl Es,Coordinates,Glkit,我不能得到屏幕坐标,当我使用下面的代码时,我只能得到大的数字,有人能告诉我为什么,x,y的位置是弧度,这是错误的吗 float aspect = fabsf(self.view.bounds.size.width / self.view.bounds.size.height); GLKMatrix4 projectionMatrix = GLKMatrix4MakePerspective(GLKMathDegreesToRadians(_overture),

我不能得到屏幕坐标,当我使用下面的代码时,我只能得到大的数字,有人能告诉我为什么,x,y的位置是弧度,这是错误的吗

float aspect = fabsf(self.view.bounds.size.width / self.view.bounds.size.height);
GLKMatrix4 projectionMatrix = GLKMatrix4MakePerspective(GLKMathDegreesToRadians(_overture),
                                                        aspect,
                                                        0.1f,
                                                        400.0f);
projectionMatrix = GLKMatrix4Rotate(projectionMatrix, ES_PI, 1.0f, 0.0f, 0.0f);


GLKMatrix4 modelViewMatrix = GLKMatrix4Identity;
modelViewMatrix = GLKMatrix4Scale(modelViewMatrix, 300.0, 300.0, 300.0);

modelViewMatrix = GLKMatrix4RotateX(modelViewMatrix, 0.296706);
modelViewMatrix = GLKMatrix4RotateY(modelViewMatrix, -0.858702);

_modelViewProjectionMatrix = GLKMatrix4Multiply(projectionMatrix, modelViewMatrix);

CGSize viewSize = self.view.bounds.size;
int viewPort[4];
viewPort[0] = 0;
viewPort[1] = 0;
viewPort[2] = (int)viewSize.width;
viewPort[3] = (int)viewSize.height;

pos.x = 0.296706; //radians
pos.y = -0.858702; //radians
GLKVector3 coor2 = GLKVector3Make(pos.x, pos.y, 0);

GLKVector3 windowVector = GLKMathProject(coor2, modelViewMatrix, projectionMatrix, viewPort);
投影矩阵 0.818481, 0.000000, 0.000000, 0.000000 0.000000, -1.091309, 0.000000, 0.000000 0.000000, 0.000000, 1.000500, 1.000000 0.000000,0.000000,-0.200050,0.000000

模型视图矩阵 196.026169, -66.397179, 217.175415, 0.000000 0.000000, 286.891449, 87.711510, 0.000000 -227.098526, -57.312504, 187.460770, 0.000000 0.000000,0.000000,0.000000,1.000000

_modelViewProjectionMatrix: 160.443787, 72.459831, 217.284042, 217.175415 0.000000, -313.087097, 87.755409, 87.711533 -185.875931, 62.545647, 187.554535, 187.460770 0.000000,0.000000,-0.200050,0.000000


看起来您的相机处于(0,0,0)位置,正在查看modelViewMatrix的m41、m42、m43以及对象的coor2.z=0。您的位置位于对象的中心。这可能是问题所在?

coord2应该在对象空间中。不在弧度中。记录投影矩阵和模型视图矩阵。@领导齐柏林飞艇谢谢你的时间,我添加了更多代码,结果得到了这个数字windowVector.x=-1725.853271,windowVector.y-9824.593750我想知道的是x,y弧度在窗口坐标中的位置。那么,为了计算窗口坐标,我如何知道x,y弧度在对象空间中的位置???我的对象是一个内部有360度图像的球体,谢谢…@lead_齐柏林飞艇我应该在GLKMathProject函数中使用modelViewMatrix的modelViewProjectionMatrix吗?我不这么认为,因为如果你看代码,我会旋转modelViewMatrix modelViewMatrix=GLKMatrix4RotateX(modelViewMatrix,0.296706);modelViewMatrix=GLKMatrix4RotateY(modelViewMatrix,-0.858702);您看到的modelViewMatrix在旋转之后,旋转只会更改y、x、z轴,而不会更改相机,这就是相机为0的原因。@user1241006您能用coor2=(10,10,10)试试吗?只是为了确保值不太高?谢谢,现在正在工作,问题是我没有使用精确的坐标,我尝试了coor2=(10,10,1),它工作得很好每次我旋转矩阵时,屏幕上的新坐标都是为点(10,10,1)计算的,我总是将z值保留在1中,工作得很好,谢谢你的帮助。。。