検索

ホームページ  >  に質問  >  本文

ios - opengl根据点坐标构图后,不在屏幕可视范围内怎么解决

在ios端利用opengl建模,成功展示了一个3d模型,update内容如下

 CGSize size = self.view.bounds.size;
float aspect = fabs(size.width / size.height);
GLKMatrix4 projectionMatrix = GLKMatrix4MakePerspective(GLKMathDegreesToRadians(bigSize), aspect, 1.0f, 10.0f);//GLKMathDegreesToRadians值越大,模型越小(0-180)
self.effect.transform.projectionMatrix = projectionMatrix;
GLKMatrix4 modelViewMatrix = GLKMatrix4Translate(GLKMatrix4Identity, 0.0f, 0.0f, 0.0f);
modelViewMatrix = GLKMatrix4Translate(modelViewMatrix, 0.0f, 0.0f, -2.0f); //平移
modelViewMatrix = GLKMatrix4Rotate(modelViewMatrix, _rotation, 0.1f, xxx, 1.0f);   //旋转

    GLKMatrix4 modelViewProjectionMatrix = GLKMatrix4Multiply(projectionMatrix, modelViewMatrix);
    GLint mat = glGetUniformLocation(0.0f, "modelViewProjectionMatrix");
    glUniformMatrix4fv(mat, 1, GL_FALSE, modelViewProjectionMatrix.m);`
    

由于物体的坐标位置是在屏幕坐标范围外的,所以看不到物体。如何设置当物体显示的时候,物体实在屏幕中央?
简而言之,如何改变物体的中心点坐标或者某点坐标为屏幕中心点坐标?

迷茫迷茫2767日前461

全員に返信(1)返信します

  • 天蓬老师

    天蓬老师2017-04-17 17:27:15

    解決しました。最終的に、モデル ファイル内のすべての頂点データに基づいて xyz の最大値と最小値を見つけ、xyz 値に基づいてモデルの中心点の座標を計算し、モデルを (0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 0) スケールに従って描画すると、モデルが画面の中央に表示されることがわかります。適切なサイズについては、モデルの最大長を見つけて、モデルの長さに基づいて画面上で適切な比率を見つける必要があります。すべての xyz 値にこの比率を掛けます。 。 。 。完璧な解決策。誰かが使ってくれるといいですね!

    返事
    0
  • キャンセル返事