Modeling guide

This is a very simple guide to using Blender to work on the critter base mesh. It’s not a tutorial for using Blender itself. For more general references on using Blender and modeling, please see my avatar creator resources.

Blender files

The main one you should work with is critter.blend, which is the main mesh. There is also critter-subdivision.blend which is an older version of the model that still has the subdivision modifier in place, if you’d rather work with that for some reason.

Exporting the FBX

Here are the settings I use when I export the .fbx. The Transform settings are especially important in order to keep PhysBones working correctly.

  • Include: Limit to Active Collection
  • Transform:
    • Apply Scalings: FBX Units Scale
    • Forward: -Z Forward
    • Up: Y Up
  • Geometry:
    • Smoothing: Normals Only
    • Apply modifiers: disabled

Making fallbacks

The critter-10k.fbx and critter-15k.fbx meshes are generated by editing the mesh and choosing “decimate,” setting the ratio such that the face count is just below the 10K and 15K limits for Quest Good and Medium, respectively.

To determine the ratios to use, it’s a matter of knowing how many triangles are present (30,620 at the time of this writing) and dividing the number you want by that. For example, to get 15,000 triangles, you’d use a ratio of 15000/30620 = .48986, and for 10,000 triangles you’d use a ratio of 10000/30620 = .32658. Why Blender doesn’t let you simply enter a target triangle count is beyond me.

Another thing that has to happen for the fallback avatar is merging and atlassing the materials. To do that, I use Polytool, with the following settings (paste this data into the “Import/Export Preset” section and click “Import”):

{"name":"Bake textures","removable":true,"operationTypes":["Markcreator.Polytool.PolyMeshMerger","Markcreator.Polytool.PolySave"],"operations":["{\"enabled\":true,\"showSettings\":true,\"doMerge\":true,\"targetRendererName\":\"body\",\"rendererFoldout\":false,\"renderersToIgnore\":[],\"removeIgnoredRenderers\":true,\"limitBones\":false,\"boneLimit\":0,\"bonesToRemove\":[\"tail.baloobius\",\"tail.008\",\"tail.007\",\"tail.006\",\"tail.005\",\"tail.004\",\"middle.R.002\",\"middle.L.002\",\"thumb.R.002\",\"index.R.002\",\"thumb.L.002\",\"index.L.002\",\"ring.R.002\",\"ring.L.002\",\"tail.003\",\"middle.R.001\",\"middle.L.001\",\"thumb.R.001\",\"index.R.001\",\"thumb.L.001\",\"index.L.001\",\"ring.R.001\",\"ring.L.001\",\"middle.R\",\"middle.L\",\"thumb.R\",\"index.R\",\"thumb.L\",\"hair.back.R.001\",\"index.L\",\"hair.back.L.001\",\"ring.R\",\"ring.L\",\"hair.back.001\",\"hand.R\",\"hand.L\",\"horn.R\",\"horn.L\",\"tail.002\",\"foot.R.001\",\"foot.L.001\",\"arm.lower.R\",\"arm.lower.L\",\"horn.offset.R\",\"horn.offset.L\",\"hair.fringe.R\",\"hair.fringe.L\",\"hair.bangs.R\",\"hair.bangs.L\",\"hair.back.R\",\"hair.back.L\",\"boobs.upper.R\",\"boobs.lower.R\",\"boobs.upper.L\",\"boobs.lower.L\",\"hair.back\",\"boop\",\"arm.upper.R\",\"arm.upper.L\",\"ear.R\",\"ear.L\",\"snooter\",\"foot.R\",\"foot.L\",\"horns\",\"collar.tag\",\"eye.R\",\"eye.L\",\"ears\",\"hair\",\"jaw\",\"boobs.root\",\"shoulder.R\",\"shoulder.L\",\"leg.lower.R\",\"leg.lower.L\",\"head\",\"tail.001\",\"neck\",\"chest\",\"leg.upper.R\",\"leg.upper.L\",\"spine\",\"tail\"],\"showBoneList\":false,\"resetVertexColors\":false,\"doAtlas\":true,\"shader\":\"VRChat/Mobile/Standard Lite\",\"textures\":[\"_MainTex\",\"_MetallicGlossMap\",\"_BumpMap\",\"_ParallaxMap\",\"_OcclusionMap\",\"_EmissionMap\",\"_DetailMask\",\"_DetailAlbedoMap\",\"_DetailNormalMap\"],\"resolution\":2048,\"showMaterials\":false,\"materialsToRemove\":[],\"removeIgnoredMaterials\":true,\"removeWarningMaterials\":true,\"increasePadding\":false,\"paddingIncrease\":0.0}","{\"enabled\":true,\"showSettings\":false,\"compressTextures\":true,\"saveToFBX\":false,\"copyFBXSettings\":false,\"targetFolder\":\"/Critter/_PolyTool/\"}"]}

I run this on the Quest fallback generator object in order to generate the actual Quest fallback.

After generating the fallback, you’ll also need to modify the material to point to the correct VRChat shader. I use VRChat/Mobile/Standard Lite.

Comments

Before commenting, please read the comment policy.

Avatars provided via Libravatar