2012-04-24 14 views
1

私は、私が直面している方向にオブジェクトを投げたい小さなゲームを作っています。 問題は、私の(カメラ)方向がモデル/ビューマトリックスによって決定されることです。この行列はシステムによって提供されます(アンドロイドデバイス上)。モデル/ビューマトリックスからのOpenGLカメラ方向ベクトル

スローされたオブジェクトの速度ベクトルとして機能するベクターをどのように計算できますか?
いくつかのベクトルに行列を乗算しようとしましたが、結果が私にこれを達成する手がかりを与えません。

マトリックスには回転部分のみが含まれています(縮尺、スキューまたは平行移動なし)。
私はOpenGL ES 1.1で作業していますが、おそらく問題ではありません。

this answer後、私は、各軸周りの回転角を得ることができたが、私はまだそれから、私の速度ベクトルを構築する方法を知りません。

編集私が達成しようとしているのは、どんな方法でもモデル/ビューマトリックスを回転させ、オブジェクトを投げてに向いています。私は最終的に地面に加速する目的が必要です。私は正確なベクトルを知っているなら、私はこの軌道を計算することに問題はありません。私は(カメラは)直面しています。

ありがとうございました。

答えて

2

モデルビューマトリックスの最初の3つの列は、ビュー座標系のベースであるです。だから、必要なのは3列目(または行、カメラから世界へ、世界からカメラへ)です。

+0

あなたの答えをありがとう。しかし、私はあなたがそれを記述する方法でそれを動作させることができません。私が行列を(glLoadIndenityの後に)X軸の周りで回転させると、うまく動作します。しかし、もし私がZの周りを回転し、Xの周りを逆順にGLで回転すると、ベクトルはZ回転がない場合と同じ方法を指しています。 Z軸を中心に回転するので、行列の3番目の列は変化しないので、わかります。 – sidon

+0

実際にカラムを抽出していますか? OpenGLはマトリックスを列の大きな順に並べます。そのため、コード内で「行」と「列」を交換してみてください。 – datenwolf

+0

はい私は列を抽出しています。私。 MはOpenGLによって提供される4×4行列(浮動小数点[16])であり、M [8]、M [9]、M [10]である。 – sidon