Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
1.0.0:models [2023/02/23 12:01] – [Embedded Model] admin | 1.0.0:models [2023/02/28 15:21] (current) – [Sketchfab Import] admin | ||
---|---|---|---|
Line 59: | Line 59: | ||
{{: | {{: | ||
- | The IDE will show up a loading | + | When the loading |
- | + | But not all options are available for all formats. | |
- | In this dialog you can configure the import process. But not all options are available for all formats. | + | |
* Ignore importing animations | * Ignore importing animations | ||
Line 69: | Line 68: | ||
* Limit texture size, in case you have a memory-sensitive application | * Limit texture size, in case you have a memory-sensitive application | ||
+ | Afterwards the IDE will show up a loading window while importing. | ||
Because the data + textures are stored in the *.fmx of your form, it can become very large. | Because the data + textures are stored in the *.fmx of your form, it can become very large. | ||
This may slow down the performance of the IDE. | This may slow down the performance of the IDE. | ||
- | **WARNING***: | + | **WARNING***: |
==== Using Packages ==== | ==== Using Packages ==== | ||
Line 97: | Line 97: | ||
The data is not stored again in the formular *.fmx file, it only restores it from package information. | The data is not stored again in the formular *.fmx file, it only restores it from package information. | ||
- | **WARNING***: | + | **WARNING***: |
Line 125: | Line 125: | ||
__NOTICE:__ Not all models on Sketchfab are fully compatible. The platform automatically converts models to glTF format, which sometimes destroys the model data. | __NOTICE:__ Not all models on Sketchfab are fully compatible. The platform automatically converts models to glTF format, which sometimes destroys the model data. | ||
+ | |||
+ | |||
+ | <WRAP center round alert 60%> | ||
+ | **WARNING**: | ||
+ | </ | ||
===== Runtime ===== | ===== Runtime ===== | ||
Line 469: | Line 474: | ||
==== TGorillaModel ==== | ==== TGorillaModel ==== | ||
- | A TGorillaModel is the head component for loaded models from file/asset. Even it's inherited from TGorillaMesh, | + | A TGorillaModel is the "head" |
sub-meshes, animations and materials. So a TGorillaModel needs to contain at least one TGorillaMesh in it's Meshes list. | sub-meshes, animations and materials. So a TGorillaModel needs to contain at least one TGorillaMesh in it's Meshes list. | ||
Line 544: | Line 549: | ||
- | ===== Instancing / Model duplication | + | ===== Instancing / Cloning |
==== Instanced Rendering ==== | ==== Instanced Rendering ==== | ||
Line 552: | Line 557: | ||
Use this method to render for example grass or trees. It is not recommended to use it for animated charaters, | Use this method to render for example grass or trees. It is not recommended to use it for animated charaters, | ||
because they would be rendered the same (with the same animation frame). | because they would be rendered the same (with the same animation frame). | ||
- | |||
- | You can simply setup instanced rendering in your TGorillaModel or TGorillaMesh object. | ||
{{youtube> | {{youtube> | ||
+ | |||
+ | |||
+ | |||
+ | === At DesignTime === | ||
+ | |||
+ | We offer a collection property called " | ||
+ | |||
+ | You can simply add instances at design time with their transformation information. | ||
+ | |||
+ | __NOTICE:__ The transformation information (position, rotation and scale) is absolute and not depending on the owner mesh. | ||
+ | |||
+ | |||
+ | === At Runtime === | ||
+ | |||
+ | For better usability TGorillaMesh/ | ||
+ | Internally it will be cached in buffer for fast GPU transmission. | ||
+ | |||
+ | This brings new opportunities, | ||
+ | |||
+ | In that case you want to ignore the collection and simply add those instances to the buffer. Therefore please use the AddInstance() method | ||
+ | |||
+ | <file pascal> | ||
+ | function AddInstance(const ATransform : TMatrix3D; const ACreateItem : Boolean; | ||
+ | AName : String = '' | ||
+ | </ | ||
<file pascal> | <file pascal> | ||
/// we create 4 instances in a row | /// we create 4 instances in a row | ||
- | GorillaModel1.AddInstance(TMatrix3D.CreateTranslation(Point3D(-10, | + | GorillaModel1.AddInstance(TMatrix3D.CreateTranslation(Point3D(-10, |
- | GorillaModel1.AddInstance(TMatrix3D.CreateTranslation(Point3D(-5, | + | GorillaModel1.AddInstance(TMatrix3D.CreateTranslation(Point3D(-5, |
- | GorillaModel1.AddInstance(TMatrix3D.CreateTranslation(Point3D(5, | + | GorillaModel1.AddInstance(TMatrix3D.CreateTranslation(Point3D(5, |
- | GorillaModel1.AddInstance(TMatrix3D.CreateTranslation(Point3D(10, | + | GorillaModel1.AddInstance(TMatrix3D.CreateTranslation(Point3D(10, |
/// afterwards we can modify a specific instance | /// afterwards we can modify a specific instance | ||
Line 573: | Line 601: | ||
</ | </ | ||
+ | __WARNING: | ||
+ | ==== Cloning ==== | ||
+ | |||
+ | Instancing can be done by GPU and providing different transformation matrices like above or by cloning the visual component with all of it's data. | ||
+ | Both ways have their advantages and disadvantages. | ||
- | ==== Instancing by template | + | * Use instancing if you want to re-render a mesh multiple times |
+ | * Use cloning if you need different visual feedback | ||
- | Since 0.8.3.1966+ we've refactored the way to instanciate models. The previous method was incomplete in handling animated models. | ||
In the following example we show how to load a complex animated model with multiple meshes and animations. | In the following example we show how to load a complex animated model with multiple meshes and animations. | ||
We will load up a template (TModelDef), | We will load up a template (TModelDef), | ||
Line 650: | Line 683: | ||
end; | end; | ||
</ | </ | ||
- | ===== Plugins ===== | ||
- | |||