Character: Difference between revisions
(→Round6: screenshot) |
No edit summary |
||
Line 41: | Line 41: | ||
* Parts: Head, Body, HoofLeft, HoofRight, LegLeft, LegRight | * Parts: Head, Body, HoofLeft, HoofRight, LegLeft, LegRight | ||
* Features: 6 colors, Height scale, Hats (manes, horn, etc), Faces (eye color and style), Tools (hoof wields, telekinetic effects), Body (tails, wings, bags etc) | * Features: 6 colors, Height scale, Hats (manes, horn, etc), Faces (eye color and style), Tools (hoof wields, telekinetic effects), Body (tails, wings, bags etc) | ||
== Technical details == | |||
The character starts off as a 3D model which has limb parts, an armature and some animations. The model is then exported as glTF. From there, a custom definition file must be created containing... | |||
* The exported character model (+Y Up, include animations, do NOT include materials, apply modifiers if applicable) | |||
* which parts it consists of (Head, Torso...) and their respective bones (BHead, BTorso). Also, must name the root bone (BRoot). Please note that the root bone must be the parent of all other bones. The bones must NOT have the same names as the body parts. | |||
* The character controllers looks for these animations (the tree structure represents fallbacks if not found): | |||
** Idle | |||
*** Sit | |||
** Walk | |||
*** Climb | |||
*** Swim(?) | |||
** Wield | |||
** Jump | |||
* Min and max scale - set both to the same value to disable rescaling in character editor, 1 for no scaling. | |||
* Unit height - Height from the bottom of the foot to the top of the head, used for collider creation. | |||
* Accessory support - Accessory type + relative origin point translation and quaternion + max amount. | |||
{| class="wikitable" | |||
|+Character binary format draft | |||
!Marker | |||
!Length (uint32) | |||
!Contents | |||
!Notes | |||
|- | |||
|ba fb 00 | |||
|1 | |||
|Version (uint8) | |||
|Format marker for | |||
<code>application/x-freeblox-character</code> | |||
<code>.vfbc</code> | |||
|- | |||
|ba aa 00 | |||
|Number of entries | |||
|Part (string) : Mesh Asset ID (string) : Bone (string) : AttachTo (string) : PointOrigin (vec3) | |||
|Character parts | |||
|- | |||
|ba ab 00 | |||
|Data length | |||
|Min scale (float) : Max scale (float) : Unit height (float) | |||
| | |||
|- | |||
|ba bf 00 | |||
|Number of entries | |||
|Accessory type (enum uint8):Count (uint8):AttachTo (string):PointOrigin (vec3):QuatOrigin(quat) | |||
| | |||
|- | |||
|ba de 00 | |||
|Number of entries | |||
|Texture type (enum uint8) | |||
| | |||
|- | |||
|ba cd 00 | |||
|String length | |||
|Author information (string) | |||
| | |||
|- | |||
|ba ff 00 | |||
|Binary size | |||
|Model file | |||
|glTF binary data | |||
|} | |||
<small>Note 1: <code>:</code> is shorthand for NUL byte (x00).</small> |
Revision as of 18:12, 7 July 2023
A character consists of a mesh of multiple parts, a skeleton and animations, and feature flags dictating how the character can be customized.
Character features
Character models
Character models are the models player characters use when they spawn into a world.
By default, the primary character model is Round6, composed of 4 rounded limbs, a rounded torso and a cylindrical head.
Round6
The character model contains the following:
- Parts: Head, Torso, ArmLeft, ArmRight, LegLeft, LegRight
- Skeleton: BRoot, BTorso, BHead, BArmL, BArmR, BLegL, BLegR,
- Animations: Idle, Walk, Jump, Sit, Wield, Climb
- Standard UVs: Shirt, Pants (Roblox-compatible)
- Features: 6 colors, Height scale, T-shirts (1), Shirts (1), Pants (1), Hats (5), Faces (1), Body (5), Tools (1).
Character colors
Character model parts' colors can be picked. Configurable by character model.
Character height
Character vertical scale can be modified. Can be disabled for character model.
Character clothing
Three main parts: T-shirts, Shirts and Pants. Combined into single character texture.
When creating, need to specify which character model(s) it supports.
Character accessories
Hats, Faces, Tools, Front, Back, etc..?
When creating, need to specify which character model(s) it supports (or add variations for different models?)
Ideas and other stuff
MyLittleQuadruped character model
Basic pony character model inspired by My Little Pony: Friendship is Magic, usable for ponies and furry characters.
- Parts: Head, Body, HoofLeft, HoofRight, LegLeft, LegRight
- Features: 6 colors, Height scale, Hats (manes, horn, etc), Faces (eye color and style), Tools (hoof wields, telekinetic effects), Body (tails, wings, bags etc)
Technical details
The character starts off as a 3D model which has limb parts, an armature and some animations. The model is then exported as glTF. From there, a custom definition file must be created containing...
- The exported character model (+Y Up, include animations, do NOT include materials, apply modifiers if applicable)
- which parts it consists of (Head, Torso...) and their respective bones (BHead, BTorso). Also, must name the root bone (BRoot). Please note that the root bone must be the parent of all other bones. The bones must NOT have the same names as the body parts.
- The character controllers looks for these animations (the tree structure represents fallbacks if not found):
- Idle
- Sit
- Walk
- Climb
- Swim(?)
- Wield
- Jump
- Idle
- Min and max scale - set both to the same value to disable rescaling in character editor, 1 for no scaling.
- Unit height - Height from the bottom of the foot to the top of the head, used for collider creation.
- Accessory support - Accessory type + relative origin point translation and quaternion + max amount.
Marker | Length (uint32) | Contents | Notes |
---|---|---|---|
ba fb 00 | 1 | Version (uint8) | Format marker for
|
ba aa 00 | Number of entries | Part (string) : Mesh Asset ID (string) : Bone (string) : AttachTo (string) : PointOrigin (vec3) | Character parts |
ba ab 00 | Data length | Min scale (float) : Max scale (float) : Unit height (float) | |
ba bf 00 | Number of entries | Accessory type (enum uint8):Count (uint8):AttachTo (string):PointOrigin (vec3):QuatOrigin(quat) | |
ba de 00 | Number of entries | Texture type (enum uint8) | |
ba cd 00 | String length | Author information (string) | |
ba ff 00 | Binary size | Model file | glTF binary data |
Note 1: :
is shorthand for NUL byte (x00).