オペレーターとかでリストで選択しなければいけないときの対処の仕方。




×selectobj ob1,ob2

○selectobj ob1 &","& ob2





----------------------------------------------------


dim ob1, ob2, button

CreatePrim "Cone", "MeshSurface"
CreatePrim "Cylinder", "MeshSurface"

Translate , -3, 0, 0, siAbsolute, siPivot, siObj, siX, , , , , , , , , , 0

DeselectAll

PickObject "_", "_", ob1, button
if button <> 0 then
PickObject "_", "_", ob2, button
if button <> 0 then

ApplyGenOp "MeshMerge", , ob1 &","& ob2, 3, siPersistentOperation, siDeleteGenOpInputs

end if
end if

Set oPos = GetValue("SelectionList")
For Each r In oPos


LogMessage r

 LogMessage oPos

Next



SelectionListとは選んでるものを返すもの。

ただしrtとoPosで返るものが違う。

rは1個づつ返る

'INFO : null

'INFO : null2

'INFO : null3


oPosはまとめて返る

'INFO : null,null1,null2,null3



青い字の部分をコレにしても出来るがこれだとオブジェクトの数だめプロットしてしまう。

for i = 0 to sItem.count - 1


For Each r In oReturn だと選んでるリストを返す。一つに全てが入っている

/kine.local.posと書くと全てのposをプロットしてくれる


しかしrotはダメ。/kine.local.rotは使えない。

rotの場合はrを入れる。




Set oReturn = GetValue("SelectionList")
For Each r In oReturn
LogMessage r
Next


PlotAndApplyAction oReturn , "/kine.local.pos", "plot", 1, 100, 1, 20, 3, False, 0.01, True, True, True, True



PlotAndApplyAction oReturn ,r &".kine.local.rotx,"& r &".kine.local.roty, "& r &".kine.local.rotz", "ff", oStart, oEnd, 1, 20, 3, False, 0.01, True, True, True, True


FindChildはオブジェクトモデルじゃないと使えない



FindChildは(cube*)で検索すると一番初めにヒットしたものしか返さない

FindChildrenは全ても返す




lightとうオブジェクトを検索。ある場合はB、ない場合はA


set oRoot = Application.ActiveProject.ActiveScene.Root

set oObj = oRoot.FindChild("light")



if Typename( oObj ) = "Nothing" Then


logmessage "A"

else

logmessage "B"


end if

dim oPSet,oPPGLayout, oItem


'skeleton_nameというパラメーターをセット
set oPSet=ActiveSceneRoot.AddProperty("CustomProperty",false,"Skeleton_name")


'パラメーターを作る。3.5より特殊

oPset.AddParameter3"SpineRoot",siString, , 0, 5,true,false
oPset.AddParameter3"Spine1",siString, , 0, 5,true,false
oPset.AddParameter3"Spine2",siString, , 0, 5,true,false
oPset.AddParameter3"Spine3",siString, , 0, 5,true,false
oPset.AddParameter3"Spine_Eff",siString, , 0, 5,true,false

'--------------------------------------------------------------

oPset.AddParameter3"Neck_Root",siString, , 0, 5,true,false
oPset.AddParameter3"Neck",siString, , 0, 5,true,false
oPset.AddParameter3"Head",siString, , 0, 5,true,false
oPset.AddParameter3"Head_Eff",siString, , 0, 5,true,false

'-----------------------------------------------------------

oPset.AddParameter3"L_leg_Root",siString, , 0, 5,true,false
oPset.AddParameter3"L_Thigh",siString, , 0, 5,true,false
oPset.AddParameter3"L_Shin",siString, , 0, 5,true,false
oPset.AddParameter3"L_leg_Eff",siString, , 0, 5,true,false

oPset.AddParameter3"R_leg_Root",siString, , 0, 5,true,false
oPset.AddParameter3"R_Thigh",siString, , 0, 5,true,false
oPset.AddParameter3"R_Shin",siString, , 0, 5,true,false
oPset.AddParameter3"R_leg_Eff",siString, , 0, 5,true,false

