直交ビューと透視ビューの2つのビューモードを備えた小さなシェイプエディタを作成しています。ですから、パースペクティブとオルソのズーム値が等しい(または可能な限り等しい)としたら、それは素晴らしいことだと思いました。
透視図のズーム値は、z軸上の位置を設定することで簡単にアーカイブされます。オルソの場合、左、右、上、下の角を0.0からXにスケーリングします。
それらを均等にズームすることは可能ですか?解決策はありますか?
等しいズーム値は、各ズームモードで形状が同じサイズに見えることを意味すると解釈します。遠近法では、形状の部分の見かけのサイズはカメラからの距離に依存するため、この「等ズーム」は、形状内の特定の深さでのみ実現できます。
カメラに最も近い形状の部分を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値が距離と等しくなるように設定できます。