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
models [2020/10/02 10:31] – [Supported file formats] adminmodels [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-====== Loading models ====== 
  
-You can find the model component in the toolbar under Gorilla3D > TGorillaModel 
- 
-A TGorillaModel component automatically manages sub-meshes, materials and animations for you. So this is the best component for loading complex mesh data. 
- 
-Every model contains a number of TGorillaMesh instances which holds the vertex data of a specific child mesh. At least one mesh will be available in a valid model. 
- 
-When loading models from file / stream, all materials and animations, defined in the source file / stream, are loaded too. 
-In case you are using explicit animation files (only for Collada DAE format), you need to load them afterwards by AddAnimationFromFile(). 
- 
-A TGorillaModel instance needs to be a child / sub-child of a TGorillaViewport instance, otherwise it will not be displayed. 
- 
-===== Supported file formats ===== 
- 
-Currently it is allowed to use the following file-formats: G3D, DAE, OBJ, STL, FBX, X3D, glTF (modified: 2020-05-01) 
- 
-^ Format      ^ MeshData       ^ Materials          ^ Animations  ^ Export ^ 
-| G3D             | <color #00FF00>✔</color>                        | <color #00FF00>✔</color>                         | <color #00FF00>✔</color>                      | <color #00FF00>✔</color>           | 
-| DAE             | <color #00FF00>✔</color>                         | <color #00FF00>✔</color>                         | <color #00FF00>✔</color>                      | <color #FF0000>✘</color>           | 
-| OBJ             | <color #00FF00>✔</color>                          | <color #00FF00>✔</color>                        | <color #FF0000>✘</color>                      | <color #FF0000>✘</color>           | 
-| STL              | <color #00FF00>✔</color>                          | <color #FF0000>✘</color>                        | <color #FF0000>✘</color>                      | <color #00FF00>✔</color>           | 
-| FBX             | <color #00FF00>✔</color>                          | <color #00FF00>✔</color>                        | <color #FF0000>✘</color>                      | <color #FF0000>✘</color>           | 
-| X3D             | <color #00FF00>✔</color>                          | <color #00FF00>✔</color>                        | <color #00FF00>✔</color>                      | <color #FF0000>✘</color>           | 
-| glTF             | <color #00FF00>✔</color>                          | <color #00FF00>✔</color>                        | <color #FF0000>✘</color>                      | <color #FF0000>✘</color>           | 
-| Babylon             | <color #00FF00>✔</color>                          | <color #00FF00>✔</color>                        | <color #FF0000>✘</color>                      | <color #FF0000>✘</color>           | 
-| Sketchfab             | <color #00FF00>✔</color>                          | <color #00FF00>✔</color>                        | <color #FF0000>✘</color>                      | <color #FF0000>✘</color>           | 
-===== Loading a new model from file at runtime ===== 
- 
-Creating a model instance at runtime is very easy and often very helpful for creating dynamically loaded scenes. 
- 
-<file pascal Form1.pas> 
-uses 
-  Gorilla.DefTypes, 
-  Gorilla.G3D.Loader, 
-  Gorilla.DAE.Loader, 
-  Gorilla.OBJ.Loader, 
-  Gorilla.STL.Loader, 
-  Gorilla.FBX.Loader, 
-  Gorilla.GLTF.Loader, 
-  Gorilla.Model; 
- 
-// in our form (TForm1) we added a field named "FModel" 
-procedure TForm1.FormCreate(Sender: TObject); 
-var LPath : String; 
-    LAssetPckg : TGorillaAssetPackage; 
-begin 
-  LPath := 'c:\my3dfile.dae'; 
-  LAssetPckg := nil; 
-  FModel := TGorillaModel.LoadNewModelFromFile(FGorilla, LAssetPckg, 
-      OpenDialog1.FileName, GORILLA_ANIMATION_CACHING_DEFAULT); 
-  FModel.Parent := FGorilla; 
-end; 
-</file> 
-             
-For the moment you can ignore the last parameter "GORILLA_ANIMATION_CACHING_DEFAULT" of the LoadNewModelFromFile() call. 
-We will explain this in the [[animations|Animations]] section. 
- 
-You also can ignore the AssetPckg parameter currently. We will explain assets management in the [[assetsmanager|AssetsManager]] section. 
-===== Loading a model from file into an existing TGorillaModel instance ===== 
- 
-In case you've dragged a TGorillaModel component onto your viewport, you can load the model by the following method. 
- 
-<file pascal Form1.pas> 
-uses 
-  Gorilla.G3D.Loader, 
-  Gorilla.DAE.Loader, 
-  Gorilla.OBJ.Loader, 
-  Gorilla.STL.Loader, 
-  Gorilla.FBX.Loader, 
-  Gorilla.GLTF.Loader, 
-  Gorilla.Model; 
- 
-// in our form (TForm1) we added a field named "FModel" 
-procedure TForm1.FormCreate(Sender: TObject); 
-var LPath : String; 
-    LAssetPckg : TGorillaAssetPackage; 
-begin 
-  LPath := 'c:\my3dfile.dae'; 
-  LAssetPckg := nil; 
-  GorillaModel1.LoadFromFile(LAssetPckg, 
-      OpenDialog1.FileName, GORILLA_ANIMATION_CACHING_DEFAULT); 
-end; 
-</file> 
-        
-             
-To load a specific file format you need to include the format unit:  
-  * Gorilla.G3D.Loader 
-  * Gorilla.DAE.Loader 
-  * Gorilla.OBJ.Loader 
-  * Gorilla.STL.Loader 
-  * Gorilla.FBX.Loader 
-  * Gorilla.GLTF.Loader 
-  * Gorilla.X3D.Loader 
-  * Gorilla.X3DZ.Loader 
-  * Gorilla.X3DVZ.Loader 
- 
-Only then the format loader is able to load the specific file.  
- 
-===== Exporting a model ===== 
- 
-We provide 2 export formats at the moment: G3D and STL, which are easy to use. 
- 
-==== G3D Export ==== 
-<file pascal> 
- 
-uses 
-  Gorilla.G3D.Exporter; 
-   
-procedure TForm1.MenuItem1Click(Sender: TObject); 
-var LG3DExp : TGorillaG3DExporter; 
-    LToBinary : Boolean; 
-    LZipped : Boolean; 
-    LBeautified : Boolean; 
-begin 
-  LToBinary := true; 
-  LZipped := true; 
-  LBeautified := true; 
-   
-  if Assigned(fModel) then 
-  begin 
-    if SaveDialog1.Execute() then 
-    begin 
-        LG3DExp := TGorillaG3DExporter.Create(); 
-        try 
-          if LToBinary then 
-            LG3DExp.Format := TGorillaG3DFormat.BSONFormat 
-          else 
-            LG3DExp.Format := TGorillaG3DFormat.JSONFormat; 
- 
-          LG3DExp.Zipped  := LZipped; 
-          LG3DExp.Beautified := LBeautified; 
- 
-          LG3DExp.SaveToFile(fModel.Def as TModelDef, SaveDialog1.FileName); 
-        finally 
-          FreeAndNil(LG3DExp); 
-        end; 
- 
-        ShowMessage('File successfully stored:'#13#10+ 
-          SaveDialog1.FileName); 
-      end; 
-  end; 
-end; 
-</file> 
- 
-==== STL Export ==== 
- 
-<file pascal> 
-<file pascal> 
- 
-uses 
-  Gorilla.STL.Exporter; 
-   
-procedure TForm1.MenuItem1Click(Sender: TObject); 
-var LSTLExp : TGorillaSTLExporter; 
-    LToBinary : Boolean; 
-    LAllowMultipleMeshes : Boolean; 
-    LUseMultipleFiles : Boolean; 
-begin 
-  // ascii and binary format supported 
-  LToBinary := true;   
-   
-  // because STL supports only single meshes per file (per default),  
-  // we can split up a model with multiple meshes into multiple files 
-  LAllowMultipleMeshes := true; 
-  // but this exporter also allows to export multiple meshes to a single file 
-  // just set UseMultipleFiles to false 
-  LUseMultipleFiles := true; 
-   
-  if Assigned(FModel) then 
-  begin 
-    if SaveDialog1.Execute() then 
-    begin 
-        LSTLExp := TGorillaSTLExporter.Create(); 
-        try 
-          LSTLExp.Binary := LToBinary; 
-          LSTLExp.AllowMultipleMeshes := LAllowMultipleMeshes; 
-          LSTLExp.UseMultipleFiles := LUseMultipleFiles; 
-          LSTLExp.SaveToFile(FModel.Def as TModelDef, SaveDialog1.FileName); 
-        finally 
-          FreeAndNil(LSTLExp); 
-        end; 
- 
-        ShowMessage('File successfully stored:'#13#10+ 
-          SaveDialog1.FileName); 
-      end; 
-  end; 
-end; 
-</file> 
- 
-Next step: [[animations|Animations]]