'---------------------------------------------
' Pick a Infinit Light
'---------------------------------------------
Do
Dim iSelBtn
PickElement "Light","Pick a Infinit Light", "Pick a Infinit Light", oDL, iSelBtn
if iSelBtn = 1 then
SelectObj oDL
CheckLightType
elseif iSelBtn = 2 then
SelectObj oDL
CheckLightType
elseif iSelBtn = 0 then
LogMessage "Cancel"
Exit Do
else
LogMessage "Error"
Exit Do
End if
Loop
'---------------------------------------------
' Check Light Type
'---------------------------------------------
'サブプロシージャ"CheckLightType"の宣言
Sub CheckLightType
'ライトタイプが infinit であるときサブプロシージャ CreateDirLight を実行
If oDL.OGLLight.Type = 1 then
CreateDirLight
'ライトタイプが infinit でないとき、警告メッセージ表示
Else Msgbox "Please Select a Infinite Light."
End If
End Sub
'---------------------------------------------
' Create Direction Light
'---------------------------------------------
'サブプロシージャの宣言
Sub CreateDirLight
'Infinitライトを(X,Y,Z)=(0,0,10)に移動
Translate , 0, 0, 10, siAbsolute, siParent, siObj, siZ
'Infinitライトの注視点オブジェクトをDir_Intという名前で作成し、oDLIntという変数に格納
set oDLInt = GetPrim("Null", "Dir_Int")
'InfinitライトのルートモデルをDir_Rootという名前で作成し、oDLRoot という変数に代入
Set oDLRoot = GetPrim("Null", "Dir_Root")
'DirLight/Dir_IntをoDLRootの子に親子付け
ParentObj oDLRoot, oDL
ParentObj oDLRoot, oDLInt
'DirLightをDir_IntにDirection Constrain
ApplyCns "Direction", oDL, oDLInt
'拘束軸をX軸からZ軸に変更
SetValue oDL & ".kine.dircns.dirz", -1
SetValue oDL & ".kine.dircns.dirx", 0
'サブプロシージャの終了
End Sub