2

3D空間で平面を取得し、画面上のグリッドの1つのセクション内に完全に収まる平面を返す関数を作成しようとしています。

画面上のグリッドは固定されており、XとYの分割、または画面全体の一連の線によって定義されます。

元の平面は、画面全体を占めることはありませんが、画面上の任意のサイズまたは方向にすることができます。

私はC#を使用してUnity3.5.2f2で作業しています。Unityの一般的な知識だけでなく、数学に基づいているため、SOに投稿しました。可能性はありますが、ソリューションは外部ライブラリを使用しないのが理想的です。

私はいくつかの方法を念頭に置いており、どんな入力でもいただければ幸いです。

  1. 平面をスクリーンスペースに投影し、メッシュの最小/最大x値とy値(境界ボックス)を取得し、これを使用してスケールxformを計算します(メッシュの高さ/長さのスクリーン分割の差を使用)。メッシュの2つのエッジを選択した分割にスナップした後、ワールドスペースに再投影します。

  2. 分割は本質的に長方形であるため、いくつかのビュー錐台を作成し、錐台に合うように3D空間で平面をスケーリング/平行移動する方法を考え出します。

関数プロトタイプは次のようになります。

Plane adjustPlaneToFitScreens(Plane _plane)

何かご意見は?

4

1 に答える 1

0

上記の方法01.を使用してこの問題を解決しました。Unity は計算を簡単にするいくつかの便利な関数を提供し、ピクセル/スクリーン空間でのスケーリングと変換の計算は、3D 空間よりもはるかに簡単でしたが、視野角/FOV を考慮する必要がありました。

スケーリング後のワールドへの再投影には問題がありますが、この特定のアプリケーションでは、スケーリングされたオブジェクトを表示するときにカメラが移動しないため、ブラック ボックスでは問題は実際には目立ちません。

于 2013-03-22T11:55:03.720 に答える