delphiでMMOat GAMEDEV
delphiでMMO - 暇つぶし2ch92:91
04/07/10 14:06 mnKwxbw9
3D座標を2D座標にするのは
// ワールドマトリクスで座標変換します。
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


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch