Skip to main content

⚙️ Prefabulous Avatar V1.11.2

Fix Prefabulous was not able to compile because it was using a deprecated define VRC_SDK_VRCSDK3 that was missing on some users' projects.

☀️ Denormalized Avatar Exporter

Compatible with VSeeFace
Compatible with VNyan
Compatible with Warudo

I am releasing "Denormalized Avatar Exporter", a Unity Editor tool that lets you export avatars normally designed for use in VRChat into VTubing apps, without the disruptive pre-processing steps that would normally be needed:

You don't have to normalize your avatar bones, and you don't have to export your avatar to VRM and import that VRM back into Unity.

Normalization is done when the avatar is being exported, so that you can keep editing the original avatar model file or prefabs just like anyone would normally do for a VRChat avatar.

It will also permit the use of some non-destructive avatar tools initially created for VRChat that are based on NDMF (Non-Destructive Modular Framework).

🗒️ Open documentation

☀️ Generate Twist Bones (Prefabulous V1.11)

A new component, Generate Twist Bones (Alpha), has been added to Prefabulous.

New component: Generate Twist Bones (Alpha)

This component will generate twist bones, which improves the look of the elbow joint by twisting the part of the lower arm that is closer to the elbow.

It creates new twist bones with constraints, and automatically repaints the bones weights of all meshes of the avatar which use that bone.

warning

🚧🚧🚧 This component is currently in an alpha phase. 🚧🚧🚧

At the moment, it only fully supports meshes that are part of the base mesh armature.

The current version will not be able to generate twist bones for additional meshes used by VRCFury Armature Link, and may not be able to generate twist bones for additional meshes used by Modular Avatar Merge Armature.

Both are intended to be supported in the future, but it's significantly harder to do so. The component is still released in this state of development as it is beneficial for the bare skin of your avatar.

Thank you for your understanding.

🗒️ Open documentation

About Prefabulous 2.0

This update does not include the Prefabulous Universal / Prefabulous for VRChat package split yet, as that particular update needs more regression testing to ensure the stability of existing projects.

✨ FaceTra Shape Creator V0.8

New Construction Line: Blush Modifier Selection

Many avatars have blendshapes hidden inside the head to make the character blush.

However, when you squint, or when you puff your cheeks, these blush blendshapes will visibly clip through your face expressions.

To address this, Blush Modifier Selection is a new construction line, which can only be selected using blendshapes (it is not a traditional vertex selection). It can be left empty.

When blendshapes are added to the Blush Modifier Selection, the blendshape will be simulated to be active, so that they will be moved by the following shapes:

  • Cheek Squint
  • Cheek Puff

Unfortunately, this will not work with all avatar bases. The density of the blush mesh needs to be similar (or half as similar) to the face mesh itself. If it's a gigantic polygon, it will not work so well.

Convert from Unified Expressions to ARKit

Functionality almost identical to Prefabulous Convert Blendshape Conventions has been added natively to FaceTra Shape Creator, in the Output section. This only affects blendshapes that FaceTra creates, and will not affect any other non-face tracking related blendshapes.

  • Contrary to Prefabulous, the VRChat SDK is not required.
  • This allows you to export blendshapes using the ARKit naming convention. It will still be a bit messy as FaceTra creates many more blendshapes than ARKit needs, such as left/right variants for blendshapes that do not have left/right variants in ARKit.
    • The blendshapes will only be converted when entering Play mode, or baking the avatar using NDMF, or preparing a Resonite bake using FaceTra. Edit mode will still display the blendshapes using the Unified Expressions naming convention.

⚠️ Advance notice for Prefabulous 2.0

Hello,

This is an advance notice regarding a future change for Prefabulous Avatar.

In a future update, Prefabulous will be split into two packages:

  • Prefabulous Universal will be a package that does not require VRChat, and will contain the following components:
    • Change Avatar Scale
    • Edit All Mesh Anchor Override
    • Edit All Mesh Bounds
    • Assign UV Tile
    • Convert Blendshape Conventions
    • Delete Polygons
    • HaiXT Generate Blendshapes for Face Tracking Extensions
    • Recalculate Normals
    • Replace Textures
  • Prefabulous for VRChat will be a package that requires VRChat, and will contain the following components:
    • HaiXT Face Tracking Extensions
    • Lock Locomotion Menu Item
    • Mass Blendshape Sync
    • Import Expression Parameters
    • Blank Expressions Menu and Parameters
    • Blank FX Animator
    • Blank Gesture Animator
    • Replace Action Animator
    • Replace Locomotion Animator

The aim of this split is to allow the development of Prefabulous Universal components in a way that benefits avatar frameworks of other social VR platforms, apps, and non-social VR apps (for instance, any VRM-compatible app).

Most Prefabulous for VRChat components will depend on VRChat-specific animators and animation quirks, or component structures pertaining specifically to VRChat that would be uncommon in other social VR apps.

