カメラの共通プロパティ、演算子、メソッド
プロパティ
以下に示すプロパティは、全てのタイプのカメラに適用されます。
<camera>.fov Float default: 45.0 -- animatable, angle
カメラで表示する領域の幅を判別します。これは水平視野です。
<camera>.curFOV Float default: 45.0 -- float
下記の forType 値に関して、現在の視野を返します。
3ds Max 8 以降 で使用可能です。
<camera>.fovType Integer default: 1 -- integer
現在の視野タイプを設定します。
カメラの UI の FOV スピナーの横に表示されるフライアウトを変更します。
3ds Max 8 以降 で使用可能です。
有効な値は次のとおりです。
1 -水平
2 -垂直
3 -対角
<camera>.orthoProjection Boolean default: false
チェックマークが付いている場合、カメラ ビューは[ユーザ](User)ビューとまったく同じように見えます。
オフの場合、カメラ ビューは標準パースに似たビューになります。
<camera>.type Name default: #free
カメラのタイプ:
#free - フリー カメラ(ターゲット ビューを任意の方向に設定可能)
#target - ターゲット カメラ(カメラは常にビューをターゲット オブジェクトに揃える)
<camera>.showCone Boolean default: false
カメラの視野によって定義されている円錐(実際にはピラミッド)を表示します。
円錐は、他のビューポートには表示されますが、カメラ ビューポートには表示されません。
<camera>.showHorizon Boolean default: false
水平線を表示します。
カメラ ビューポートの水平レベルにグレーの直線が表示されます。
<camera>.nearrange Float default: 0.0 -- animatable; alias: Near_Env_Range
環境効果での近接距離。
<camera>.farrange Float default: 1000.0 -- animatable; alias: Far_Env_Range
環境効果での遠方距離。
<camera>.clipManually Boolean default: false
チェックマークを付けると、クリッピング平面を定義できます。
[手動でクリップ](Clip Manually)がオフの場合、カメラに近接した(3 単位内)ジオメトリは表示されません。
<camera>.nearclip Float default: 1.0 -- animatable, alias: near_clip
近接クリッピング平面より近いオブジェクトは、カメラには写りません。
<camera>.farclip Float default: 1000.0 -- animatable, alias: far_clip
遠方クリッピング平面より遠方のオブジェクトは、カメラには写りません。
<camera>.showRanges Boolean default: false
オンの場合、カメラの円錐内に、近接範囲および遠方範囲設定を示す黄色い四角が表示されます。
<camera>.targetDistance Float default: 160.0 -- animatable, alias: Target_Distance
非表示のターゲットに使用するポイントを設定します。
<camera>.mpassEnabled Boolean default: false -- boolean; MultiPass_Effect_Enabled
MultiPass カメラ効果を使用可能/使用不可能にします。
<camera>.mpassRenderPerPass Boolean default: false -- boolean; MPEffect___Render_Effects_Per_Pass
Render Per Pass オプションを使用可能/使用不可能にします。
<camera>.multipass_effect SubAnim default: SubAnim:MultiPass_Effect -- SubAnim
<camera>.mpassEffect Depth_of_FieldMPassCamEffect default: Depth_of_FieldMPassCamEffect:Depth_of_FieldMPassCamEffect -- SubAnim
MultiPass カメラ効果を取得/設定します。詳細は、「MPassCamEffect オブジェクト」を参照してください。
MultiPass カメラ効果をビューポートでプレビューする場合は、「maxOps.displayActiveCameraViewWithMultiPassEffect メソッド」を参照してください。
例:
|
$Camera01.mpassEffect = Motion_BlurMPassCamEffect()
$Camera01.mpassEffect.disableAntialiasing = true
|
注:
fov プロパティは度単位の水平視野の値です。
垂直視野の値、対角視野の値、およびレンズの値は、水平視野と現在のレンダラーの口径幅に基づいています。
視野タイプと現在の値にアクセスできるようにする、3ds Max 8 に追加された新しいプロパティと関数を参照してください。
次の MAXScript 関数を使って、水平視野から垂直視野を計算することもできます。
関数
fn GetCamVFOV theCamera =
(
local r_aspect=(renderWidth as float)/renderHeight
2.0*atan(tan(theCamera.fov/2.0)/r_aspect)
)
CameraFOV 構造:
3ds Max 8 以降で導入された CameraFOV 構造では、カメラ視野の変換に関連する関数のセットが提供されます。
<float>cameraFOV.FOVtoMM <float fov>
指定された水平視野をレンズ MM に変換します。
<float>cameraFOV.MMtoFOV <float mm>
指定されたレンズ MM を水平視野に変換します。
<float>cameraFOV.CurFOVtoFOV <camera> <float cfov>
カメラの現在の視野方向における視野を水平視野に変換します。
新しいカメラ プロパティ .fovType および .curFOV も参照してください。このプロパティでは、視野タイプ フライアウト、およびフライアウトの状態によって定義されている現在の値にアクセスできます。
<float>cameraFOV.FOVtoCurFOV <camera> <float fov>
水平視野をカメラの現在の視野方向の視野に変換します。
新しいカメラ プロパティ .fovType および .curFOV も参照してください。このプロパティでは、視野タイプ フライアウト、およびフライアウトの状態によって定義されている現在の値にアクセスできます。
例
|
c = freecamera()
--> $Free_Camera:Camera01 @ [0.000000,0.000000,0.000000]
cameraFOV
--> #Struct:cameraFOV(
--> FOVtoMM:<fn>,
--> CurFOVtoFOV:<fn>,
--> FOVtoCurFOV:<fn>,
--> MMtoFOV:<fn>)
cameraFOV.FOVtoMM 45 --convert horizontal FOV of 45 degrees into mm
--> 43.4558
cameraFOV.MMtoFOV 43.4558--convert 43.4558 mm back to degrees
--> 45
c.fovType = 3--set the FOV type to diagonal
--> 3
cameraFOV.CurFOVtoFOV c 54.7473--convert diagonal to horizontal FOV
--> 45
cameraFOV.FOVtoCurFOV c 45--convert 45 deg. horizontal to diagonal FOV
--> 54.7473
c.curFOV--current FOV type, in this case 3=diagonal
--> 54.7473
c.fov--this is ALWAYS the horizontal FOV!
--> 45
c.fovType = 1--set current FOV to 1=horizontal
--> 1
c.curFOV--the current FOV is now horizontal
--> 45
c.fov--this must return the same as current, as both are horizontal
--> 45
|
[全範囲ズーム全ビューポート](Zoom Extents All)のシミュレーション
次のスクリプトは、指定されたカメラの視野を変更し、そのカメラの「全範囲ズーム」をシミュレートします。
例
|
fn ZE_Cam cam objs =
(
local max2, fov, asp, v-- declare local variables
-- define a function that returns the maximum value
-- of a set of values in an array
fn maxof vals = (local v=vals[1];for v1 in vals do (if v1 > v do v=v1);v)
fov=0-- initialize the fov value
asp=(renderWidth as float)/renderHeight-- calculate the renderer's image aspect ratio
in coordsys cam-- work in coordinate system ofthe camera
(
for obj in objs where obj != cam do-- loop across all objects except the camera
(
if obj.min.z >=0 do continue-- if object is behind camera, skip it
-- get max value of the object's bounding box, correcting for the image aspect ratio
-- in the y values
v = maxof #((abs obj.max.x),(abs obj.min.x),(abs (obj.max.y*asp)),(abs (obj.min.y*asp)))
fov = maxof #(fov,(2*atan(-v/obj.min.z)))-- increase fov if needed
)
)
cam.fov=fov-- set the camera's fov to the new fov value
)
-- test bed --
cam=$camera001-- specify the camera to "zoom extent all" on
ZE_Cam cam $*-- call the function, passing the camera and an object set containing all objects
|