くだすれOpenGL(超初心者用)
■ このスレッドは過去ログ倉庫に格納されています
0756デフォルトの名無しさん
2007/06/22(金) 22:19:00他スレにも書き込んだのですが、こうやって何とかできました。
POINT3D ray;
POINT3D scr; // x y zをdouble型で確保している構造体
for(posX=0;posX<WIDTH;posX++)
for(posY=0;posY<HEIGHT;posY++) //nearクリップ面を端っこから走査していく
/* get near clip position 床○先生のところを参考に */
glGetDoublev(GL_MODELVIEW_MATRIX, model);
glGetDoublev(GL_PROJECTION_MATRIX, proj);
glGetIntegerv(GL_VIEWPORT, view);
glReadPixels(posX, posY, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &scr.z);
gluUnProject(posX, posY, 0, model, proj, view, &scr.x, &scr.y, &scr.z); //nearクリップ面の座標をワールド座標で取得
/* end get near clip position */
// 視点とnearクリップ面上の点から Ray の算出
SubVector3D(scr,eye,&ray);
// Ray を単位ベクトルに変換
UnitVector3D(&ray);
Rayのところで使っているベクトル関数はこちらのを、ほぼそのまま入れてます。
ttp://www.cam.hi-ho.ne.jp/strong_warriors/teacher/chapter01.html
nearクリップ面の座標は、賢いやり方が他にあると思うのですが…
これで画面の点と、視点とを結ぶ直線を順番に打っていけます
わかりにくいと思いますので、分からないところは言ってください。
交差判定について教えていただけると嬉しいです。
■ このスレッドは過去ログ倉庫に格納されています