For most VRChat users, this change should be invisible if you use VCC. If you are a developer who internally references classes or entities within Prefabulous, some changes are expected as described below.

If you have any questions, please ask me about it on the Discord server.

Thank you for your understanding.

Anticipated changes

For VRChat users

warning

This describes a future update, this has not yet been released at this time of writing.

For most VRChat users, this change should be invisible.

  • Installing Prefabulous for VRChat will automatically install Prefabulous Universal as a VCC dependency.
  • The existing components in your scenes will continue working as if nothing has changed.

However, if you're installing Prefabulous without VCC, you will need to:

  • Open a blank scene in Unity Editor.
  • Remove the Packages/dev.hai-vr.resilience.prefabulous folder
  • Install the Prefabulous Universal package on GitHub.
  • Install the Prefabulous for VRChat package on GitHub.

For developers who might be referencing Prefabulous entities

  • The GUIDs for these components will not change.
  • The assemblies for most of these components will change.
  • The namespace for most of these components will change.
  • Some component names will change.
    • The prefix "PrefabulousHai" is likely to be changed to just "Prefabulous".
  • The NDMF plugin names will change.
  • Classes will be moved across packages.
  • Many classes used internally by Prefabulous will change name or will be moved around.
  • The technical package name of Prefabulous for VRChat will be the same as the one currently used for Prefabulous Avatar.

If you're a developer who might be concerned by such changes, you're invited to let me know about it on the Discord server.

✨ FaceTra Shape Creator V0.7

Major feature: Add Tailoring

  • Tailoring allows you to transfer a FaceTra file made for one avatar base, to a completely different avatar base.
  • For example: Transfer from Karin to Lime, or transfer from Kikyo to Moe.
  • Tailoring works by transferring deformations relative to the Construction Lines of the original avatar base, to the Construction Lines of your new avatar base.
    • The difference in size of the Construction Lines is taken into account. For example, when the width of the mouth differs greatly between the two avatar bases, the deformations will be scaled accordingly.
  • When using Tailoring, you only need to specify the Construction Lines of your new avatar base, and the blendshapes of your new avatar base.
  • This feature is experimental.

🗒️ Open documentation

Fix: Add workaround for small meshes

  • Some meshes exported from Blender have an incorrect scale of 0.01 or similar.
  • This triggers an internal conflict with Unity.
  • Due to the nature of purchased avatars and reimporting models with different scale or coordinate system, it is preferable not ask the user to fix the export themselves.
  • To fix this, if the Workaround for small meshes is enabled in Data Calibration, then:
    • We create a blendshape with a maximum weight of 10000 instead of the usual 100 (a hundred times larger).
    • The components (vertex, normal, tangent) are a hundred times larger.
    • This hundred times factor prevent the vertices from being discarded.
    • Since the controlling animators only animate blendshapes to the value of 100 (and even then, in the case of VRChat, it clamps to 100), the blendshapes are effectively at the expected weight at 100.

Other fixes

  • Unassigning the Face Mesh is now done by pressing a "×" button, so that the face tracking mesh is safely removed from the mesh.
  • The user is warned if the model was imported with no normals or tangents, as this is not supported.

🔍 View changelog

⚙️ Prefabulous Avatar V1.10.2

This is a technical update for Prefabulous Avatar:

  • This version now requires Modular Avatar V1.9.9 minimum.
  • Modular Avatar V1.9.9 requires NDMF V1.4.0 minimum.
  • Integrate Import Expression Parameters with Modular Avatar Information.
    • The number of synced bits used by Import Parameters is now shown in the Modular Avatar Information panel.

2024-03-27-p1-Unity_yH0bzcLRVK.png

✨ Lightbox Viewer V2.1.0

Re-bake lighting of Lightbox scene in Unity 2022:

  • The current lightmap seems to misbehave in Unity 2022, especially the White box.
  • Lighting has been re-baked in Unity 2022.
  • The package is now classified as being a Unity 2022.3 package.

✨ Double Hip Tracker V1.2.0

This update provides no changes on the trackers themselves, only compatibility improvements.

  • Update OpenVR DLL to 2.5.1. This seems to improve a weird compatibility issue where trackers are not detected, which had affected a Pico 4 user.
  • Update ImGui versions, in an attempt to troubleshoot an user whose window seemed to be crashing on AMD GPU.
  • Add noUi and vrcOscPort config options:
    • A custom vrcOscPort can now be set in the JSON config.
    • The program can now start without an UI in the JSON config.
    • The JSON config can be created (user_config.json in the same folder as the .exe) by toggling the Double Chest Tracker checkbox ON and OFF.
{
"useHip": true,
"useChest": false,
"chestSerialA": "",
"chestSerialB": "",
"chestPrioritize": false,
"noUi": false,
"vrcOscPort": -1
}

✨ Vixen V1.1.0

Custom opposite values in Properties

Until this update, properties were using the value in the Scene as the "opposite" value. This means you only need to specify the new value of the property, and Vixen would animate between your value and the scene value.