'---------------------------------------------------------------

oPset.AddParameter3"L_Foot_Root",siString, , 0, 5,true,false
oPset.AddParameter3"L_Foot",siString, , 0, 5,true,false
oPset.AddParameter3"L_Toe",siString, , 0, 5,true,false
oPset.AddParameter3"L_Toe_Eff",siString, , 0, 5,true,false

oPset.AddParameter3"R_Foot_Root",siString, , 0, 5,true,false
oPset.AddParameter3"R_Foot",siString, , 0, 5,true,false
oPset.AddParameter3"R_Toe",siString, , 0, 5,true,false
oPset.AddParameter3"R_Toe_Eff",siString, , 0, 5,true,false

'-------------------------------------------------------------

oPset.AddParameter3"L_Shoulder_Root",siString, , 0, 5,true,false
oPset.AddParameter3"L_Shoulder",siString, , 0, 5,true,false
oPset.AddParameter3"L_Shoulder_Eff",siString, , 0, 5,true,false

oPset.AddParameter3"R_Shoulder_Root",siString, , 0, 5,true,false
oPset.AddParameter3"R_Shoulder",siString, , 0, 5,true,false
oPset.AddParameter3"R_Shoulder_Eff",siString, , 0, 5,true,false

'----------------------------------------------------------------
oPset.AddParameter3"L_Arm_Root",siString, , 0, 5,true,false
oPset.AddParameter3"L_Bicept",siString, , 0, 5,true,false
oPset.AddParameter3"L_Forearm",siString, , 0, 5,true,false
oPset.AddParameter3"L_Arm_Eff",siString, , 0, 5,true,false

oPset.AddParameter3"R_Arm_Root",siString, , 0, 5,true,false
oPset.AddParameter3"R_Bicept",siString, , 0, 5,true,false
oPset.AddParameter3"R_Forearm",siString, , 0, 5,true,false
oPset.AddParameter3"R_Arm_Eff",siString, , 0, 5,true,false

'---------------------------------------------------------------

oPset.AddParameter3"L_Hand_Root",siString, , 0, 5,true,false
oPset.AddParameter3"L_Hand",siString, , 0, 5,true,false
oPset.AddParameter3"L_Hand_Eff",siString, , 0, 5,true,false

oPset.AddParameter3"R_Hand_Root",siString, , 0, 5,true,false
oPset.AddParameter3"R_Hand",siString, , 0, 5,true,false
oPset.AddParameter3"R_Hand_Eff",siString, , 0, 5,true,false

'-------------------------------------------------------------

oPset.AddParameter3"L_Thumb_Root",siString, , 0, 5,true,false
oPset.AddParameter3"L_Thumb1",siString, , 0, 5,true,false
oPset.AddParameter3"L_Thumb2",siString, , 0, 5,true,false
oPset.AddParameter3"L_Thumb3",siString, , 0, 5,true,false
oPset.AddParameter3"L_Thumb_Eff",siString, , 0, 5,true,false

oPset.AddParameter3"R_Thumb_Root",siString, , 0, 5,true,false
oPset.AddParameter3"R_Thumb1",siString, , 0, 5,true,false
oPset.AddParameter3"R_Thumb2",siString, , 0, 5,true,false
oPset.AddParameter3"R_Thumb3",siString, , 0, 5,true,false
oPset.AddParameter3"R_Thumb_Eff",siString, , 0, 5,true,false

'--------------------------------------------------------------

oPset.AddParameter3"L_Index_Root",siString, , 0, 5,true,false
oPset.AddParameter3"L_Index1",siString, , 0, 5,true,false
oPset.AddParameter3"L_Index2",siString, , 0, 5,true,false
oPset.AddParameter3"L_Index3",siString, , 0, 5,true,false
oPset.AddParameter3"L_Index_Eff",siString, , 0, 5,true,false

