Format

Page creation date :

Describes elfreina's own file interior format.

[.elp] file

Project file to be output by Elfreina. This file is not listed because parameters and the like often change depending on the version of Elfrina.

File format

Text file.

Character code

The character code of the file is UTF-8.

[.elem] file

"Elfreina Extension Model File". It can include "model data", "hierarchical structure", "render mesh list", and "animation data".

Supported ElFrena version

The format as of Elfrina Ver1.1.

File format

Text file.

Character code

The character code of the file is UTF-8.

Basic format of text

The text configuration of both ".elp" and ".elem" files is as follows.

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

Header

Elfreina Extension Model File
File Version 1.00

The first two lines are headers. The first line is as described above. The second line is a version of the file format, but it rarely changes.

Tags and scopes

MeshDatas {
    ;
    ;
}

The blue letter is called the tag name, followed by the "{ }" is called "MeshDatas scope". "Tag name" and "{" must be on the same line.

Some scopes include "multiple data (keys too)" and "multiple scopes".

Keys and data

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

The green character is called the key, the red character is called the data, and the key and the data are separated by a "=". If the data is a string, it is enclosed in "" (double quote). Keys and data are basically not broken in the middle.

As an example, the data in the third line of the text above is "Rune data" of the Name key in the MeshContaier scope in the MeshDatas scope.

In addition, for single strings that are not separated by =, only "data" is available. In this case, it is often enumerated in scope.

The order of keys and data, and the order of scopes, is basically irrelevant. However, the order of enumerating data only can be related in some cases.

As a side note, the header of the very first two rows is actually data and is defined in the way of "data in global scope".

Multiple data

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

In some cases, a key can contain more than one piece of data. In this case, the ":(colon) delimiter) is placed between the data.

In addition, ",(comma)" may be used as a second division method. Use to further divide the contents of the data.

If there is more than one data, either the above method or the form enumerated in the scope is used.

Format (configuration data)

Setting scope

Contains generic configuration data.

List of keys

Key data description
SoftVersion or

ElfreinaSoftVersion
0.0 to Soft version of Elfleina that saved the .elem file.
LoadType String The data type of the .elem file. Currently, it is only "View".

Format (model data)

MeshDataList Scope

The scope in which model data (mesh) is stored. As of Elfreina Ver 1.00, only one mesh is saved, but multiple meshes can be saved.

List of keys

Key data description
MeshContainerCount 0 to The number of mesh containers. It is also the number of scopes of MeshContaier.

Scope list

Scope Description
MeshContaier Contains data for the mesh.

MeshContaizer Scope

Contains the data needed to mesh.

List of keys

Key data description
Name Any name The name of the mesh.
BoneCount 0 to The number of bones used for the mesh.
MeshCount 0 to The number of meshes that are explicitly split in the mesh. It's also the number of Mesh scopes.

Scope list

Scope Description
VertexFormat A list of vertex formats required to create a mesh.
BoneNames Name list of bones.
OffsetMatrices A list of offset matrices used for coordinate transformations. Matches the index of the bone's name.
Materials Includes material color, texture, etc.
Mesh Contains vertex positions, face information, and so on of the mesh.

VertexFormat Scope

A list of vertex formats required to create a mesh. The key does not exist, and only the data that is required is enumerated.

List of data

Data description
Position Indicates that the vertex information contains location information.
Normal Indicates that the vertex information contains normal information.
Blend (album) Indicates that vertex blend data information is included in the vertex information.
Diffuse Indicates that the vertex information contains diffuse color information.
Texture Indicates that the vertex information contains UV coordinate information for the texture.

BoneNames scope

An enumerated list of names of bones used in the mesh is listed. The names now match the index of the bone's transform palette.

OffsetMatrices Scope

Offset matrix of the bones used in the mesh. The names and indexes listed in BoneNames match.

Materials Scope

Contains multiple material information.

List of keys

Key data description
MaterialCount 0 to The number of materials. It's also the number of material scopes.

Scope list

Scope Description
Material Contains individual material information.

Material scope

Contains material color and texture information.

List of keys

Key data description
Name Name of the material The name of the material.
Diffuse (All 0.0 to 1.0) a:r:g:b Diffuse (basic) color. From left: Alpha, Red, Green, and Blue.
Ambient (All 0.0 to 1.0) a:r:g:b It is a color for ambient light.
Emissive (All 0.0 to 1.0) a:r:g:b It is a light-emitting color.
Speular (All 0.0 to 1.0) a:r:g:b Reflection color.
SpectralSharpness 0.0 to Sharpness to reflected light.
TextureFilename File name (absolute or relative) The file name of the texture. If the path is relative, it is relative to the ELEM file you are working with.

Mesh scope

Saving meshes that are split in a mesh container. You will be able to switch individually, such as mesh display switching and animation, such as Elfrina.

List of keys

Key data description
Name Any name The name of the mesh. It is often the name of each part.
VertexCount 0 to The number of vertices in the mesh.
FaceCount 0 to The number of faces (polygons) of the mesh.

Scope list

Scope Description
Positions Contains vertex location data.
Normals Contains normal data for vertices.
Diffuse Contains diffuse color data for vertices.
TextureUV or

Texture1UV ~ Texture8UV
Contains textured UV coordinate data for vertices. If each vertex has only one UV coordinate, the tag name may not be numbered, such as TextureUV.
Blends Contains the blend data for vertices.
BlendIndices Contains the index of the vertex blend.
VertexIndices Contains the number of strokes of a face and the index of the vertex.
Attributes Contains the material index of the face.

