The following file types are accepted - .fbx, .png, .ogg, .ttf.
A Rayve project requires an assets folder and data folder at the root level. The assets folder is where the original assets are stored. The data folder is where the assets imported by the importer are stored. The files used by content creation tools can be also be stored in folders and files beginning with "_", as these are ignored by the importer.
Folders and subfolders can be arranged and named in the assets folder as desired. A good strategy is to keep each scene's assets in it's own scene folder with the same name. The assets in the scene folder can be structured into subfolders as desired. A folder for common assets across scenes can also be created.All assets of a given type in a scene must have a unique name within the scene for it's type. This must be kept in mind when naming assets in the assets folder.
Regular scene meshes must always have scaling baked into the geometry. No scaling can be present in the transform matrix.
Meshes used for collision shapes must not have any scaling or translation baked into the mesh. All scaling and translation must be in the transform matrix.
For the importer to recognize materials, they must be in a folder that ends with .fbm. For example, 'mymats.fbm'. Any number of materials folders can used, but a materials folder should not contain subfolders, as they are ignored.
Materials stored in the materials folder must be named so that the material name comes first followed by the PBR role name. A PBR role name is the file's PBR function, such as albedo, normal, etc. All material files having the same material name are combined into one PBR material when imported.
Material name formats are widely varied. They must be converted to Rayve's specific naming convention so they can be imported. RVTool import has the ability to convert the PBR portion of the name to one of Rayve's internal PBR role names. There is a file in the Rayve distribution called 'cvtmat.txt' that can be modified to tell RVTool how to translate PBR roles. The first string in each row is used to match the PBR role of the original file. The second string in each row is what the PBR role name will be changed to. Any number of rows can be added to cover all the conditions needed. Rayve's PBR role names are: albedo, normal, metalness, roughness, emissive, opacity, refraction, ao.
The dimensions of textures used in materials should be powers of 2.
A material settings file can be used in place of texture files to represent a material, or it can be included with a material. Each row in the settings file is a keyword followed by one or more values. The names in brackets represent where the normalized numeric values should be positioned on the row. If the materials settings file is representing a material by itself, it must include albedo.
Rayve is designed around using 3D modeling software for creating scenes instead of a dedicated level editor. Prefabs are used for this purpose. A prefab contains a hierarchy of scene objects and their positions. It can contain parts of a scene, or an entire scene. The contents it can contain are null nodes, meshes, lights, markers and collision shapes.
Since scenes require unique names for all objects, a prefab prefixes the prefab name to mesh names in the prefab. This way mesh names in one prefab can have the same name in another prefab while still maintaining uniqueness in the scene. Because of this, it is a good idea to keep prefab names as short as possible, such as 3-4 letter abreviations.
There is a prefab class in the engine for reading the prefab and creating entities based on the contents. Naming is a key part in successfully importing a prefab. When reading the prefab, namespace names and node names are used. A prefab is read as a hierarchy, and the names in the hierarchy facilitate creating entities when the scene is being constructed.
A prefab mesh has an .fbx extension like a normal mesh, but has .pfb before the file extension, for example "myprefab.pfb.fbx"
3D modeling software often adds numbers to the end of a name as instances of a mesh are created. The importer doesn't use these numbers and strips them off. If a number is wanted as part of the name, add a letter or symbol after the number.
Rayve and the importer support instancing. The importer can detect meshes used multiple times and store a single instance. Rayve framework is based on instancing, so it happens naturally during rendering.
Collsion shapes can be any type of mesh in the 3D modeler that helps in representing the collision shape. Only the scale/rotation/transform of the collision mesh is used. Multiple collision shapes can be used for better coverage of more complex base mesh shapes.
Markers are null nodes used for storing positions. Markers are stored in the prefab and can be searched for by name to get the position of the marker for placing items at that position in the scene.
Light nodes do not currently contain light information because it is inconsistant for translating to Rayve internal parameters. The light node just provides the position of the light and helps distinquish a light from a mesh when reading the prefab.