ファイルフォーマット

ページ作成日 :

エルフレイナ独自のファイル内部の形式を説明します。

[.elp]ファイル

エルフレイナで出力するプロジェクトファイルです。このファイルはエルフレイナのバージョンによってパラメータなどが変わることが多いので載せていません。

ファイル形式

テキストファイルです。

文字コード

ファイルの文字コードは「UTF-8」です。

[.elem]ファイル

「エルフレイナ拡張モデルファイル」です。「モデルデータ」「階層構造」「レンダリングメッシュリスト」「アニメーションデータ」を含むことが出来ます。

対応エルフレイナバージョン

エルフレイナ Ver1.1 時点でのフォーマットです。

ファイル形式

テキストファイルです。

文字コード

ファイルの文字コードは「UTF-8」です。

テキストの基本形式

「.elp」「.elem」ファイルともにテキストの構成は下のようになっています。

Elfreina Extension Model File
File Version 1.00
MeshDatas {
    MeshContainerCount=1
    MeshContainer {
        Name="ルーン"
        MeshCount=12
        VertexFormat {
            "Position"
            "Normal"
            "Texture1"
        }
    }
}

ヘッダ

Elfreina Extension Model File
File Version 1.00

最初の2行はヘッダです。1行目は上記の通りです。2行目はファイルフォーマットのバージョンですが、変わることはめったにありません。

タグとスコープ

MeshDatas {
    ;
    ;
}