oPset.AddParameter3"R_Index_Root",siString, , 0, 5,true,false
oPset.AddParameter3"R_Index1",siString, , 0, 5,true,false
oPset.AddParameter3"R_Index2",siString, , 0, 5,true,false
oPset.AddParameter3"R_Index3",siString, , 0, 5,true,false
oPset.AddParameter3"R_Index_Eff",siString, , 0, 5,true,false

'---------------------------------------------------------------

oPset.AddParameter3"L_Middle_Root",siString, , 0, 5,true,false
oPset.AddParameter3"L_Middle1",siString, , 0, 5,true,false
oPset.AddParameter3"L_Middle2",siString, , 0, 5,true,false
oPset.AddParameter3"L_Middle3",siString, , 0, 5,true,false
oPset.AddParameter3"L_Middle_Eff",siString, , 0, 5,true,false

oPset.AddParameter3"R_Middle_Root",siString, , 0, 5,true,false
oPset.AddParameter3"R_Middle1",siString, , 0, 5,true,false
oPset.AddParameter3"R_Middle2",siString, , 0, 5,true,false
oPset.AddParameter3"R_Middle3",siString, , 0, 5,true,false
oPset.AddParameter3"R_Middle_Eff",siString, , 0, 5,true,false

'--------------------------------------------------------------

oPset.AddParameter3"L_Ring_Root",siString, , 0, 5,true,false
oPset.AddParameter3"L_Ring1",siString, , 0, 5,true,false
oPset.AddParameter3"L_Ring2",siString, , 0, 5,true,false
oPset.AddParameter3"L_Ring3",siString, , 0, 5,true,false
oPset.AddParameter3"L_Ring_Eff",siString, , 0, 5,true,false

oPset.AddParameter3"R_Ring_Root",siString, , 0, 5,true,false
oPset.AddParameter3"R_Ring1",siString, , 0, 5,true,false
oPset.AddParameter3"R_Ring2",siString, , 0, 5,true,false
oPset.AddParameter3"R_Ring3",siString, , 0, 5,true,false
oPset.AddParameter3"R_Ring_Eff",siString, , 0, 5,true,false

'----------------------------------------------------------------

oPset.AddParameter3"L_Pinky_Root",siString, , 0, 5,true,false
oPset.AddParameter3"L_Pinky1",siString, , 0, 5,true,false
oPset.AddParameter3"L_Pinky2",siString, , 0, 5,true,false
oPset.AddParameter3"L_Pinky3",siString, , 0, 5,true,false
oPset.AddParameter3"L_Pinky_Eff",siString, , 0, 5,true,false

oPset.AddParameter3"R_Pinky_Root",siString, , 0, 5,true,false
oPset.AddParameter3"R_Pinky1",siString, , 0, 5,true,false
oPset.AddParameter3"R_Pinky2",siString, , 0, 5,true,false
oPset.AddParameter3"R_Pinky3",siString, , 0, 5,true,false
oPset.AddParameter3"R_Pinky_Eff",siString, , 0, 5,true,false

'-------------------------------------------------------------



'これからレイアウトしますよーみたいなの
set oPPGLayout = oPSet.PPGLayout

'page1というタブを作る。タブ2を作らないと出ないから注意
oPPGLayout.AddTab "Body"


'-------------------------------------

oPPGLayout.AddGroup "Spine", true
oPPGLayout.AddItem "SpineRoot"
oPPGLayout.AddItem "Spine1"
oPPGLayout.AddItem "Spine2"
oPPGLayout.AddItem "Spine3"
oPPGLayout.AddItem "Spine_Eff"
oPPGLayout.EndGroup

'--------------------------------------

oPPGLayout.AddGroup "Head", true
oPPGLayout.AddItem "Neck_Root"
oPPGLayout.AddItem "Neck"
oPPGLayout.AddItem "Head"
oPPGLayout.AddItem "Head_Eff"
oPPGLayout.EndGroup

'--------------------------------------

oPPGLayout.AddGroup "Leg", true

oPPGLayout.AddRow

