Warning: Undefined array key "translationlc" in /usr/www/users/fabook/_diggets/doc/v2/lib/plugins/translation/action.php on line 237
Warning: Cannot modify header information - headers already sent by (output started at /usr/www/users/fabook/_diggets/doc/v2/lib/plugins/translation/action.php:237) in /usr/www/users/fabook/_diggets/doc/v2/inc/Action/Export.php on line 104
Warning: Cannot modify header information - headers already sent by (output started at /usr/www/users/fabook/_diggets/doc/v2/lib/plugins/translation/action.php:237) in /usr/www/users/fabook/_diggets/doc/v2/inc/Action/Export.php on line 104
Warning: Cannot modify header information - headers already sent by (output started at /usr/www/users/fabook/_diggets/doc/v2/lib/plugins/translation/action.php:237) in /usr/www/users/fabook/_diggets/doc/v2/inc/Action/Export.php on line 104
====== Internal Model Definition ======
Gorilla3D holds model, animation and material data inside of an internal structure for better instancing, abstraction and management.
The so-called DefTypes can be stored and loaded to/from *.G3D file format.
===== Structure =====
Take a look at the following schematic structure of a model definition.
-TModelDef
// holds a list of TMeshDef instances
-List::Meshes
-TMeshDef
// a reference to the owner model
-@Model::TModelDef
-/TMeshDef
-/List::Meshes
// holds a list of TMaterialDef instances
-List::Materials
-TMaterialDef
// a reference to the owner model
-@Model::TModelDef
// holds a list of textures
-List::Textures
-TTextureDef
-/TTextureDef
-/List::Textures
// holds a list of shader codes
-List::Shaders
-TShaderDef
-/TShaderDef
-/List::Shaders
// holds a list of sub materials for layered material sources
-List::Materials
-TMaterialDef
[...]
-/TMaterialDef
-/List::Materials
-/TMaterialDef
-/List::Materials
// holds a list of THumanoidDef instances
-List::Humanoids
-THumanoidDef
// a reference to the owner model
-@Model::TModelDef
// holds a list of TControllerDef references
-@List::Controllers
// represents a tree of TJointDef nodes
-Root::TJointDef
-TJointDef
-TJointDef
-TJointDef
-TJointDef
-/TJointDef
-/TJointDef
-/Root::TJointDef
-/THumanoidDef
-THumanoidDef
[...]
-/THumanoidDef
-/List::Humanoids
// holds a list of TControllerDef instances
-List::Controllers
-TControllerDef
// a reference to the mesh, the controller handles
-@Mesh::TMeshDef
// is a sub component of TSkinDef
-Skin::TSkinDef
-TSkinDef
// the owner controller of the skin definition
-@Controller::TControllerDef
// holds a list of TJointRefDef instances - these
// are referenced objects to TJointDef instances
-List::LinkedJoint
-TJointRefDef
-TJointRefDef
-TJointRefDef
-TJointRefDef
-TJointRefDef
[...]
-/List::LinkedJoints
// contains the root joint of the skeleton
-@Skeleton::TJointRefDef
-/TSkinDef
-/Skin::TSkinDef
-/TControllerDef
-TControllerDef
[...]
-/TControllerDef
-/List::Controllers
// holds a list of TAnimationDef instances
-List::Animations
-TAnimationDef
// reference to the owner model
-@Model::TModelDef
// holds a list of TAnimationStageDef instances
-List::Stages
-TAnimationStageDef
-List::Interpolators
-TInterpolatorDef
-TInterpolatorDef
-TInterpolatorDef
[...]
-/List::Interpolators
-/TAnimationStageDef
-TAnimationStageDef
[...]
-/TAnimationStageDef
-/List::Stages
-/TAnimationDef
-TAnimationDef
[...]
-/TAnimationDef
-/List::Animations
-/TModelDef
===== G3D File Format =====
The Gorilla3D file format is a representation of the internal model structure defintion.
It allows different kinds of storage formats:
^ Format ^ Notes ^
| BSON | binary json format: https://en.wikipedia.org/wiki/BSON [wikipedia] |
| JSON | default json format: https://en.wikipedia.org/wiki/JSON [wikipedia] |
In addition to those formats we provide different storage options:
^ Option ^ Notes ^
| None | The save routine simply stores data plain as BSON or JSON |
| Zipped | Store as zipped data stream. You can extend this option by the FastestCompression or MaxCompression option. If none of them is set, the exporter will use default compression. |
| Beautified | Compatible with JSON format. Defines data will be exported with linebreaks and indents or not. This option has no influence on bson format. |
| FastestCompression | If the Zipped-Option is set, this option will choose the fastest algorithm for packing the data stream. |
| MaxCompression | If the Zipped-Option is set, this option will chose the maximum compression algorithm for packing the data stream. |
Depending on your model data you can configure those options to optimize filesize.
In most cases a zipped JSON format with MaxCompression provides the best results.
G3D_TEST : TGorillaG3DOptions = [TGorillaG3DOption.Zipped, TGorillaG3DOption.MaxCompression];
===== Notice =====
Every G3D file starts with some header information, where is defined which format and options are used.
The header format is described below:
TGorillaG3DFormat = (BSONFormat, JSONFormat);
TGorillaG3DOption = (
None,
Zipped,
Beautified,
FastestCompression,
MaxCompression);
TGorillaG3DOptions = Set Of TGorillaG3DOption;
TGorillaG3DHeader = record
/// DEFAULT-VALUE = "Gorilla3D "
/// 10 characters identify the exporter tool
Exporter : Array[0..9] of Byte;
Version : Cardinal;
/// Datetime when the file was generated. (8 byte float value)
Timestamp : TDateTime;
/// The data format the was stored (bson or json).
Format : TGorillaG3DFormat;
/// enum with values above
Options : TGorillaG3DOptions;
end;
Next step: [[transparency|Transparency]]