Character: Difference between revisions

From Freeblox
Jump to navigation Jump to search
No edit summary
No edit summary
Line 43: Line 43:


== Technical details ==
== 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 character starts off as a 3D model which has limb parts, an armature and some animations. The model is then exported as glTF, with '''Custom Properties''' on the primary Armature defining the following properties:


* The exported character model (+Y Up, include animations, do NOT include materials, apply modifiers if applicable)
* The exported character model (+Y Up, include animations, do NOT include materials, apply modifiers if applicable)
Line 59: Line 59:
* Accessory support - Accessory type + relative origin point translation and quaternion + max amount.  
* Accessory support - Accessory type + relative origin point translation and quaternion + max amount.  


==== glTF Custom Properties for supported character models ====
Scale and Unit references '''1x1x1 scale Brick being 1 unit in size in each axis.'''
{| class="wikitable"
{| class="wikitable"
|+Character binary format draft
|+Armature Custom Properties
!Marker
!Property
!Length (uint32)
!Type
!Contents
!Mandatory
!Values
!Notes
!Notes
|-
|-
|ba fb 00
|FBLXC.Version
|int
|yes
|1
|1
|Version (uint8)
|Character model version
|Format marker for
<code>application/x-freeblox-character</code>
<code>.vfbc</code>
|-
|-
|ba aa 00
|FBLXC.Parts
|Number of entries
|string
|Part (string) : Mesh Asset ID (string) : Bone (string) : AttachTo (string) : PointOrigin (vec3)
|yes
|Character parts
|Part names separated by comma
|Tell the engine about the parts in this model.
This is used to convert the meshes into GameObjects.
Example line: Head,Torso,Arm.L,Arm.R,Leg.L,Leg.R
'''NB! Commas are forbidden in mesh names for this reason!'''
|-
|-
|ba ab 00
|FBLXC.ColorParts
|Data length
|string
|Min scale (float) : Max scale (float) : Unit height (float)
|no
|
|Part names separated by comma
|Colorable parts list
Example line: Head,Torso,Arm.L,Arm.R,Leg.L,Leg.R
|-
|-
|ba bf 00
|FBLXC.MinScale
|Number of entries
|float
|Accessory type (enum uint8):Count (uint8):AttachTo (string):PointOrigin (vec3):QuatOrigin(quat)
|yes
|
|1
|Minimum applicable scale within the character editor
|-
|FBLXC.MaxScale
|float
|yes
|1
|Maximum applicable scale within the character editor
|-
|FBLXC.UnitHeigth
|int
|yes
|1
|Character height in game units
|-
|FBLXC.Accessory
|string
|no
|Accessory types separated by comma
|Currently supported accessories: Hat,Face,Tool,Front,Back
|-
|FBLXC.Accessory.Hat.Parent
|string
|yes, if accessory in list
|Accessory parent object
|Default could be Torso
|-
|FBLXC.Accessory.Hat.Origin
|float array, 3
|yes, if accessory in list
|3D Vector
|Accessory origin relative to the parent
|-
|FBLXC.Accessory.Hat.Quat
|float array, 4
|no
|4D Quaternion
|Accessory origin rotation relative to the parent
|-
|-
|ba de 00
|FBLXC.Accessory.Hat.Amount
|Number of entries
|int
|Texture type (enum uint8)
|no
|
|Defaults to just one if accessory is defined
|Amount of accessories of type supported.
|-
|-
|ba cd 00
|FBLXC.Texture.TShirt
|String length
|string
|Author information (string)
|no
|
|Part names separated by comma
|TShirt,Shirt,Pants applicable parts.
The texture specified will only be applied to the listed parts.
|-
|-
|ba ff 00
|FBLXC.Author
|Binary size
|string
|Model file
|no
|glTF binary data
|Any text referencing the author
|Custom character author information
|}
|}
<small>Note 1: <code>:</code> is shorthand for NUL byte (x00).</small>

Revision as of 11:02, 19 August 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

Round6 is prominently displayed on this early screenshot

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, with Custom Properties on the primary Armature defining the following properties:

  • 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.

glTF Custom Properties for supported character models

Scale and Unit references 1x1x1 scale Brick being 1 unit in size in each axis.

Armature Custom Properties
Property Type Mandatory Values Notes
FBLXC.Version int yes 1 Character model version
FBLXC.Parts string yes Part names separated by comma Tell the engine about the parts in this model.

This is used to convert the meshes into GameObjects. Example line: Head,Torso,Arm.L,Arm.R,Leg.L,Leg.R NB! Commas are forbidden in mesh names for this reason!

FBLXC.ColorParts string no Part names separated by comma Colorable parts list

Example line: Head,Torso,Arm.L,Arm.R,Leg.L,Leg.R

FBLXC.MinScale float yes 1 Minimum applicable scale within the character editor
FBLXC.MaxScale float yes 1 Maximum applicable scale within the character editor
FBLXC.UnitHeigth int yes 1 Character height in game units
FBLXC.Accessory string no Accessory types separated by comma Currently supported accessories: Hat,Face,Tool,Front,Back
FBLXC.Accessory.Hat.Parent string yes, if accessory in list Accessory parent object Default could be Torso
FBLXC.Accessory.Hat.Origin float array, 3 yes, if accessory in list 3D Vector Accessory origin relative to the parent
FBLXC.Accessory.Hat.Quat float array, 4 no 4D Quaternion Accessory origin rotation relative to the parent
FBLXC.Accessory.Hat.Amount int no Defaults to just one if accessory is defined Amount of accessories of type supported.
FBLXC.Texture.TShirt string no Part names separated by comma TShirt,Shirt,Pants applicable parts.

The texture specified will only be applied to the listed parts.

FBLXC.Author string no Any text referencing the author Custom character author information