oPPGLayout.AddGroup "L_Leg", true
oPPGLayout.AddItem "L_leg_Root"
oPPGLayout.AddItem "L_Thigh"
oPPGLayout.AddItem "L_Shin"
oPPGLayout.AddItem "L_leg_Eff"
oPPGLayout.EndGroup

oPPGLayout.AddGroup "R_Leg", true
oPPGLayout.AddItem "R_leg_Root"
oPPGLayout.AddItem "R_Thigh"
oPPGLayout.AddItem "R_Shin"
oPPGLayout.AddItem "R_leg_Eff"
oPPGLayout.EndGroup

oPPGLayout.EndRow

oPPGLayout.EndGroup


'-----------------------------------------
oPPGLayout.AddGroup "Foot", true

oPPGLayout.AddRow

oPPGLayout.AddGroup "L_foot", true
oPPGLayout.AddItem "L_Foot_Root"
oPPGLayout.AddItem "L_Foot"
oPPGLayout.AddItem "L_Toe"
oPPGLayout.AddItem "L_Toe_Eff"
oPPGLayout.EndGroup

oPPGLayout.AddGroup "R_foot", true
oPPGLayout.AddItem "R_Foot_Root"
oPPGLayout.AddItem "R_Foot"
oPPGLayout.AddItem "R_Toe"
oPPGLayout.AddItem "R_Toe_Eff"
oPPGLayout.EndGroup

oPPGLayout.EndRow

oPPGLayout.EndGroup

'-----------------------------------------
oPPGLayout.AddGroup "Shoulder", true

oPPGLayout.AddRow

oPPGLayout.AddGroup "L_Shoulder", true
oPPGLayout.AddItem "L_Shoulder_Root"
oPPGLayout.AddItem "L_Shoulder"
oPPGLayout.AddItem "L_Shoulder_Eff"
oPPGLayout.EndGroup

oPPGLayout.AddGroup "R_Shoulder", true
oPPGLayout.AddItem "R_Shoulder_Root"
oPPGLayout.AddItem "R_Shoulder"
oPPGLayout.AddItem "R_Shoulder_Eff"
oPPGLayout.EndGroup

oPPGLayout.EndRow

oPPGLayout.EndGroup

'----------------------------------------
oPPGLayout.AddGroup "Arm", true

oPPGLayout.AddRow

oPPGLayout.AddGroup "L_Arm", true
oPPGLayout.AddItem "L_Arm_Root"
oPPGLayout.AddItem "L_Bicept"
oPPGLayout.AddItem "L_Forearm"
oPPGLayout.AddItem "L_Arm_Eff"
oPPGLayout.EndGroup

oPPGLayout.AddGroup "R_Arm", true
oPPGLayout.AddItem "R_Arm_Root"
oPPGLayout.AddItem "R_Bicept"
oPPGLayout.AddItem "R_Forearm"
oPPGLayout.AddItem "R_Arm_Eff"
oPPGLayout.EndGroup

oPPGLayout.EndRow

oPPGLayout.EndGroup
'------------------------------------------
oPPGLayout.AddGroup "Hand", true

oPPGLayout.AddRow

oPPGLayout.AddGroup "L_Hand", true
oPPGLayout.AddItem "L_Hand_Root"
oPPGLayout.AddItem "L_Hand"
oPPGLayout.AddItem "L_Hand_Eff"
oPPGLayout.EndGroup

oPPGLayout.AddGroup "R_Hand", true
oPPGLayout.AddItem "R_Hand_Root"
oPPGLayout.AddItem "R_Hand"
oPPGLayout.AddItem "R_Hand_Eff"
oPPGLayout.EndGroup

oPPGLayout.EndRow

oPPGLayout.EndGroup


'------------------------------------------
'------------------------------------------


oPPGLayout.AddTab "Finger"


'------------------------------------------
'------------------------------------------

oPPGLayout.AddGroup "Thumb", true

oPPGLayout.AddRow

