# Nintendo Confidential

## 15. EnvelopeList

### (1) EnvelopeList

> u32 envelope_list_tag | EnvelopeListを示すタグを記述します。下記のタグを設定してください。
>     TAG_ENVELOPE_LIST       0x00220000
> u32 envelope_list_header_size | EnvelopeListHeaderのバイト数を記述します。
> u32 envelope_list_size | EnvelopeListのバイト数を記述します。
> u32 envelope_num | Envelope数を記述します。
> u32 envelope_size | Envelopeのバイト数を記述します。
> Envelope | Envelopeエリアです。

> Appendix ... about Envelope System

> Go to the data chunk

> Go back to the index

### (2) Envelope

> u32 envelope_tag | Envelopeを示すタグを記述します。下記のタグを設定してください。
>     TAG_ENVELOPE            0x00220100
> u32 this_envelope_index | Envelopeのインデックス番号を記述します。
> u32 envelope_size | Envelopeのバイト数を記述します。
> u32 envelope_name_index | Envelope名をNameList内のインデックス番号で指定します。
> u32 envelope_type | 0x0
> u32 full_weighted_part_num | FullweightedPart数を記述します。
> u32 weighted_part_num | WeightedPart数を記述します。
> u32 morph_part_num | MorphPart数を記述します。
> u32 envelope_tri_num | EnvelopeTri数を記述します。
> FullWeightedPart | Envelope内でWeightがすべて100%の頂点の集合をFullWeightPartとします。
> WeightedPart | 通常のEnvelopeで表される頂点の集合をWeightedPartとします。
> MorphPart | Envelope内で一軸周りの回転にのみ影響を受ける頂点の集合をMorphPartとします。
> EnvelopeTri | Envelope内のいずれかのパートに属する頂点を使用した1ポリゴンを表します。

> Appendix ... about Envelope System

> Go to the data chunk

> Go back to the index

### (3) FullWeightedPart

> u32 full_weighted_part_tag | FullWeightedPartを示すタグを記述します。下記のタグを指定してください。
>     TAG_FULL_WEIGHTED_PART  0x00220110
> u32 this_full_weighted_part_index | このEnvelope内でのFullWeightedPartのインデックス番号を記述します。
> u32 full_weighted_part_size | FullWeightedPartのバイト数を記述します。
> u32 full_weighted_part_name_index | このFullWeightedPart名をNameList内のインデックス番号で記述します。
> u32 kind_of_transform_node_full | パートが影響を受けるノードの種類を下記のタグで記述します。
>     TAG_OBJ_LIST            0x00020000
>     TAG_CHAIN_ROOT_LIST     0x00240000
>     TAG_JOINT_LIST          0x00250000
>     TAG_EFFECTOR_LIST       0x00260000
> 外部参照する場合は0xffffffffを記述してください。
> u32 transform_node_index_full | パートが影響を受けるノードのインデックス番号を記述します。 外部参照する場合は0xffffffffを記述してください。
> u32 external_transform_obj_file_name_index | FullWeightedPartが影響を受けるObjを外部ファイル参照する場合、そのファイル名をExternalNameListのインデックス番号で記述します。 ファイル名はディレクトリ名などを含まない形で記述してください。 外部参照しない場合は0xffffffffを記述してください。
> u32 external_transform_obj_name_index | FullWeightedPartが影響を受けるObjを外部ファイル参照する場合、そのObj名をExternalNameList内のインデックス番号で記述します。 外部参照しない場合は0xffffffffを記述してください。
> u32 full_weighted_vtx_group_index | このパート内の頂点座標を指定するVtxGroupのインデックス番号を記述します。
> u32 full_weighted_vtx_nv_group_index | このパート内の頂点の法線ベクトルを指定するVtxNvGroupのインデックス番号を記述します。
> u32 full_weighted_tri_nv_group_index | このパート内のポリゴンの法線ベクトルを指定するTriNvGroupのインデックス番号を記述します。
> u32 full_weighted_vtx_color_group_index | このパート内の頂点カラーを指定するVtxColorGroupのインデックス番号を記述します。
> u32 full_weighted_tri_color_group_index | このパート内のポリゴンのカラーを指定するTriNvGroupのインデックス番号を記述します。
> u32 full_weighted_st_group_index | このパート内の頂点のST値を指定するStGroupのインデックス番号を記述します。

> Appendix ... about Envelope System

> Go to the data chunk

> Go back to the index

### (4) WeightedPart

