カメラの視野角度から焦点距離を計算 (スクリプト)

カメラの視野角度を知りたい (スクリプト)」で、Shade3Dのカメラから視野角度を計算するスクリプトを記載しています。
ここでは、視野角度を指定する場合にShade3Dでの焦点距離を計算するスクリプトについて記載します。

import math

# 視野角度 (度数) 0 - 180.0 .
fovDegrees = 45.0

scene = xshade.scene()

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

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

# アスペクト比.
aspect = float(renderingImageSize[0]) / float(renderingImageSize[1])

dH = 0.0
if renderingImageSize[0] > renderingImageSize[1]:
  dH = screenDSizeH / aspect
else :
  dH = screenDSizeH * aspect

cosV = math.cos((fovDegrees / 2.0) * math.pi / 180.0)
cameraZoom = 0.0
if cosV > 0.0:
    cameraZoom = math.sqrt(-dH * dH / (1.0 - 1.0 / (cosV * cosV)))

print cameraZoom

上記の場合は、fovDegreesに45.0度の視野角度を入れています。
視野角度は0.0度以上、180.0度以下である必要があります。
この角度は、レンダリング画像の横または縦の短辺での視野角度になります。
cameraZoomに計算された焦点距離が入ります。

レンダリング画像サイズが640 x 480ピクセルで、視野角度を45.0度とした場合、
このスクリプトの計算はcameraZoomが「32.591883092」となり、
これが焦点距離となります。

Translate »