今回はConstarintを設定する方法を書きます。

まず、任意のConstraintを作るときには、FBConstraintmanagerクラスを使う必要があります。

 

 

■Constraintの生成

[python]
from pyfbsdk import FBConstraintManager

lMgr = FBConstraintManager()

for lIdx in range(lMgr.TypeGetCount()):
lConst = lMgr.TypeCreateConstraint( lIdx )

[/python]

ここでは全Constraintを生成しています。

TypeGetCount()を使うことでConstraintの種類の総数を取得できます。

また、TypeCreateConstraintの第一引数はInt型か、stringを渡すことで各種Constarintを設定できます。

 

 

■TypeCreateConstraintの対応表

Index string
0 Aim
1 Expression
2 Multi Referential
3 Parent/Child
4 Path
5 Position
6 Range
7 Relation
8 Rigid Body
9 3 Points
10 Rotation
11 Scale
12 Mapping
13 Chain IK

stringは生成したいConstraint名を渡す事で目的のConstraintが生成できます。

 

 

さて、本番はこれからなのですが、

MB2010では生成したConstarintのsourceに何も関連付けられていないとUI上では確かに存在するPropertyが見つけれません。

Constrained object (Child) のPropertyがPropertyListでなぜか見つけることができません。

13_Constraint_01

ちなみにMBのサンプルスクリプトにあるPropertyDrop.pyを使っても、MB2010同様にMB2014でも見つけれませんでした。

ということは、

PropetyListにPropertyが存在せず自分でPropertyを追加しなければ使い物にならないはず。。。。

念のためPropertyListをpythonで全表示してみましょう。

13_Constraint_02

。。。(´゚д゚`)ポカーン

2014では問題ないですね(

それじゃ気兼ねなくconstraintを組みましょう

 

 

■Constraintを設定する

[python]
from pyfbsdk import FBConstraintManager,FBModelList,FBGetSelectedModels

lMgr = FBConstraintManager()
lConst = lMgr.TypeCreateConstraint("Parent/Child")
lPropertyName = "Constrained object (Child)"
lMdlList = FBModelList()
FBGetSelectedModels( lMdlList )

lConst.PropertyList.Find(lPropertyName).append(lMdlList[0])
lConst.Active = True
lConst.Lock = True
[/python]

現在選択されているFBModelをConstrained object (Child)に追加するスクリプトです。

なお、生成された直後ではConstrainはActiveとLockにチェックが入っていません。

UI上に存在するConstraint Settings中の項目名がそのままPropertyListに存在します。