カメラの視野角度を知りたい (スクリプト)

Shade3Dでの視野角度は、
カメラの焦点距離、レンダリング画像の解像度より決定されます。
「視野角度」としてのパラメータはShade3D内では出てきませんが、他のツールとやりとりする場合に必要になることがあります。
Shade3Dでのカメラのより詳しい仕組みについては「カメラの原理」もご参照ください。

カメラの横と縦の解像度より、サイズが短いほうの角度は以下のスクリプトで計算できます。


import math

scene = xshade.scene()

# レンダリング画像サイズを取得.
renderingImageSize = scene.rendering.image_size

# スクリーンの長辺は36mm固定.
screenDSize  = 36.0   
screenDSizeH = screenDSize * 0.5

# カメラの焦点距離値.
cameraZoom  = scene.camera.zoom

# アスペクト比.
aspect = float(renderingImageSize[0]) / float(renderingImageSize[1])
dH = 0.0
if renderingImageSize[0] > renderingImageSize[1]:
  dH = screenDSizeH / aspect
else :
  dH = screenDSizeH * aspect

cosV = cameraZoom / math.sqrt(dH * dH + cameraZoom * cameraZoom)
fovDegrees = 2.0 * math.acos(cosV) * 180.0 / math.pi

ここで計算された「fovDegrees」にて、横縦の短いほうの視野角度が度数で入ります。

以下のコードで、水平(fovH)、垂直(fovV)の視野角度を計算できます。


fovH = fovV = fovDegrees
if renderingImageSize[0] > renderingImageSize[1]:
  fovH = fovDegrees * aspect
else:
  fovV = fovDegrees / aspect

焦点距離 50mm、640 x 480ピクセルの解像度の場合、縦方向の視野角度のほうがせまくなり、
縦方向の視野角度が30.219度と計算されます。

図形ウィンドウ上での指定の角度を測定する場合は、「メジャーツール」を使用します。

この記事のタイトルとURLをコピーする
Translate »