Blender 2.79 Asset Creation
Contents
- 1 Blender Asset Creation Notes - At the Mountains of Documentation Madness
- 1.1 Blender Plugins:
- 1.2 General Observations:
- 1.3 Good General Practises
- 1.4 Good Avatar Practices :
- 1.5 Optimizations in FBX file
- 1.6 UV Maps
- 1.7 Textures and Materials
- 1.8 Physics
- 1.9 Rigging
- 1.10 Skinning
- 1.11 Shapekeys and FST.
- 1.12 Mixamo -> Blender -> High Fidelity Flow
- 1.13 General FST notes:
- 1.14 On Animations
- 1.15 On Attachments
- 1.16 Side Notes
Blender Asset Creation Notes - At the Mountains of Documentation Madness[edit]
Originally authored by Menithal at this forum post.
All of this applies for Blender 2.79. which is currently the latest. For now, use Blender Render / OpenGL render instead of Eevee renderer. Gltf is in the works.
Last Updated March 15, 2018
- Pointing Towards the Blender Plugin
Blender Plugins:[edit]
The blender plugin automates a lot of the tiny details that when missed can cause pain and wonder why things don't work. So it is highly suggested to be using that with the general practices and information available on this page https://forums.highfidelity.com/user_avatar/forums.highfidelity.com/menithal/40/7460_2.png High Fidelity Blender Add-On / Plugin - Version 1.3 Released Tools, Tutorials, and Workshops
To install, download hifi_tools.zip from Here is a new tool for you guys to play around with, giving you a robust tool set to export and import from High Fidelity among other things: Features: MMD Guide Please note that some of the youtube videos below maybe outdated, but the concepts still remain Blender Scene Exporting: Support export from Blender to High Fidelity Marketplace, Batch exports a blender scene into multiple fbx files and places them correctly onto a scene ready to be sol…
General Observations:[edit]
- 1 Blender Unit = 1 Unit in HF (therefore meter).
- Imported and exported avatars are also scaled down by 0.01 in Blender, so they actually are truly massive.
- Export avatars Y axis - 90
- As far as we know, the new versions of Blender seem to do automatic world orientation correctly.
- Default FBX export settings now work fine.
- Keep textures in the same directory as the model if embedding the Textures. This makes sure blender exports them correctly in fbx.
Good General Practises[edit]
- Use PNG or JPGs only. TGA is not supported
- Avoid having too many separate mesh groups. Keep it below 4, preferably 1. This is especially true if importing avatars from SL which use prims instead of mesh. This is to avoid from the LOD engine from “removing parts of the avatar”. An exception to this is with Physics Hulls where you must have Convex Meshes.
Good Avatar Practices :[edit]
- Avatar models Must have Geometry which is weighted to the Head: Without this, the Physics will bork out as Hifi Cannot determine what physics shape the avatar must use.
- Rigging to an Absolute T-pose so that all bone rotations are relatively same.
- Full Body Avatar models (no textures embedded) should aim for 3 MB mesh size (less than 15k polygons total + UV + weights + standard armature).
- Head Avatar model should aim for less than for 5 k polygons. (that is still a LOT)
- Try to keep the total size of a full avatar with textures less than 15mb. HF does a lot of throttling so lower the better and more visibility compared to more polygons: While your avatar is a priority for you, this works for everyone else, so the more resources your avatar uses the more likely it's going to be cut first from the rendering queue. You can, of course, mitigate this by using LOD models.
- Aim for more detail on the face.
Optimizations in FBX file[edit]
- If you have your own web service or plan on reusing already uploaded textures, keep the Path Mode in Auto, and manually point to the texture directory instead.so that you can keep reusing a library of textures to save bandwidth and server space instead. You should keep textures in a consistent path.
- If you are using
Dropboxa service that hashes your files to host avatar files temporarily while experimenting, make sure to set Path Mode to Copy and Check the Embed Textures button. Credit goes to @Judas. - Keep only the mesh and the armature during export Everything extra adds to the bounding box size and file size.
- You DO NOT have to bake animations unless making animations only.
- If you are exporting animations, export only the armature. This allows the animation to be small and quick to load and cross-compatible with other avatars or objects using the same body.
UV Maps[edit]
- Multiple UV Maps on a single mesh is not supported: Instead, combine your UV maps into a single one, or separate your mesh on these components to separate parts. The First UV Map in the list will be used for the textures.
- Make sure you have as small of a number of UV maps on the avatar as possible.
Textures and Materials[edit]
- Before working on textures, it is highly suggested you have a Zone with a skybox applied to allow for reflections to show best.
- Keep textures below 2048 px x 2048 px. Any larger size get resized and are just a waste of bandwidth for both the servers and clients
- Use PNG or JPGs only. TGA is not supported
- Avoid using too many separate materials. Instead, favor a single material and texture over multiple smaller ones.
- If planning to Embed Textures, make sure to have the textures in the same directory as the model before binding the textures. Embedded Textures mode in Blender doesn’t otherwise bind the textures properly to fbx
- If you want to have transparency, use Mask Transparency.
- You must apply a material to the model, or it will not show or behave strangely.
- High Fidelity binds textures from
- Alpha comes from the Albedo alpha mask
- Binding Reference: Note, Blender Specular Color / Metallicness now allows gradients.
SpecularHardness.jpg2464×718 730 KB
- Blender Add-on now contains a Tool allowing for the faster and easier binding of Textures.
- Texture Binding video tutorial available (legacy)
High Fidelity Tutorial: PBR Texture Binding Tutorial from Blender to High...
Physics[edit]
- Export Physics mesh as Obj.
- Physics mesh must consist of convex mesh.
- There can be multiple Physics mesh, They, however, cannot be joined into a single mesh object and must be kept separate (they must be convex)
- You may use V-ACHD to generate Convex Mesh groups. See tutorial at https://alphas.highfidelity.io/t/creating-collision-shapes-within-blender/6982/
Rigging[edit]
Quick Flow
Quickie. Avatar Upload of existing model
Skinning[edit]
- If a Mesh vertice does not have a weight assigned and has an armature it will fold toward a client avatars neck. This occurs also for entities
Shapekeys and FST.[edit]
- (Incomplete) List of Shapekeys used by Faceshift
- As long as shapekeys (in Blender, referenced as blendshapes in docs) are named the same as in the Faceshift Rig, They will work out of the box.
- You can define maximum constraints for shapekeys in the fst file or bind Shapekeys to other shapes in the following manner:
bs = <FS Shape Key> = <Model shape key> = <Float value>
for example:
bs = MouthDimple_L = Smile_Left = 0.25
This affects ALL meshes using the shapekey Smile_Left - You can also do an advanced selection of shapekeys ones if you have a multimesh avatar such as:
bs = MouthDimple_L = mesh_id.Smile_Left = 0.25
So that only mesh with the id of mesh_id will have its Smile_Left value set to 0.25 when FS shapekey Mouth Dimple L value is 1. - You can combine complex shape mixes for a shape such as
bs = MouthDimple_L = mesh_id.Left_Lip_Left= 0.25 bs = MouthDimple_L = mesh_id.Left_Lip_Up = 0.5
To mix Left_Lip_Left and Left_Lip_Up shapekeys together when MouthDimple_L shape is being set. - A word of caution: avoid having an extra period in the shapekey name or mesh_id these as it will break the shapekey_binding: Default Untitled# mesh_ids can also cause this, so name your meshes.
- Also avoid stacking the same shapekey_value in the same FS Shape key as this will cause the values to be added to each other.
Mixamo -> Blender -> High Fidelity Flow[edit]
(outdated) High Fidelity Tutorial: Mixamo Fixes in Blender for High Fidelity
General FST notes:[edit]
*Instead of binding Hips as the Root bone, bind the armature object instead as the root. This should solve the bounding box issue. Not allowing Animations to shift Hips should help after.- If the above does not fix the bounding box issue, you can also add an additional root bone that should be the “root” - Thanks @Triplelexx
- You can apply absolute paths to
textureandfilenamesources. - You can apply rx, ry, rz for rotation overrides, and tx, ty, tz for translation overrides.
- Best to do all of the shapes, since you never know if a user will have Faceshift or is using the camera tracking.
- Make sure you bind the following as freejoints on fst package for them to work with the hand tracking solutions: Confirmed.
RightShoulder RightArm RightForeArm RightHand LeftShoulder LeftArm LeftForeArm LeftHand.
Most of these are bound by default, however, I am not sure if the Interface packager actually writes them into the file (only Free joint I see occasionally is just the first entry). Not sure if this is fully true, but the IK Constraints do not display if these are not set. - (Deprecated) You used to be able to inject LOD models into the fst file by adding the following to it:
lod=<PathToMediumModel>.fbx= 10 lod=<PathToLowModel>.fbx= 15 lod=<PathToLowestModel>.fbx = 20.
On Animations[edit]
Cross Suite animations now work: There are no longer any issues with rotations as long as Pre/Post Rotations setting is enabled in the client (this may be off by default).
Make sure Simplify is set to 0, and there is no FBX Root defined in the Armatures tab.
On Attachments[edit]
Cross Suite attachments work. Just make sure to follow the standard if set to be “soft”. Any extra bones in the clothing will behave as if not bound to anything if the avatar it is bound to not have them.
Side Notes[edit]
You do not have to follow the standards if you just want to make a unique avatar that isn't compliant with the other avatar animations or Clothing.
You can play animations even if your avatar doesn’t have bones for it. If your avatar has the bones they will be animated. This means Animating a Tail or Ear or Cape can be done and then applied as an additional idle animation on your avatar if your avatar has the bones for them.