1人でゲームが作れるように修行します。2 (487レス)
1人でゲームが作れるように修行します。2 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
116: 名前は開発中のものです。 [sage] 2010/10/10(日) 07:27:55 ID:iMXoTcjW 一般的な方法としては、 ・E=視点座標、つまりカメラの位置をあらわす位置ベクトル ・L=投影面における視点からマウスカーソルまでの半直線ベクトル から、仮想空間内の任意の物体との交差判定、交差位置特定がきる。 Eは、普通、プログラム上で管理されている。 Lは、FOV(視野錘台)を自分で管理されているなら容易に計算できるが、 投影変換行列の逆行列を使っても計算できると思う(そういう便利な関数があるかもしれない)。 L = Mproj.inv x (mouseX,mouseY,1)T Mprij.inv = 投影変換行列の逆行列 (mouseX,mouseY,1) = マウスの座標(正規化装置座標系、同次座標表現) 特に、フィールドのような単一平面との交点計算は、 ・O=原点(フィールド面上にあること) ・N=フィールドの法線ベクトル(正規化ベクトル) に対して、Eがフィールドの表面にあると限定した場合、 LとNの内積が0以上の場合、交差しない(マウスカーソルは天空を指している) さもなければ、 ・h= フィールド面からEまでの高さ((E-O)とNの内積) から、 ・t= -h/(LとNの内積) を求めれば、目的とするフィールド上の点Fは、 ・F= E+L*t のような手順で計算できるはず。 あとは、(F-O)をフィールドの座標軸(X-O)(Y-O)で分解すれば、2次元座標に戻せる。 うろ覚えで書いているので細かい間違いがあるかも知れないが(違ってたら乞指摘)、 ゆっくりでいいんで、参考にしてもらえれば嬉しい。 頑張れ! http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/116
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 371 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.008s