AnimHandle システムは、ノード、モディファイヤ、マテリアル、コントローラなど、シーン内のすべてのエンティティに対して一意の ID 番号を定義します。エンティティをメモリから削除した場合にも、その後作成されるエンティティに対してその番号が再利用されることはありません。ただし、いわゆる「ラップアラウンド」(1 つの 3ds Max セッションで 4 億個(32 ビットの限界)のエンティティが作成された場合にのみ起こり得る異常な状態)の場合は例外です。
このため、ハンドルを使用してオブジェクトを要求し、結果が undefined であるかどうかを確認することで、オブジェクトが削除されているかどうかを判断することができます。
3ds Max 2008 以降 で使用可能です。
メソッド:
<integer>GetHandleByAnim <object>
このメソッドは、指定されたシーンエンティティに対して一意の AnimHandle ID を返します。
<object>GetAnimByHandle <integer>
このメソッドは一意の AnimHandle ID に対応するシーン エンティティを返します。エンティティが削除されている場合、またはまだ作成されていない場合には、undefined を返します。
<IntegerPtr>getAnimPointer <maxwrapper>
このメソッドは、ラップされた refTarg に対するポインタを IntegerPtr として返します。値が undefined
の場合は 0 を返します。
<maxwrapper>getAnimByPointer <IntegerPtr>
指定したポインタ アドレスに対応する maxwrapper を返します。これは、次のことを意味します。(getAnimByPointer (getAnimPointer <maxwrapper>)) == maxwrapper
この関数の主な用途は、内部での使用やデバッグです。
3ds Max 2018以降で使用可能です。
例:
x = teapot() --create a teapot xHandle = GetHandleByAnim x --get the anim.handle x_verify = GetAnimByHandle xhandle --get by anim.handle x == x_verify --compare the two -returns true delete x --delete the teapot clearUndoBuffer() --object deleted completely from memory x_verify = GetAnimByHandle xhandle --now returns undefined