そのため、3D モデル (.3ds、.obj など) を openGL プログラムにロードすると、一見ランダムな場所に配置されるか、理想的ではない位置に配置されます。モデルをインポートしたときに指定した場所に移動するようにする簡単な方法はありますか? これは、頂点シェーダーを使用してベクトルを追加することで入力位置を変換できると考えていますが、これには、変換する量を知るために、最初にどこに表示されるかを知る必要があります。
質問する
191 次
2 に答える
1
これは、3D モデルに適用される変換、または 3D モデリング パッケージで使用される座標系に完全に依存します。あなたは間違った方向からこれに近づいていると思います。データに一貫性を持たせたい場合は、3D モデリング パッケージに期待される方法でデータがエクスポートされていることを確認してください。
于 2013-03-03T11:26:13.383 に答える
1
「正しい向き」とは何かを理解するのは難しいです。急須を見たとき、取っ手が右か左か?
ただし、正しい位置を調整するのは少し簡単です。
ロードしたオブジェクトを (Lx, Ly, Lz) に表示したいとします。
最初に、各座標を加算して平均化することにより、頂点 (Cx、Cy、Cz) の重心を計算します。例: 3 つの点 (1,0,1)、(0,1,1)、および (0,0,1) の場合、重心は (1/3, 1/3, 1) です。
ここで、すべての頂点を (Lx-Cx、Ly-Cy、Lz-Cz) だけオフセットすると、ジオメトリは位置 (Lx、Ly、Lz) を中心に「中心」になるはずです。
注: これはかなり対称的なモデル (例: 人、生き物、車など) に適しています。
于 2013-03-03T11:36:51.693 に答える