Positions scope

Enumerates vertex location data.

List of data

Data description
(all double) x:y:z The position of the vertex. From left: "x", "y", "z".

Normals scope

Enumerates the normal data for the vertices.

List of data

Data description
(all double) x:y:z The normal of the vertex. From left: "x", "y", "z".

Diffuse scope

Enumerates the diffuse color data for the vertex.

List of data

Data description
(all double) a:r:g:b The diffuse color of the vertex. From left: Alpha, Red, Green, and Blue.

BlendList scope

Enumerates data about vertex blends.

Scope list

Scope Description
BlendPart Contains vertex indexes, etc. for each bone.

BlendPart scope

Contains vertex indexes, etc. for each bone.

List of keys

Key data description
BoneName Name The name of the corresponding bone.
TransformIndex 0 to Index of the coordinate transformation palette.

Scope list

Scope Description
VertexBlend The vertex data corresponding to the bone is enumerated.

VertexBlend Scope

The vertex index and weight values corresponding to the bone are listed.

List of data

Data description
index, weight The index of the vertex on the left and the weight value of the vertex relative to the bone on the right.

TextureUV scope

Enumerates texture UV coordinate data for vertices.

List of data

Data description
(all double) u:v The texture UV coordinates of the vertex. From left: "u" and "v"

VertexIndices Scope

The number of strokes and vertex index of the face are enumerated.

List of data

Data description
Number of Strokes, Vertex Index 1: Vertex Index 2:... The number of strokes on the left is the number of strokes on the face, and the index of the top of the number of strokes is lined up.

Attributes scope

The material index of the face is enumerated.

List of data

Data description
0 to The material index of the face.

Format (hierarchical data)

HierarchyList Scope

Contains hierarchical data.

Scope list

Scope Description
Node Hierarchical data. Hierarchical data has a nested structure.

Node scope

Includes offset matrix and initial attitude data. This data is hierarchical.

List of keys

Key data description
NodeName Name The name of the node.
InitPostureMatrix Matrix M11:M12:... It is a matrix for the initial posture. This parameter basically consists of "animation matrix" x "initial posture matrix" x "parent matrix".

Scope list

Scope Description
Node Hierarchical data. Hierarchical data has a nested structure.

Format (render mesh list)

RenderingMeshList Scope

Contains data from the rendered mesh list.

List of keys

Key data description
RenderingMeshCount 0 to The number of meshes to draw. It is also a number of RenderingMesh scopes.

Scope list

Scope Description
RenderingMesh Contains data related to the mesh to draw.

RenderingMesh Scope

Lists the names of the mesh to draw and the name of the hierarchical data to use.

List of keys

Key data description
RenderingMeshName Name The name of the mesh to draw. The name in the MeshContaitener scope is used.
HierarchyNamesCount 0 to The number of hierarchical data used when drawing.

Scope list

Scope Description
HierarchyNames The names of the hierarchical data are enumerated.

HierarchyNames Scope

The names of the hierarchical data are enumerated. This is primarily to determine which matrix to use in coordinate transformation palettes such as skin meshes.  If you do not use vertex blending, there is basically only one data listed here.

List of data

Data description
The name of the hierarchical data The name of the hierarchical data

Format (animation data)

AnimationList scope

Contains data related to the animation.

List of keys

Key data description
AnimationCount 0 to The number of animations. It is also the number of AnimationData scopes.

Scope list

Scope Description
AnimationData Contains individual animation data.

AnimationData scope

Contains individual animation data.

List of keys

Key data description
AnimationName Any name The name of the animation.
AnimationTime 1 to The duration of one loop of animation. Unit (ms)
FrameParSecond 1 to The number of animation frames per second.
TransitionTime 0 to The amount of time it takes to change the animation. Currently, the animation is weighted in line form during animation changes.
Priority -0x7fffff~0x7fffffff Priority of the animation. A parameter that determines which animation is calculated when playing multiple animations.
Loop True or False Flag that specifies whether to loop when the animation plays.

Scope list

Scope Description
BoneAnimation Contains data related to bone animation.
UVAnimation Contains data related to UV animation.

BoneAnimation Scope

Contains data related to bone animation.

Scope list

Scope Description
TimeKeys The time keys for the entire bone animation are enumerated.
AnimationPart Contains individual animation part (animation per bone) data.

AnimationPart Scope

Contains animation data for each bone.

List of keys

Key data description
NodeName Name The name of the corresponding bone (node).

Scope list

Scope Description
TimeKeys Time key. 1.0 is the same time as AnimationTime.
TransKeys Translation parameter. Defined as X:Y:Z.
RotateKeys Rotation parameter by quota. Defined as X:Y:Z:W.
ScaleKeys Magnifying parameter. Defined as X:Y:Z.

UVAnimation Scope

Contains data related to UV animation.

Scope list

Scope Description
TimeKeys The time keys for the entire bone animation are enumerated. In fact, the animation data of individual parts takes precedence, so this data is only a guide.
AnimationPart Contains individual animation part data.

AnimationPart Scope

Contains individual animation data.

List of keys

Key data description
MeshContaierName Name The name of the corresponding mesh container.
MaterialName Name The name of the corresponding material.

Scope list

Scope Description
TimeKeys Time key. 1.0 is the same time as AnimationTime.
TransKeys Translation parameter. It is defined as "X:Y".
RotateKeys Rotation parameter. The unit is Radian.
ScaleKeys Magnifying parameter. It is defined as "X:Y".