カスタム アトリビュートを追加する

   

custAttributes.add <object_or_collection> <attributes_definition> [		#unique] [		BaseObject:<bool>] 	 

オブジェクトまたはコレクションにアトリビュートのセットを追加します。特定のアトリビュート定義のカスタム アトリビュート セットのうち、オブジェクトに追加できるのは 1 つだけです。ただし、異なる複数の定義から取得したさまざまなアトリビュートを、必要な数だけ持つことができます。 

   

#unique 

custAttributes.add() 関数を使ってオブジェクトにカスタム アトリビュートを追加する場合、オプションの #unique キーワードを 3 番目の引数として指定できます。これを実行する場合、追加先の各オブジェクトには、定義の独自プライベート コピーを含むカスタム アトリビュートが追加されることになるため、元の定義は共有 されません 。元のアトリビュート定義を後で再定義しても、これらのカスタム アトリビュートは更新されません。個々のオブジェクトのアトリビュートを更新するには、 custAttributes.getDef を使ってオブジェクトから一意の定義を取得し、次の 2 つの方法のいずれかを使用して再定義します。

注:一意に追加された定義を抽出して、一意でない custAttributes.add() で、他のオブジェクトに対し直接使用する場合には、定義の共有が設定されます。グローバル定義を追加する際に #unique を使用すると、追加されるカスタム アトリビュートは非グローバルになり、独自のプライベート定義を持つようになります。このプライベート定義は元のグローバル定義と同じになります。

   

BaseObject:<bool> 

オプションのキーワード引数 baseObject true (既定値)に設定されている場合、指定されているオブジェクトがノードであれば、そこでは基本オブジェクトが動作します。 false の場合、ノードそのものがそこで動作します。

注:3ds Max 5.1 より前のバージョンでは、基本オブジェクトが常に使用されていました。

custAttributes.add $weapon01 weaponData

[修正](Modify)パネルで $weapon01 を開くと、「Weapon Parameters」ロールアウトが表示されます。これらのパラメータは、通常のオブジェクト パラメータと同じように編集できます。アトリビュート定義を使用して、定義済みのアトリビュート セットをいつでもオブジェクトに追加できます。スクリプト プラグインの場合と同様に、適切なタイプであればどのパラメータでもアニメートできます。

custAttributes.add() 関数をオブジェクト コレクションに適用して、オブジェクト グループにアトリビュート セットを一度に追加することができます。

custAttributes.add $weapon* the_weaponData

これらのカスタム アトリビュートの個々のセットを、名前が「weapon」で始まるシーン内のすべてのオブジェクトに追加します。

注:

さらに、オブジェクトは、異なるアトリビュート定義から追加されたカスタム アトリビュート セットを、任意の数だけ別個に保持できます。

スクリプト プラグイン と同様に、アトリビュート定義はパラメータおよびロールアウト句のセットを任意の数だけ保持できるため、追加されたアトリビュートを必要に応じて複数のロールアウトに整理できます。

MAXScript では、オブジェクトまたはモディファイヤに追加されたスクリプト カスタム アトリビュートにアクセスできます。これらには、追加先のオブジェクトのプロパティとして直接アクセスできます。カスタム アトリビュートのすべての名前がホスト オブジェクトの既存のプロパティと同じ名前の場合、カスタム アトリビュートに直接アクセスしようとしても、カスタム アトリビュートは実際には表示されません。代わりに、そのアトリビュート定義名によって追加された各カスタム アトリビュート ブロックにアクセスできます。その際、個々のアトリビュートにはブロック内のプロパティとしてアクセスできます。

次のアトリビュートを $box01 に追加した場合

the_weaponData = attributes weaponData
(
parameters main rollout:params
(
hitPoints type: #float ui:hits default:10
cost type: #float ui:cost default:100
sound type: #string
)
rollout params "Weapon Parameters"
( 
	 spinner hits "Hit Points" type: #float
  spinner cost "Cost" type: #float
  dropdownlist sound_dd "Sound" items:# ("boom","sparkle","zap","fizzle")
 )
)

カスタム アトリビュートには次のようにアクセスできます。

$box01.hitPoints 
$box01.cost 
$box01.sound 

また、アトリビュート ブロックから間接的にアクセスすることもできます。

$box01.weaponData.hitPoints 
$box01.weaponData.cost 
$box01.weaponData.sound 

次のトピック

グローバルおよびプライベート カスタム アトリビュートの定義

関連事項