問題: 視差効果のある 2D ゲームを作成していますが、3D 空間を使用しているため、視差をシミュレートしていませんが、透視投影に任せています。問題は、レベルを設計する独自のゲーム エディターを持っていることです。このエディターでは、画像だけを使用し、各レイヤーに Z 値を設定します。ただし、レイヤーをゲーム エディターで設定したとおりにゲーム エンジンで表示する必要があります。つまり、透視投影で視差を実行しますが、スケールやオフセット/位置を変更する必要はありません。
明らかな解決策は、それらを拡大してオフセットすることですが、オフセットを計算する方法の問題はありますか? スケーリングで object->Scale(object.Z/view.Z) を試してみたところ、実際のサイズに戻ったようですが、位置がまだ間違っています。object->setPositionX(object->getPosition().x*(object.Z/view.Z)) を試してみましたが、すべてがずれているように見えることを除いて、整列しているようです。
アンプロジェクションを試み、ワールドマトリックスからスクリーンマトリックスに変換して、いくつかの比率などを見つけようとしました。
これをエレガントで数学的な方法で行うにはどうすればよいでしょうか?