青文字がタグ名と呼ばれ、そのあとにある「{ }」の間を「MeshDatas のスコープ」と呼びます。「タグ名」と「{」は同じ行になければいけません。

スコープの中には「複数のデータ(キーも)」「複数のスコープ」が含まれます。

キーとデータ

MeshContainerCount=1
MeshContainer {
    Name="ルーン"
    MeshCount=12
    VertexFormat {
        "Position"
        "Normal"
        "Texture1"
    }
}

緑の文字がキー、赤の文字がデータとよばれ、キーとデータの間は「=」で区切られます。データが文字列の場合は「""(ダブルクォーテーション)」で囲まれます。 キーやデータが途中で改行されることは基本的にありません。

例として、上のテキストの3行目のデータは「MeshDatas スコープ内の MeshContainer スコープ内の Name キーの "ルーン" データ」となります。

また、= で区切られていない単体文字列の場合は「データ」のみとなります。この場合は、スコープ内に列挙されることが多いです。

キーとデータの並び順、またスコープの並び順は基本的に関係ありません。ただし、データのみの列挙は場合により並び順が関係することがあります。

補足ですが、一番最初の2行のヘッダは、実はデータであり「グローバルスコープ内のデータ」という風に定義されています。

複数のデータ

Ambient=0.43:0.43:0.43:0.43
3,0:1:2

場合によってはひとつのキーに複数のデータが含まれることがあります。この場合は、データとデータの間に「:(コロン)」の区切り文字が入ります。

また、第2分割方法として、「,(コンマ)」が使用されることがあります。データの内容をより分割する場合に使用します。

複数のデータがある場合は、上の方法かスコープで列挙される形のどちらかが使用されます。

フォーマット(設定データ)

Setting スコープ

汎用設定データが含まれます。

キー一覧

キー データ 説明
SoftVersion または

ElfreinaSoftVersion
0.0 ~ .elem ファイルを保存したエルフレイナのソフトバージョンです。
LoadType 文字列 .elem ファイルのデータタイプです。現在「View」のみです。

フォーマット(モデルデータ)

MeshDataList スコープ

モデルデータ(メッシュ)を保存しているスコープです。エルフレイナ Ver 1.00 時点ではひとつのメッシュしか保存されませんが、複数のメッシュを保存させることも出来ます。

キー一覧

キー データ 説明
MeshContainerCount 0 ~ メッシュコンテナの数です。MeshContainer のスコープ数でもあります。

スコープ一覧

スコープ 説明
MeshContainer メッシュのデータを含みます。

MeshContainer スコープ

メッシュ作成に必要なデータが含まれています。

キー一覧

キー データ 説明
Name 任意の名前 メッシュの名前です。
BoneCount 0 ~ メッシュに使われるボーンの数です。
MeshCount 0 ~ メッシュ内で明示的に分割されているメッシュの数です。Mesh スコープの数でもあります。

スコープ一覧

スコープ 説明
VertexFormat メッシュを作成するときに必要な頂点フォーマットの一覧です。
BoneNames ボーンの名前リストです。
OffsetMatrices 座標変換に使用されるオフセットマトリックスのリストです。ボーンの名前のインデックスと一致しています。
Materials 材質色やテクスチャーなどを含みます。
Mesh メッシュの頂点位置や面情報などを含みます。

VertexFormat スコープ

メッシュを作成するときに必要な頂点フォーマットの一覧です。キーは存在せず、必要なデータのみが列挙されます。

データ一覧

データ 説明
Position 頂点情報に位置情報が含まれることを示します。
Normal 頂点情報に法線情報が含まれることを示します。
Blend 頂点情報に頂点ブレンドデータ情報が含まれることを示します。
Diffuse 頂点情報にディフューズ色情報が含まれることを示します。
Texture 頂点情報にテクスチャー用UV座標情報が含まれることを示します。

BoneNames スコープ

メッシュで使用されるボーンの名前リストが列挙されています。名前の並びはボーンの座標変換パレットのインデックスと一致するようになります。

OffsetMatrices スコープ

メッシュで使用されるボーンのオフセットマトリックスです。BoneNames に列挙されている名前とインデックスが一致されています。

Materials スコープ

複数のマテリアル情報が含まれています。

キー一覧

キー データ 説明
MaterialCount 0 ~ マテリアルの数です。Material スコープの数でもあります。

スコープ一覧

スコープ 説明
Material 個別のマテリアル情報が含まれます。

Material スコープ

材質色やテクスチャー情報が含まれています。

キー一覧

キー データ 説明
Name マテリアルの名前 マテリアルの名前です。
Diffuse (全て 0.0 ~ 1.0)a:r:g:b ディフューズ(基本)色です。左から「Alpha」「Red」「Green」「Blue」となります。
Ambient (全て 0.0 ~ 1.0)a:r:g:b 環境光に対する色です。
Emissive (全て 0.0 ~ 1.0)a:r:g:b 発光色です。
Specular (全て 0.0 ~ 1.0)a:r:g:b 反射色です。
SpecularSharpness 0.0 ~ 反射光に対する鋭さです。
TextureFilename ファイル名(絶対パスか相対パス) テクスチャーのファイル名です。相対パスの場合は、操作している ELEM ファイルからの相対パスになります。

Mesh スコープ

メッシュコンテナ内で分割されているメッシュを保存しています。エルフレイナなどでメッシュ表示切替やアニメーションなどで個別に切り替えが出来るようになります。

キー一覧

キー データ 説明
Name 任意の名前 メッシュの名前です。パーツごとの名前になることが多いです。
VertexCount 0 ~ メッシュの頂点数です。
FaceCount 0 ~ メッシュの面(ポリゴン)数です。

スコープ一覧

スコープ 説明
Positions 頂点の位置データを格納します。
Normals 頂点の法線データを格納します。
Diffuse 頂点のディフューズ色データを格納します。
TextureUV または

Texture1UV ~ Texture8UV
頂点のテクスチャーUV座標データを格納します。各頂点にUV座標がひとつしかない場合は、タグ名が「TextureUV」のように数字が付かないこともあります。
Blends 頂点のブレンドデータを格納します。
BlendIndices 頂点のブレンドのインデックスを格納します。
VertexIndices 面の画数と、頂点のインデックスを格納します。
Attributes 面のマテリアルインデックスを格納します。

Positions スコープ

頂点の位置データが列挙されます。

データ一覧

データ 説明
(全て double)x:y:z 頂点の位置。左から「x」「y」「z」

Normals スコープ

頂点の法線データが列挙されます。

データ一覧

データ 説明
(全て double)x:y:z 頂点の法線。左から「x」「y」「z」

Diffuse スコープ

頂点のディフューズ色データが列挙されます。

データ一覧

データ 説明
(全て double)a:r:g:b 頂点のディフューズ色。左から「Alpha」「Red」「Green」「Blue」

BlendList スコープ

頂点ブレンドに関するデータが列挙されます。

スコープ一覧

スコープ 説明
BlendPart 各ボーンに対応した頂点インデックスなどが格納されています。

BlendPart スコープ

各ボーンに対応した頂点インデックスなどが格納されています。

キー一覧

キー データ 説明
BoneName 名前 対応するボーンの名前です。
TransformIndex 0 ~ 座標変換パレットのインデックスです。

スコープ一覧

スコープ 説明
VertexBlend ボーンに対応した頂点データが列挙されています。

VertexBlend スコープ

ボーンに対応した頂点インデックスとウエイト値が列挙されています。

データ一覧

データ 説明
index, weight 左が頂点のインデックス、右がボーンに対する頂点のウエイト値です。

TextureUV スコープ

頂点のテクスチャ UV座標データが列挙されます。

データ一覧

データ 説明
(全て double)u:v 頂点のテクスチャーUV座標。左から「u」「v」

VertexIndices スコープ

面の画数、頂点インデックスが列挙されます。

データ一覧

データ 説明
画数,頂点インデックス1:頂点インデックス2:… 左が面の画数、「,(コンマ)」をはさんで、画数分の頂点のインデックスが並んでいます。

Attributes スコープ

面のマテリアルインデックスが列挙されます。

データ一覧

データ 説明
0 ~ 面のマテリアルインデックスです。

フォーマット(階層構造データ)

HierarchyList スコープ

階層データが含まれています。

スコープ一覧

スコープ 説明
Node 階層データです。階層データはネスト構造になっています。

Node スコープ

オフセットマトリックスや、初期姿勢データが含まれています。このデータは階層化されています。

キー一覧

キー データ 説明
NodeName 名前 ノードの名前です。
InitPostureMatrix Matrix M11:M12:… 初期姿勢用マトリックスです。このパラメータは基本的に「アニメーションマトリックス」×「初期姿勢マトリックス」×「親のマトリックス」で構成されています。

スコープ一覧

スコープ 説明
Node 階層データです。階層データはネスト構造になっています。

フォーマット(レンダリングメッシュリスト)

RenderingMeshList スコープ

レンダリングメッシュリストのデータが含まれています。

キー一覧

キー データ 説明
RenderingMeshCount 0~ 描画するメッシュの数です。RenderingMesh スコープの数でもあります。

スコープ一覧

スコープ 説明
RenderingMesh 描画するメッシュに関連するデータが含まれています。

RenderingMesh スコープ

描画するメッシュの名前と、使用する階層データの名前が列挙されています。

キー一覧

キー データ 説明
RenderingMeshName 名前 描画するメッシュの名前です。MeshContainer スコープ内の名前が使用されます。
HierarchyNamesCount 0~ 描画するときに使用される階層データの数です。

スコープ一覧

スコープ 説明
HierarchyNames 階層データの名前が列挙されています。

HierarchyNames スコープ

階層データの名前が列挙されています。これは主にスキンメッシュなどの座標変換パレットでどのマトリックスを使用するかを決めるためにあります。  頂点ブレンドを使用しない場合は、基本的にここに列挙されるデータは1つのみになります。

データ一覧

データ 説明
階層データの名前 階層データの名前

フォーマット(アニメーションデータ)

AnimationList スコープ

アニメーションに関係するデータが含まれています。

キー一覧

キー データ 説明
AnimationCount 0~ アニメーションの数です。AnimationData スコープの数でもあります。

スコープ一覧

スコープ 説明
AnimationData 個々のアニメーションデータが含まれます。

AnimationData スコープ

個々のアニメーションデータが含まれます。

キー一覧

キー データ 説明
AnimationName 任意の名前 アニメーションの名前です。
AnimationTime 1~ アニメーション1ループ分の再生時間です。単位は(ms)
FrameParSecond 1~ 1秒間のアニメーションフレーム数です。
TransitionTime 0~ アニメーションの変更にかかる時間です。現在、アニメーション変更中は線形式でアニメーションの重みがかかるようになっています。
Priority -0x7fffffff~0x7fffffff アニメーションの優先度です。複数のアニメーションを再生しているときに、どのアニメーションから計算されるかを決めるためのパラメータです。
Loop True or False アニメーションを再生したときにループさせるかを指定するフラグです。

スコープ一覧

スコープ 説明
BoneAnimation ボーンアニメーションに関わるデータが含まれます。
UVAnimation UVアニメーションに関わるデータが含まれます。

BoneAnimation スコープ

ボーンアニメーションに関わるデータが含まれます。

スコープ一覧

スコープ 説明
TimeKeys 全体のボーンアニメーションの時間キーが列挙されています。
AnimationPart 個々のアニメーションパート(ボーンごとのアニメーション)データが含まれています。

AnimationPart スコープ

ボーンごとのアニメーションデータが含まれます。

キー一覧

キー データ 説明
NodeName 名前 対応するボーン(ノード)の名前です。

スコープ一覧

スコープ 説明
TimeKeys 時間キーです。1.0 が AnimationTime と同じ時間になります。
TransKeys 平行移動パラメータです。「X:Y:Z」と定義されています。
RotateKeys クォータニオンによる回転パラメータです。「X:Y:Z:W」と定義されています。
ScaleKeys 拡大パラメータです。「X:Y:Z」と定義されています。

UVAnimation スコープ

UVアニメーションに関わるデータが含まれます。

スコープ一覧

スコープ 説明
TimeKeys 全体のボーンアニメーションの時間キーが列挙されています。実際には個々のパートのアニメーションデータが優先されるので、このデータは目安でしかありません。
AnimationPart 個々のアニメ ションパートデータが含まれています。

AnimationPart スコープ

個々のアニメーションデータが含まれます。

キー一覧

キー データ 説明
MeshContainerName 名前 対応するメッシュコンテナの名前です。
MaterialName 名前 対応するマテリアルの名前です。

スコープ一覧

スコープ 説明
TimeKeys 時間キーです。1.0 が AnimationTime と同じ時間になります。
TransKeys 平行移動パラメータです。「X:Y」と定義されています。
RotateKeys 回転パラメータです。単位は Radian。
ScaleKeys 拡大パラメータです。「X:Y」と定義されています。