constraint
コンストレイント オブジェクトに基づいて、1 つまたは複数のオブジェクトに拘束を適用します。
たとえば、他のオブジェクトの位置を元に、あるオブジェクトの位置を拘束できます。 拘束を作成したら、被コンストレイント
オブジェクトに影響のある値を変更することはできません。コンストレイント オブジェクトの値のみを変更できます。
たとえば、2 つのオブジェクト間に位置コンストレイントを適用した場合、XYZ 位置を変更できるのはコンストレイント
オブジェクトのみです。 言い換えると、コンストレイント オブジェクトの値を変更すると、被コンストレイント
オブジェクトの対応する値が自動的に変更されます。
oReturn = ApplyCns( PresetObj, [ConstrainedObj], [ConstrainingObj], [Compensation] ); |
Constraint オブジェクトを含む XSICollection を戻します。
パラメータ | タイプ | 詳細 |
---|---|---|
PresetObj | 文字列 またはプリセット オブジェクト(「SIGetPreset」を参照) | コンストレイントプリセット。 警告: Linux のプリセット名では、大文字と小文字が区別されます。 |
ConstrainedObj | 文字列 | 拘束されるオブジェクトのリスト。
変数を渡すと、コマンドは拘束されるオブジェクトの XSICollection を戻します。
デフォルト値: 選択されたオブジェクト |
ConstrainingObj | 文字列 | コンストレイント オブジェクトのリスト。
変数を渡すと、コマンドは拘束されるオブジェクトの XSICollection を戻します。
デフォルト値:ユーザが指定します。 |
Compensation | ブール | 補正をオンにする場合は True
デフォルト値: False |
' ' This example creates a little planetary scene and applies 2 constraints ' from the planet to the ring: a Position and a Scaling constraint. Then ' it removes only the Scaling constraint by using the RemoveCnsType command ' and verifies this by printing out a list of constraints on each object ' before and after removing the constraints. ' ' Create a planet that will serve as the constraining object set oPlanet = CreatePrim( "Sphere", "NurbsSurface", "Planet" ) ' Create a moon to be constrained by the planet and scale it set oMoon = CreatePrim( "Sphere", "NurbsSurface", "Moon" ) Translate oMoon, -6, 4, -5, siRelative, siView, siObj, siXYZ Scale oMoon, 0.15, 0.15, 0.15, siAbsolute, siParent, siObj, siXYZ ' Create a ring to be constrained by the planet and scale it set oRing = CreatePrim( "Disc", "NurbsSurface", "Ring" ) Scale oRing, 2.3, 1, 2.3, siAbsolute, siParent, siObj, siXYZ ' Check to see if any constraints are currently set getCnsInfo oPlanet getCnsInfo oMoon getCnsInfo oRing ' Apply a Position constraint on the ring and the moon from the planet. ' (The small sphere and the disc depend on the position of the larger sphere.) ' Notice that you have to pass the name of the object instead of its object ' variable with this command because the command changes that variable to a ' different type ApplyCns "Position", oMoon.Name & "," & oRing.Name, "Planet", true ' Check to see which constraints are currently set getCnsInfo oPlanet getCnsInfo oMoon getCnsInfo oRing ' Display the constraint relationship in all the default views and ' the default camera view. This is the equivalent of turning on ' "Relation" and "Relation Info" in the view visibility options. SetValue "Views.*.*.camvis.*constraint*", True SetValue "Camera.camvis.*constraint*", True ' This function just saves us time and typing function getCnsInfo( in_constrained_obj ) set oFoundCns = in_constrained_obj.Kinematics.Constraints if oFoundCns.Count > 0 then LogMessage "Found the following constraints on the " & in_constrained_obj & ":" for each c in oFoundCns LogMessage vbTab & c.Name next else LogMessage "No constraints found on " & in_constrained_obj end if end function ' Output of the above script: ' ' ...before applying the constraint: 'INFO : "No constraints found on Planet" 'INFO : "No constraints found on Moon" 'INFO : "No constraints found on Ring" ' ' ...after applying the constraint: 'INFO : "No constraints found on Planet" 'INFO : "Found the following constraints on the Moon:" 'INFO : " Position Cns" 'INFO : "Found the following constraints on the Ring:" 'INFO : " Position Cns" |