最終更新: mikk_ni3_92 2007年04月22日(日) 16:52:23履歴
現在地 >> メニュー >>実践編01
Index:実践編01 >> 実践編02
マウスで3次元位置を求めるには、
[例]:(x,y)がクリックした位置
サンプルコード >> 実践編01::まとめコード
Index:実践編01 >> 実践編02
マウスで3次元位置を求めるには、
- クリックした位置のピクセルに関してデプス値を取得
- 「gluUnProject()」で3次元位置を計算する
[例]:(x,y)がクリックした位置
static double modelview[16]; //モデルビュー glGetDoublev(GL_MODELVIEW_MATRIX, modelview); static double projection[16]; //プロジェクション glGetDoublev(GL_PROJECTION_MATRIX, projection); static int viewport[4]; //ビューポート glGetIntegerv(GL_VIEWPORT, viewport); static float z; static double objX,objY,objZ; //ピクセルのデプス値を取得 glReadPixels(x,glutGet(GLUT_WINDOW_HEIGHT) - y,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&z); //計算 gluUnProject(x,glutGet(GLUT_WINDOW_HEIGHT) - y ,z,modelview,projection,viewport,&objX,&objY,&objZ); std::cout << "(x,y,z) = ("<<objX<<", "<<objY<<", "<<objZ<<")\n"; //出力
サンプルコード >> 実践編01::まとめコード