open gl のようなライブラリを使用せずに、純粋な Java で 3D ゲームをプログラミングしようとしています (その背後にあるすべての数学と技術を理解したいため)。したがって、最初のテストは非常にうまく機能し、立方体などを移動したり回転したりできます。また、世界のカメラを表す射影行列があります。しかし、この投影は正しく機能しません。
ポイントを移動できますが、x と y についてのみなので、右、左、上、下です。しかし、すべてのポイントの z 座標を変更しても、何も起こりません。問題は、私の透視図法はまったく透視図法ではないということです。私は何でもできますが、「遠く」にあるポイントは「小さく」描かれません...なぜですか? どうしたの?
私はすでに述べた行列を操作し、次の原則を使用します。すべてのメッシュには線のリストがあり、各線には点があり、点には変数 x、y、z、1 があります。したがって、すべてを変換したいときはいつでもこれらのポイントは、必要な変換マトリックス (4x4) を各ポイント マトリックス (4x1) で乗算し、次に射影マトリックスを各ポイント マトリックスで乗算して、各ポイントの新しいポイント マトリックス (4x1) を取得し、それらを再度描画します。
だから私はすでに言った、投影、(実際の距離ズーム)は機能していません。なぜ?誰でもアイデアはありますか?
どうもありがとうございました!
編集
わかりました、ここにいくつかの詳細情報とコードがあります:私はこの射影行列を使用しています:
そして、ここにいくつかのコードがあります:
BlockWorld.javaこれがメイン プログラムです。問題は 48 行目を参照してください。