oPPGLayout.AddGroup "L_Thumb", true
oPPGLayout.AddItem "L_Thumb_Root"
oPPGLayout.AddItem "L_Thumb1"
oPPGLayout.AddItem "L_Thumb2"
oPPGLayout.AddItem "L_Thumb3"
oPPGLayout.AddItem "L_Thumb_Eff"
oPPGLayout.EndGroup

oPPGLayout.AddGroup "R_Thumb", true
oPPGLayout.AddItem "R_Thumb_Root"
oPPGLayout.AddItem "R_Thumb1"
oPPGLayout.AddItem "R_Thumb2"
oPPGLayout.AddItem "R_Thumb3"
oPPGLayout.AddItem "R_Thumb_Eff"
oPPGLayout.EndGroup

oPPGLayout.EndRow

oPPGLayout.EndGroup
'-----------------------------------------
oPPGLayout.AddGroup "Index", true

oPPGLayout.AddRow

oPPGLayout.AddGroup "L_Index", true
oPPGLayout.AddItem "L_Index_Root"
oPPGLayout.AddItem "L_Index1"
oPPGLayout.AddItem "L_Index2"
oPPGLayout.AddItem "L_Index3"
oPPGLayout.AddItem "L_Index_Eff"
oPPGLayout.EndGroup

oPPGLayout.AddGroup "R_Index", true
oPPGLayout.AddItem "R_Index_Root"
oPPGLayout.AddItem "R_Index1"
oPPGLayout.AddItem "R_Index2"
oPPGLayout.AddItem "R_Index3"
oPPGLayout.AddItem "R_Index_Eff"
oPPGLayout.EndGroup

oPPGLayout.EndRow

oPPGLayout.EndGroup
'--------------------------------------------
oPPGLayout.AddGroup "Middle", true

oPPGLayout.AddRow

oPPGLayout.AddGroup "L_Middle", true
oPPGLayout.AddItem "L_Middle_Root"
oPPGLayout.AddItem "L_Middle1"
oPPGLayout.AddItem "L_Middle2"
oPPGLayout.AddItem "L_Middle3"
oPPGLayout.AddItem "L_Middle_Eff"
oPPGLayout.EndGroup

oPPGLayout.AddGroup "R_Middle", true
oPPGLayout.AddItem "R_Middle_Root"
oPPGLayout.AddItem "R_Middle1"
oPPGLayout.AddItem "R_Middle2"
oPPGLayout.AddItem "R_Middle3"
oPPGLayout.AddItem "R_Middle_Eff"
oPPGLayout.EndGroup

oPPGLayout.EndRow

oPPGLayout.EndGroup
'----------------------------------------------
oPPGLayout.AddGroup "Ring", true

oPPGLayout.AddRow

oPPGLayout.AddGroup "L_Ring", true
oPPGLayout.AddItem "L_Ring_Root"
oPPGLayout.AddItem "L_Ring1"
oPPGLayout.AddItem "L_Ring2"
oPPGLayout.AddItem "L_Ring3"
oPPGLayout.AddItem "L_Ring_Eff"
oPPGLayout.EndGroup

oPPGLayout.AddGroup "R_Ring", true
oPPGLayout.AddItem "R_Ring_Root"
oPPGLayout.AddItem "R_Ring1"
oPPGLayout.AddItem "R_Ring2"
oPPGLayout.AddItem "R_Ring3"
oPPGLayout.AddItem "R_Ring_Eff"
oPPGLayout.EndGroup

oPPGLayout.EndRow

oPPGLayout.EndGroup
'------------------------------------------------
oPPGLayout.AddGroup "Pinky", true

oPPGLayout.AddRow

oPPGLayout.AddGroup "L_Pinky", true
oPPGLayout.AddItem "L_Pinky_Root"
oPPGLayout.AddItem "L_Pinky1"
oPPGLayout.AddItem "L_Pinky2"
oPPGLayout.AddItem "L_Pinky3"
oPPGLayout.AddItem "L_Pinky_Eff"
oPPGLayout.EndGroup