> u32 weighted_part_tag | WeightedPartを示すタグを記述します。下記のタグを指定してください。
>     TAG_WEIGHTED_PART       0x00220120
> u32 this_weighted_part_index | このWeightedPartのインデックス番号を記述します。
> u32 weighted_part_size | WeightedPartのバイト数を記述します。
> u32 weighted_part_name_index | WeightedPart名をNameList内のインデックス番号で記述します。
> u32 affected_node_num | このPart内の頂点に影響を与えるノード数を記述します。
> u32 weight_st_group_index | このパートの頂点を示すStGroupのインデックス番号を記述します。
> u32 external_affected_obj_num | 外部ファイル参照するWeightedPartが影響を受けるObj数を記述します。
> u32 kind_of_affected_node | このPart内の頂点に影響を与えるノードの種類を下記のタグで記述します。
>     TAG_OBJ_LIST            0x00020000
>     TAG_CHAIN_ROOT_LIST     0x00240000
>     TAG_JOINT_LIST          0x00250000
>     TAG_EFFECTOR_LIST       0x00260000
> u32 affected_node_index | このPart内の頂点に影響を与えるノードのインデックス番号を記述します。
> u32 external_affected_obj_file_name_index | このWeightedPartが影響を受けるObjを外部ファイル参照する場合、そのファイル名をExternalNameListのインデックス番号で示します。 ファイル名はディレクトリ名などを含まない形で記述してください。 外部ファイル参照しない場合(external_affected_obj_num = 0)はこのフィールドは記述されません。
> u32 external_affected_obj_name_index | このWeitedPartが影響を受けるObjを外部ファイル参照する場合、そのObj名をExternalNameList内のインデックス番号で記述します。 外部ファイル参照しない場合(external_affected_obj_num = 0)はこのフィールドは記述されません。
> u32 weight_group_index | それぞれの頂点がノードから受ける影響のweight値を示すWeightGroupのインデックス番号を記述します。 なお、対応する頂点について各WeightGroup内でのインデックスが同じになるようにweight値を格納してください。
> u32 weight_vtx_group_index | このパートの頂点を示すVtxGroupのインデックス番号を記述します。 なお、対応する頂点について各VtxGroup内でのインデックスが同じになるようにvertex を格納してください。
> u32 weight_vtx_nv_group_index | このパートの頂点を示すVtxNvGroupのインデックス番号を記述します。 なお、対応する頂点について各VtxNvGroup内でのインデックスが同じになるようにvertex normalを格納してください。
> u32 weight_tri_nv_group_index | このパートの頂点を示すTriNvGroupのインデックス番号を記述します。 なお、対応するtriangleについて各TriNvGroup内でのインデックスが同じになるようにtriangle normalを格納してください。
> u32 weight_vtx_color_group_index | このパートの頂点を示すVtxColorGroupのインデックス番号を記述します。 なお、対応する頂点について各VtxColorGroup内でのインデックスが同じになるようにvertex colorを格納してください。
> u32 weight_tri_color_group_index | このパートの頂点を示すTriNvGroupのインデックス番号を記述します。 なお、対応するtriangleについて各TriColorGroup内でのインデックスが同じになるようにtriangle colorを格納してください。

> Appendix ... about Envelope System

> Go to the data chunk

> Go back to the index

### (5) MorphPart

> u32 morph_part_tag | MorphPartを示すタグを記述します。下記のタグを指定してください。
>     TAG_MORPH_PART          0x00220130
> u32 this_morph_part_index | このMorphPartのインデックス番号を記述します。
> u32 morph_part_size | MorphPartのバイト数を記述します。
> u32 morph_part_name_index | MorphPart名をNameList内のインデックス番号で記述します。
> u32 kind_of_node0 u32 kind_of_node1 | このパートが影響を受けるノードの種類を下記のタグで記述します。
>     TAG_OBJ_LIST            0x00020000
>     TAG_JOINT_LIST          0x00250000
> 外部参照する場合は0xffffffffを記述してください。
> u32 node_index0 u32 node_index1 | このパートが影響を受けるノードのインデックス番号を記述します。 外部参照する場合は0xffffffffを記述してください。
> u32 external_obj0_file_name_index u32 external_obj1_file_name_index | このMorphPartが影響を受けるObjを外部ファイル参照する場合、そのファイル名をExternalNameListのインデックス番号で指定します。 ファイル名はディレクトリ名などを含まない形で記述してください。 外部ファイル参照しない場合は0xffffffffを指定してください。
> u32 external_obj0_name_index u32 external_obj1_name_index | このMorphPartが影響を受けているObjを外部ファイル参照する場合、そのObj名をExternalNameList内のインデックス番号で記述します。 外部ファイル参照しない場合は 0xffffffffを指定してください。
> u32 morph_st_group_index | このパートで指定するStGroupのインデックス番号をテーブルに応じて記述します。
> u32 table_num | このパートは２つのノードの間の角度を指定された数で分割して、それをテーブルとして頂点が影響を受けます。その分割数を記述します。9, 17, 33, 65のうちのいずれかを記述してください。
> u32 morph_vtx_group_index | このパートで指定するVtxGroupのインデックス番号をテーブルに応じて記述します。 なお、VtxGroup中の値はnode_index0で示されたノードに対する座標値です。
> u32 morph_vtx_nv_group_index | このパートで指定するVtxNvGroupのインデックス番号をテーブルに応じて記述します。 なお、VtxNvGroup中の値はnode_index0で示されたノードに対する法線ベクトルの値です。
> u32 morph_tri_nv_group_index | このパートで指定するTriNvGroupのインデックス番号をテーブルに応じて記述します。 なお、TriNvGroup中の値はnode_index0で示されたノードに対する法線ベクトルの値です。
> u32 morph_vtx_color_group_index | このパートで指定するVtxColorGroupのインデックス番号をテーブルに応じて記述します。
> u32 morph_tri_color_group_index | このパートで指定するTriColorGroupのインデックス番号をテーブルに応じて記述します。

