v1.0
エンベロープ ポイントのウェイト付けを変更します。エンベロープは、IK チェインなどのデフォーマのセットに「スキン」として割り当てられるオブジェクトまたは階層です。エンベロープは、エンベロープのデフォーマの動きに応じて動いたりデフォームします。たとえば、文字のスケルトンをアニメートすると、そのとおりに文字が動きます。
エンベロープの各ポイントは、1 つまたは複数のデフォーマに割り当てられます。各ポイントに対し、ウェイトはデフォーマの相対的な影響をコントロールします。
注: エンベロープのウェイトをより高速に設定できる可能性がある代替の方法は、オブジェクト モデルを使用する方法です。「Envelope.Weights」を参照してください。
oReturn = SIModifyFlexEnvWght( PropObj, Name, [SubComp], [Mode], [Value], [Normalize] ); |
新しいエンベロープオペレータを含むXSICollection を戻します。
パラメータ | タイプ | 説明 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
PropObj | 文字列 | 変更するエンベロープ ウェイト プロパティ | ||||||||
Name | 文字列 | デフォーマ オブジェクトの名前。 このオブジェクトに関連するウェイト値は変更されます。 | ||||||||
SubComp | 文字列 |
ポイントのリスト。 デフォルト値: 現在選択されている値 |
||||||||
Mode | Integer |
ウェイト変更モード デフォルト値: 0 (絶対)
|
||||||||
Value | 浮動小数 |
指定のポイントに適用されるウェイト値 注: ウェイトの有効な値の範囲は、0 ~ 100.0 です。いずれかのデフォーマのウェイトを変更すると、合計のウェイトは常に 100% なので、他のデフォーマ ウェイトにも影響があります。 デフォルト値: 100.0
|
||||||||
Normalize | Boolean |
デフォーマ間のウェイトを正規化します。 デフォルト値: True |
'CreateSinusoidalEnvelope: creates an envelope over 2 Nulls, 'with a customized, special wave-like weight assignment. ' 'A generic subroutine was created; it can handle any mesh as input. Sub CreateSinusoidalEnvelopeAssign( Object, out_Null0, out_Null1 ) 'Create the two envelope "handles" Set out_Null0 = GetPrim("Null") Set out_Null1 = GetPrim("Null") 'Envelope the object with the 2 Nulls Set EnvelopeWeightsAssign =_ ApplyFlexEnv(Object & ";" & out_Null0 & "," & out_Null1, False) Set EnvelopeWeightsProperty = _ GetValue( CStr( EnvelopeWeightsAssign ) ).Owners(0) 'Reset all weights to 100% for Null0 and 0% for Null1 '(use absolute mode), with normalize ON SIModifyFlexEnvWght EnvelopeWeightsProperty, out_Null0,_ Object & ".pnt[*]", 0, 100, True 'Get object's points collection Set Points = Object.ActivePrimitive.Geometry.Points NbPts = Points.Count for i = 0 to NbPts - 1 'We will set the weight of out_Null1 as '"(1 + Sin(Z Coord of the point))*100/8" (or any formula). 'We will user the additive mode in SIModifyFlexEnvWght. Weight = (1 + Sin(Points(i).position.z * 2.0))*50 SIModifyFlexEnvWght EnvelopeWeightsProperty, out_Null1,_ Object & ".pnt[" & i & "]", 1, Weight next End Sub 'Call CreateSinusoidalEnvelopeAssign with a Grid. 'Then move one of the 2 Null deformers in order to see the effect. NewScene Set Grid = CreatePrim("Grid", "MeshSurface") SetValue Grid & ".polymsh.geom.subdivu", 1 SetValue Grid & ".polymsh.geom.subdivv", 30 CreateSinusoidalEnvelopeAssign Grid, Null0, Null1 'Translate Null1 to see the effect of the special weighting 'You can move Null1 to see more... Translate Null1, 3, 0.0, 0.0, siRelative, siView, siObj, siXYZ 'Let's show the weight maps so you can see what was computed: SetDisplayMode "Views.ViewA.TopCamera", "constant" SetValue "Views.ViewA.TopCamera.camvis.objctrlpropmaps", True SelectObj "grid", , True |