oPPGLayout.AddGroup "R_Pinky", true
oPPGLayout.AddItem "R_Pinky_Root"
oPPGLayout.AddItem "R_Pinky1"
oPPGLayout.AddItem "R_Pinky2"
oPPGLayout.AddItem "R_Pinky3"
oPPGLayout.AddItem "R_Pinky_Eff"
oPPGLayout.EndGroup

oPPGLayout.EndRow

oPPGLayout.EndGroup

'---------------------------------------------


'パラメーターを開く

InspectObj oPSet


condの使い方


画像のようなシーンを作る。


Null1のRotZ

cond( null.kine.local.rotz <= 0, null.kine.local.rotz, 0 )


Null2のRotZ

cond( null.kine.local.rotz >= 0, null.kine.local.rotz, 0 )


二つのヌルにエクスプレッションをかける。


Nullを動かすと二つの角を中心に回転する


cond

腕とかのボーンを描いた場合、引っ張って戻すとパキつく現象が起こる。

それを回避するためにRotationLimitを設定する。



boneを選んでEnterでKinematicsJointパラメーターが開く。そこのRotationLimitを設定する。


ctl+KでKinematicsパラメータが開いてそこにもRot.Limitとうのがあるが上記のやつの方がやりやすい?と思う

'
' たとえば、各種Enum Controlsを例証します
'

set oCustomProperty = ActiveSceneRoot.AddProperty( "CustomProperty", false, "EnumControls" )

'カスタムパラメータを作成し、デフォルト値を設定します
oCustomProperty.AddParameter3 "MyCombo", siString, "Yellow"
oCustomProperty.AddParameter3 "MyBitField", siUByte, 68
oCustomProperty.AddParameter3 "MyRadio", siInt4
oCustomProperty.AddParameter3 "NotShown", siInt4


'レイアウトを定義します
set oLayout = oCustomProperty.PPGLayout


'コンボボックスではラベルと値は同じにします
'これは、実際にはユーザがパラメータ値として選択する文字列を
'設定するためです

dim aComboItems, aBitfieldItems, aRadioItems

aComboItems = Array( "Orange", "Orange", _
"Yellow", "Yellow", _
"Apple", "Apple" )

oLayout.AddEnumControl "MyCombo", aComboItems, "Things", siControlCombo


' ビットフィールドの値は、通常は2の累乗にします
' 値の順番は任意です

aBitfieldItems = Array( "Bit 0", 1, _
"Bit 6", 64, _
"Bit 2", 4, _
"Bit 7", 128 )

oLayout.AddEnumControl "MyBitField", aBitfieldItems, , siControlCheck


' ユーザオプションの数が少ない場合は、コンボボックスではなく
' ラジオボタンを使用する方法もお勧めします

aRadioItems = Array( "Slow", 0, _
"Fast", 1 )

oLayout.AddEnumControl "MyRadio", aRadioItems, , siControlRadio

InspectObj oCustomProperty

dim oPSet,oPPGLayout, oItem


'Demoというパラメーターをセット
set oPSet=ActiveSceneRoot.AddProperty("CustomProperty",false,"Demo")


'パラメーターを作る。3.5より特殊

oPset.AddParameter3 "MyCombo", siString, "Yellow"

'これからレイアウトしますよーみたいなの
set oPPGLayout = oPSet.PPGLayout


'コンボボックスを表示。MyComboに項目を足す。Arrayで加えるかんじ
aComboItems = Array( "Orange", "Orange","Yellow", "Yellow","Apple", "Apple" )

oPPGLayout.AddEnumControl "MyCombo", aComboItems, "Things", siControlCombo


'上の最後の部分をこの3つのどれかに変えるとレイアウトが変わる
'siControlCombo siControlListBox siControlRadio


'パラメーターを開く

InspectObj oPSet

ビューの表示を切り替える

"activecamera:○"を変えると各ビューに対応する


Set VM = Desktop.ActiveLayout.Views.Item("VM")
VM.SetAttributeValue "activecamera:a", "user"