Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
1.0.0:custommesh [2023/03/23 13:47] – [Example] admin | 1.0.0:custommesh [2023/03/23 13:59] – [Add a Skin-Animation] admin | ||
---|---|---|---|
Line 137: | Line 137: | ||
|function AddTriangle(const AIndexOffset : Integer; const ATriangle : TTriangleID; | |function AddTriangle(const AIndexOffset : Integer; const ATriangle : TTriangleID; | ||
|function AddPolygon(const AIndexOffset : Integer; const APolygon : TPolygonID; const AVertices : TList< | |function AddPolygon(const AIndexOffset : Integer; const APolygon : TPolygonID; const AVertices : TList< | ||
- | === Example === | + | |
+ | ==== Example | ||
In this detailed example, let's create a mesh the same like in the " | In this detailed example, let's create a mesh the same like in the " | ||
Line 144: | Line 145: | ||
In the first step we're going to show the usage of TVertexCache to setup mesh data. | In the first step we're going to show the usage of TVertexCache to setup mesh data. | ||
+ | |||
+ | === Adding MeshData === | ||
<file pascal> | <file pascal> | ||
Line 283: | Line 286: | ||
</ | </ | ||
- | ==== Add Hierarchy | + | === Add Hierarchy === |
Since v1.0 most objects in DefTypes are inherited from TTransformDef. | Since v1.0 most objects in DefTypes are inherited from TTransformDef. | ||
Line 325: | Line 328: | ||
- | ==== Vertex Groups | + | === How To Use Vertex Groups === |
VertexGroups are helper structures referring to an owner mesh, which holds original vertex data and complete indices list, while this structure only holds a separated index source for partially rendering a mesh. | VertexGroups are helper structures referring to an owner mesh, which holds original vertex data and complete indices list, while this structure only holds a separated index source for partially rendering a mesh. | ||
Line 349: | Line 352: | ||
end; | end; | ||
</ | </ | ||
- | ==== Add Material | + | === Add A Material === |
To expand the dynamic model setup, let's add a material to our sub-mesh. | To expand the dynamic model setup, let's add a material to our sub-mesh. | ||
Line 378: | Line 381: | ||
</ | </ | ||
- | ==== Add Animation | + | === Add A Simple |
Adding animations can become a very challenging part due to complexity. | Adding animations can become a very challenging part due to complexity. | ||
Line 430: | Line 433: | ||
- | ==== Add Armature & SkinController | + | === Add Armature & SkinController === |
To make skin- or skeleton-animations possible you will need an armature with a hierarchy of joints representing the internal skeleton of a body. | To make skin- or skeleton-animations possible you will need an armature with a hierarchy of joints representing the internal skeleton of a body. | ||
Line 487: | Line 490: | ||
LCtrl.Skin.Skeletons.Add(LJtRef); | LCtrl.Skin.Skeletons.Add(LJtRef); | ||
- | // We have to link all relevant joint to the skin and add weights and joint-indices | + | // We have to link all relevant joint to the skin and add weights and vertex-indices |
+ | // " | ||
+ | // The sum of all weights (over all joints) for a specific vertex has to be 1.0! | ||
LJtRef := LCtrl.Skin.LinkJoint(Result.Root); | LJtRef := LCtrl.Skin.LinkJoint(Result.Root); | ||
LJtRef.Weights := [0.75, 0.75, 0.75, 0.75, 0.25, 0.25, 0.25, 0.25, 0, 0, 0, 0]; | LJtRef.Weights := [0.75, 0.75, 0.75, 0.75, 0.25, 0.25, 0.25, 0.25, 0, 0, 0, 0]; | ||
Line 515: | Line 520: | ||
</ | </ | ||
- | To animate the armature | + | === Add a Skin-Animation === |
+ | |||
+ | To animate the armature | ||
- | Regarding | + | Related to our armature and bones before, the code could look something like this: |
<file pascal> | <file pascal> | ||
Line 601: | Line 608: | ||
__NOTICE:__ You will need a stage for each joint to be modified during the animation. | __NOTICE:__ You will need a stage for each joint to be modified during the animation. | ||
- | ==== Create FMX Components from Definition | + | === Create FMX Components from Definition === |
<file pascal> | <file pascal> |