Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
0.8.3:models [2022/04/08 13:42] – [Loading a model from package] admin0.8.3:models [2022/04/25 11:26] – [Instancing by TModelDef] admin
Line 21: Line 21:
 | OBJ         | ✔             | ✔                 | ✘          | ✘      | ✘       | ✘      | ✘       | ✘      |           | only ascii format| | OBJ         | ✔             | ✔                 | ✘          | ✘      | ✘       | ✘      | ✘       | ✘      |           | only ascii format|
 | STL         | ✔             |✘                   | ✘          | ✘     | ✘        | ✘      | ✘       | ✔     | 1.0       | ascii and binary format, Standard + Solidworks-Format| | STL         | ✔             |✘                   | ✘          | ✘     | ✘        | ✘      | ✘       | ✔     | 1.0       | ascii and binary format, Standard + Solidworks-Format|
-| FBX         | ✔             | ✔                 ✘          | ✘      | ✘       | ✘      | ✘       | ✘      | 7.1 - 7.5 | only binary (v0.8.3.1931+). Animation import for 7.3-7.4 validated, 7.5 not working properly yet|+| FBX         | ✔             | ✔                 ✔          | ✘      | ✘       | ✘      | ✘       | ✘      | 7.1 - 7.5 | only binary (v0.8.3.1931+). Animation import for 7.3-7.4 validated, 7.5 not working properly yet|
 | X3D         | ✔             | ✔                 | ✔         | ✘      | ✘       | ✘      | ✘       | ✘      |           | deprecated | | X3D         | ✔             | ✔                 | ✔         | ✘      | ✘       | ✘      | ✘       | ✘      |           | deprecated |
 | glTF        | ✔             |✔                  | ✘          | ✘      | ✘       | ✘      | ✘       | ✘      | 2.0       | only glTF json format, not glb| | glTF        | ✔             |✔                  | ✘          | ✘      | ✘       | ✘      | ✘       | ✘      | 2.0       | only glTF json format, not glb|
Line 259: Line 259:
  
 var FAssetsManager : TGorillaAssetsManager; var FAssetsManager : TGorillaAssetsManager;
-       FPackage : TGorillaAssetsPackage; +    FPackage : TGorillaAssetsPackage; 
-       FModel : TGorillaModel;+    FModel : TGorillaModel;
  
 // in our form (TForm1) we added a field named "FModel" // in our form (TForm1) we added a field named "FModel"
Line 267: Line 267:
   // setup the assets manager and load an existing package from file   // setup the assets manager and load an existing package from file
   FAssetsManager := TGorillaAssetsManager.Create(Self);   FAssetsManager := TGorillaAssetsManager.Create(Self);
-  FPackage := FAssetsManager.LoadPackageFromFile('{HOME}mypackage.zip');+  FPackage := FAssetsManager.LoadPackageFromFile('C:\Temp\mypackage.zip');
   FPackage.DisplayName := 'MyPackage';   FPackage.DisplayName := 'MyPackage';
      
Line 316: Line 316:
  
 ===== Instancing / Model duplication ===== ===== Instancing / Model duplication =====
 +
 +==== Instanced Rendering ====
 +
 +Since 0.8.3.2265 instanced rendering of the same mesh for x-times was implemented.
 +
 +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).
 +
 +You can simply setup instanced rendering in your TGorillaModel or TGorillaMesh object.
 +
 +<file pascal>
 +/// we create 4 instances in a row
 +GorillaModel1.AddInstance(TMatrix3D.CreateTranslation(Point3D(-10, 0, 0)));
 +GorillaModel1.AddInstance(TMatrix3D.CreateTranslation(Point3D(-5, 0, 0)));
 +GorillaModel1.AddInstance(TMatrix3D.CreateTranslation(Point3D(5, 0, 0)));
 +GorillaModel1.AddInstance(TMatrix3D.CreateTranslation(Point3D(10, 0, 0)));
 +
 +/// afterwards we can modify a specific instance
 +var LTransf : TMatrix3D;
 +LTransf := TMatrix3D.CreateScaling(Point3D(2, 2, 2));
 +LTransf := LTransf * TMatrix3D.CreateRotationY(DegToRad(90));
 +LTransf := LTransf * TMatrix3D.CreateScaling(Point3D(2, 2, 2));
 +
 +GorillaModel1.Instances[2] := LTransf;
 +</file>
 +
 +
 +==== Instancing by TModelDef ====
  
 Since 0.8.3.1966+ we've refactored the way to instanciate models. The previous method was incomplete in handling animated models. 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, which will be used for duplication. The template itself will not be rendered in our example, but of course that's possible too.+We will load up a template (TModelDef), which will be used for duplication. The template (TModelDef) itself will not be rendered in our example, but of course that's possible too.
  
 Each duplicated model will run a different animation to show instanciating is still fast, but allows to handle models differently. Each duplicated model will run a different animation to show instanciating is still fast, but allows to handle models differently.