delphiでMMO
■ このスレッドは過去ログ倉庫に格納されています
009291
04/07/10 14:06ID:mnKwxbw9// ワールドマトリクスで座標変換します。
pos := Figure.TopFrame.LocalToWorld(testFigure.TopFrame.GetTranslation(testFigure.TopFrame));
Hgpos := NowHomoginize(pos);
// ビューマトリクスで座標変換します。
Hgpos:=NowTransform(Hgpos, NowInvMatrix(Camera.WorldMatrix));
// プロジェクションマトリクスで座標変換します。
Hgpos:=NowTransform(Hgpos, (Scene.ProjectionMatrix));//ScreenMatrix
// ビューポート情報からクライアント座標を取得します。
Hgpos.x := (Hgpos.X / Hgpos.W * 800 / 2) +800 / 2;
Hgpos.y := -(Hgpos.Y / Hgpos.W * 600 / 2) +600 / 2;
これで出来たっぽい
2D座標を3D座標にするのはこれの逆をやればよいから・・・
こうか??
pos.X := マウス座標X;
pos.Y := マウス座標Y;
pos.Z := 1;
//W付きに変換
Hgpos := NowHomoginize(pos);
// クライアント座標からビューポート情報を取得します。
Hgpos.x := (Hgpos.X -800 / 2) * Hgpos.W/(800 * 2);
Hgpos.y := -(Hgpos.Y -600 / 2)*Hgpos.W/(600 * 2);
// プロジェクションマトリクスで座標変換します。
Hgpos:=NowTransform(Hgpos, NowInvMatrix(Scene.ProjectionMatrix));
// ビューマトリクスで座標変換します。
Hgpos:=NowTransform(Hgpos, (Camera.WorldMatrix));
pos := NowHeteroginize(Hgpos);
testFigure.Figure.TopFrame.SetTranslation(Camera ,pos);
出来ない _no
■ このスレッドは過去ログ倉庫に格納されています