ローカル座標でのカメラ座標の取得の仕方

local-camera.png

カメラ位置の取得の仕方final

glGetDoublev(GL_MODELVIEW_MATRIX,modelMatrix);
 CMatrix modelCmatrix(modelMatrix);
 modelCmatrix.transpose();//OpenGL特有の変な配置を直すため転置行列にする。
 modelCmatrix.invert();//逆行列にする。 
  CVector vecView(0,0,0,1);
  vecView=modelCmatrix*vecView; 
  double camera[4]={0,0,0,1};//モデルビュー行列から並行移動成分を取り出すために4番目の要素が1にしてある。
  vecView.getv(camera);//cameraにvecViewの成分を入れる。cameraの値はバウンディングボックスを変える度に変わる。

8行目の時点でのmodelCMatrixの状態(ボックスを動かすたびに全体の値がちらちら変わる。一番左の列が色々な値に代わり、そのほかは1,0,-1いづれかの値でちらちら変わる。)

[1][-0][0][-0]
[-0][1][-0][0]
[0][-0][1][7]
[-0][0][-0][1]

サポートサイト Wikidot.com