2

直交ビューと透視ビューの2つのビューモードを備えた小さなシェイプエディタを作成しています。ですから、パースペクティブとオルソのズーム値が等しい(または可能な限り等しい)としたら、それは素晴らしいことだと思いました。

透視図のズーム値は、z軸上の位置を設定することで簡単にアーカイブされます。オルソの場合、左、右、上、下の角を0.0からXにスケーリングします。

それらを均等にズームすることは可能ですか?解決策はありますか?

4

1 に答える 1

1

等しいズーム値は、各ズームモードで形状が同じサイズに見えることを意味すると解釈します。遠近法では、形状の部分の見かけのサイズはカメラからの距離に依存するため、この「等ズーム」は、形状内の特定の深さでのみ実現できます。

カメラに最も近い形状の部分を2つの表示モードで等しく表示したいとします。

パースビューから同等の正投影ビューを生成するには、最初に、形状の最も近いポイントでのビュー錐台の幅と高さを計算します。

width = tan(fovX) * distance

height = tan (fovY) * distance

ここdistanceで、はカメラからシェイプ上の最も近いポイントまでの距離であり、fovX, fovYはパースペクティブモードでの視野の水平角度と垂直角度です。

0,0,width,height次に、カメラをシェイプの中央に配置すると仮定して、正投影ビューの長方形をに設定できます。

正投影ビューから同等のパースビューを生成するには、次の式を逆にします。

distance = width / tan(fovX)

また

distance = height / tan(fovY)

distance次に、正のz軸を見下ろしていると仮定して、カメラのz値をオブジェクト上の最も近いポイントに設定します。カメラが常に原点にある場合は、オブジェクトのz値を、最も近いポイントのz値が距離と等しくなるように設定できます。

于 2012-11-21T08:45:22.323 に答える