> Appendix ... about Envelope System

> Go to the data chunk

> Go back to the index

### (6) EnvelopeTri

> u32 envelope_tri_tag | EnvelopeTriを示すタグを記述します。下記のタグを設定してください。
>     TAG_ENVELOPE_TRI       0x00220180
> u32 this_envelope_tri_index | EnvelopeTriのインデックス番号を記述します。
> u32 envelope_tri_size | EnvelopeTriのバイト数を記述します。
> u32 kind_of_envelope_for_tri | tri_nv_index, tri_color_indexに使用されるエンベロープのパートの種類を下記のタグで記述します。
>     TAG_FULL_WEIGHTED_PART  0x00220110
>     TAG_WEIGHTED_PART       0x00220120
>     TAG_MORPH_PART          0x00220130
> u32 envelope_part_index_for_tri | tri_nv_index, tri_color_indexに使用されるエンベロープのパートのインデックス番号を記述します。
> u32 tri_nv_index | このtriangleの法線ベクトルのインデックス番号を記述します。 なお、CGツール上で四角形以上のpolygonを自動分割する場合、生成された各トライアングルに関して同じインデックスを示すようにデータを出力してください。
> u32 tri_color_index | このtriangleのカラーを指定します。 なお、CGツール上で四角形以上のpolygonを自動分割する場合、生成された各トライアングルに関して同じインデックスを示すようにデータを出力してください。
> u32 weight_index_tri | このtriangleがWeightedPartの時に、そのweight値を示すWeightGroup内のインデックス番号で記述します。 このtriangleがWeightedPartで無い場合は、0xffffffffを記述してください。 なお、CGツール上で四角形以上のpolygonを自動分割する場合、生成された各トライアングルに関して同じインデックスを示すようにデータを出力してください。
> EnvelopeVtx | EnvelopeVtxエリアです。このtriangleを構成するVtxを記述します。

> Appendix ... about Envelope System

> Go to the data chunk

> Go back to the index

### (7) EnvelopeVtx

> u32 kind_of_envelope_part | この頂点のエンベロープの種類を下記のタグで記述します。
>     TAG_FULL_WEIGHTED_PART  0x00220110
>     TAG_WEIGHTED_PART       0x00220120
>     TAG_MORPH_PART          0x00220130
> u32 envelope_part_index | エンベロープパートのインデックス番号を記述します。 エンベロープパートとは、Envelope中で頂点のウェイトのかけ方によってパート分けされたFullWeightdPart、WeightedPart、MorphPartを示します。
> u32 vtx_index | 頂点のインデックス番号を記述します。
> u32 st_index | 頂点のST値のインデックス番号を記述します。
> u32 vtx_nv_index | 頂点の法線ベクトルのインデックス番号を記述します。 vtx_indexと同一になるように出力してください。
> u32 vtx_color_index | 頂点カラーのインデックス番号を記述します。
> u32 weight_index | この頂点がWeightedPartの時に、そのweight値を示すWeightGroup内のインデックス番号で記述します。 この頂点がWeightedPartで無い場合は、0xffffffffを記述してください。

> Appendix ... about Envelope System

> Go to the data chunk

> Go back to the index

Copyright 1998,1999 NINTENDO Co.,Ltd. All rights reserved.
Copyright 1998,1999 MONEGI CORPORATION All rights reserved.