Properties can now use a Custom value of your choice as the "opposite" value.

  • In this new mode called "C" for "Custom", the value in the scene objects are ignored.
    • The scene objects remain unchanged, the opposite value is not baked.
    • This means that if the user has safety settings set to keep animations OFF, Vixen Control has no effect on the appearance of your avatar: the scene remains the source of truth.
    • When multiple objects are used (i.e. selecting multiple objects, or recursive selection), the value in the Scene may be different for each object (i.e. different outline width for each object).
      • They will effectively be overriden by the opposite value.
  • The previous mode called "S" for "Scene" remains the default:
    • When multiple objects are used (i.e. selecting multiple objects, or recursive selection), the value in the Scene may be different for each object (i.e. different outline width for each object).
      • Contrary to "C" mode, Vixen will animate all of these values independently from the value of each respective object to the scene value.
      • This is already the default behaviour in past versions.

Other

  • When baking, all Vixen Control components are now deleted so that further bakes will not repeat those operations.
  • Vixen now provides the synced parameters to NDMF, which is shown in the Modular Avatar Information panel.
  • Now requires Modular Avatar 1.9.9 minimum.
  • Now requires NDMF 1.4.0 minimum.

Fixes

  • Attempt to fix incorrect behaviour of Item slot, Flags, and Ejects in some complex scenarios:
    • When an item slot exits, delay everything by 1 frame so that the animator has time to acknowledge a change in its parameters caused by switching OFF other controls.
    • Remove the default state transition-to-entering shortcut because that transition incorrectly conflates Switch ON and Active.
    • Remove the unconditional transition to the default state because that transition incorrectly conflates Switch ON and Active.
    • All item slots now generate a None state, even slots with default, as slots with default may need to remain inactive.
    • The None slot is now responsible for switching on the default slot, which may or may not result in the default slot becoming active.
  • Controls of type OSC should now be created properly. They were previously created with an generated parameter name instead of the specified one.
  • The "Fix invalid references" buttons now use the correct path, instead of incorrectly interpreting the path as being a parameter name.

⚙️ Prefabulous Avatar V1.10.2-beta.2

Circumvent a possible bug in VCC by removing NDMF 1.4 from vpmDependencies:

  • VCC fails to update Prefabulous, with an error message.
  • This might be caused by there being a 3-package deep chain dependency, although this is not confirmed.
  • To alleviate this, remove the dependency to NDMF 1.4 from vpmDependencies.
  • NDMF 1.4 is still implied by the use of Modular Avatar 1.9.9 minimum.

⚙️ Prefabulous Avatar V1.10.2-beta.1

This is a technical update for Prefabulous Avatar:

  • This version now requires Modular Avatar V1.9.9 minimum.
  • This version now requires NDMF V1.4.0 minimum.
  • Integrate Import Expression Parameters with Modular Avatar Information.
    • The number of synced bits used by Import Parameters is now shown in the Modular Avatar Information panel.

2024-03-27-p1-Unity_yH0bzcLRVK.png

☀️ Replace Textures, Convert Blendshape Conventions, Mass Blendshape Sync (Prefabulous V1.10)

Three new components have been added to Prefabulous Avatar.

New component: Replace Textures

This component lets you upload multiple versions of your avatar but with different textures, without needing to duplicate the materials.

It also displays which materials use which textures, although you could also be using lilAvatarUtils for this.

Unity_lJ03XfMYPW.png

New component: Convert Blendshape Conventions

This component lets you convert blendshapes from one naming convention to another naming convention, such as converting Unified Expressions blendshapes to ARKit blendshapes.

Unity_Kwht5QWD83.png

New component: Mass Blendshape Sync

This component will synchronize all blendshapes that two meshes share in common.

This is ideally used with renderers that have a massive quantity of blendshapes that need to be synced, such as face tracking.

Unity_kmeSxcDqt8.png

Other

  • All Prefabulous components will now be removed after baking, so that uploading a baked avatar will not bake them twice.
  • Blank Gesture Animator now generates one animator layer that VRChat requires, instead of zero layers.
  • The dependency to "Animator As Code - NDMF Processor (Alpha)" has been removed.
  • Don't warn when using NDMF 1.4.x
  • Don't warn when using Modular Avatar 1.9.x

🔍 View changelog

✨ Prefabulous Avatar V1.9

Update Assign UV Tile

Assign UV Tile can now assign the entire mesh to an UV Tile.

Do this by switching the mode from BlendShapes to Entire Mesh.

2024-01-18-p2-Unity_OLXaqgjeBM.png

tip

"Entire Mesh" should be used alongside an avatar optimization tool that will merge existing meshes, such as d4rkpl4y3r's d4rkAvatarOptimizer or anatawa12's AvatarOptimizer.

Prefabulous Avatar does not provide any mesh optimization components that rectifies animation paths at this time.

🔍 View changelog

🗒️ Open documentation