カメラの視野角度を知りたい (スクリプト)
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度と計算されます。
図形ウィンドウ上での指定の角度を測定する場合は、「メジャーツール」を使用します。