表示されている3D画面から2D座標を取得するコード

当初苦労したので、忘れないように

表示されている3D画面から2D座標を取得するコードを乗っけてみる

 

 


public static Vector3 GetDisp(Vector3 position, Matrix projectionMatrix, Matrix viewMatrix)
{
Vector3 disp = new Vector3();

if (!IsInFrontOfCamera(position, projectionMatrix, viewMatrix))
{
disp.X = 0;
disp.Y = 0;
return disp;
}
// Fix:
Vector4 result4 = Vector4.Transform(position,
viewMatrix * projectionMatrix);

//Log.Write("result4=" + result4);
if (result4.W == 0)
result4.W = 0.000001f;
Vector3 result = new Vector3(
result4.X / result4.W,
result4.Y / result4.W,
result4.Z / result4.W);

disp.X = (int)Math.Round(+result.X * (Game1.preferredWindowWidth / 2)) + (Game1.preferredWindowWidth / 2);
disp.Y = (int)Math.Round(-result.Y * (Game1.preferredWindowHeight / 2)) + (Game1.preferredWindowHeight / 2);
return disp;
}
public static bool IsInFrontOfCamera(Vector3 point, Matrix projectionMatrix, Matrix viewMatrix)
{
Vector4 result = Vector4.Transform(
new Vector4(point.X, point.Y, point.Z, 1),
viewMatrix * projectionMatrix);

return result.Z > result.W - Game1.NearPlane;
}

スポンサーサイト

コメント

こんにちは。
初めまして。もうTEA様のゲームを遊び始めてから何年になりましょうか・・・(笑

ニコ動のムービーを見ました。
一言で言うと・・・カッコイイ!ただひたすらにカッコ良かったです。
いつか公開される日を楽しみに待っています。

実はJLのプレーヤーでもあるのですが、クランの作成の依頼をこの場でしてもよろしいでしょうか?
JLの掲示板の方は荒れっぱなしなので、あえてこちらに書かせて頂きました。
クランネームはedge。クランマークもedgeで良いと思います。(文字数的にも・・・)

クランサイトは後で用意するつもりです。出来上がり次第お伝えします。

どうぞ宜しくお願いします。

了解です

クランの作成了解です
サイトができてからクラン一覧に乗せたほうがいいですか

ゲーム作成長いですからね
後何年続けてるんだろ、おじいちゃんになってもやってそうですw

こんにちは。迅速な対応有難うございます。
サイトは気まぐれに作っていくつもりなので、先にクラン一覧に載せていただいて結構です。

それと、文法的な間違いに気づいたので、クランネームをEdgeにして頂いても宜しいですかw(マークは[Edge]でお願いします。)

おじいちゃんになってもですかw
日本一のプログラマ爺を目指して頑張って下さい。(ぇw

こんにちは。
クラン一覧にて私のクランが追加されているのを確認しました。
ありがとうございます。

一つ気づいたのですが、クランマークがクランサイトの位置に表示されています。。。
ご確認と、訂正をお願いします。

コメントの投稿

管理者にだけ表示を許可する

トラックバック


この記事にトラックバックする(FC2ブログユーザー)

プロフィール

TEA(てぃあ)

Author:TEA(てぃあ)
親サイト:
フリーのゲームがダウンロードできます
主にシューティング系

最新記事
最新コメント
カテゴリ
PSP Vita
カウンター
ジャスティスレギオン 無料ダウンロード
インディーズPSPVitaゲーム
リンクや作った物
検索フォーム
RSSリンクの表示