Skip to main content

☀️ LetMeSee (LMS)

🌊 Any Platform

I am releasing LetMeSee (LMS), a tool that lets you see your content in VR, with the Unity Editor in Edit Mode.

The Scene tab is used as the camera viewpoint. You can use this to fly through avatars and worlds.

This product is released for free.

🗒️ Open documentation

Using LMS for worlds and level design.

Using LMS for avatars.

⚠️ Advance notice for Animator As Code V1

Hello,

In February 2022, I had released Animator As Code version 0 (V0).

During 2023, I had started to move towards Animator As Code to version 1 (V1), in order to do the following breaking changes:

  • Pull major contributions from @galister which:
    • Adds support for sub-state machines, which is important because it enables the creation of states that evaluate multiple transitions within one frame, which is not possible to do without sub-state machines (with one exception).
      • This trait is already extensively used in ComboGestureExpressions V2 and above.
    • Share functionality of state and sub-state machines.
    • Share functionality of Int and Float parameters together.
  • Make it usable in non-VRChat avatar projects.
    • VRChat-related functionality is now exposed as extension functions in a separate package.
    • Also, separate destructive functions and non-destructive functions.
    • Since this no longer requires a VRChat project, this also means it may now be usable in VRChat world projects.
  • Make it more usable in non-destructive components.
    • It is already in use in Prefabulous and Vixen.
  • Move to packages, for distribution using VCC (and now, ALCOM).

My own projects, such as ComboGestureExpressions V3, Vixen, and Prefabulous for VRChat, already use Animator As Code V1.

The project has stalled for long enough, I think it's finally time to give it the last push for release.

V0 and V1 can be installed in the same project

One of the goals of Animator As Code V1 is to preserve the ability for V0 and V1 to be installed in the same project, as Animator As Code V0 is currently being used in the wild.

Therefore, installing Animator As Code V1 will not interfere with Animator As Code V0.

Even then, Animator As Code V0 and V1 are almost identical in syntax, so migrating from V0 and V1 should not be a challenge.

There may be some breaking changes during the beta

Animator As Code V1 will be entering a beta phase before release, which should ideally last a month.

Beta versions of Animator As Code V1 will only be available as pre-release packages, and they may contain breaking changes between two beta versions.

The objective of the Beta is to capture the last inconsistencies in the API, including naming conventions, method signatures, exposed functions and classes, public fields vs public properties, etc. It will also be to complete the documentation, both on this site, and inline documentation.

After Animator As Code V1 comes out of beta in 1.1.0, there should not be any more breaking changes.

Features

⚙️ Lightbox Viewer V2.2.0

This update tries to improve Lightbox Viewer speed in Edit mode, especially in avatar setups where there may be a lot of non-destructive components which have code that runs when that component is destroyed.

There are no speed improvements in Play mode.

🔍 View changelog

⚙️ ComboGestureExpressions V3.2.0

  • Allow installation with VRChat Avatars SDK 3.6.x
  • Remove the Beta label.
  • Attempt to fix "The script class couldn't be found" when adding curve keys.
  • Fix Eye Tracking toggle now uses Write Defaults setting.

☀️ Prefabulous V2.0

🌊 Any Platform

I am releasing Prefabulous V2. This update makes it so Prefabulous components can be used in other social VR platforms, apps, and VTubing apps. VRChat is no longer required.

Users who use the VCC/ALCOM package manager will not need to take special actions to update to V2. If you don't use VCC/ALCOM, see below.

Prefabulous has been split into two packages, and I am introducing a new package:

Updating from V1 to V2 for users who don't use VCC

If you don't use VCC, you will need to follow special upgrade instructions from V1 to V2:

  • If you use VCC/ALCOM, do not do this.
  • Open Unity.
  • Create a new empty scene.
  • Remove the Prefabulous package.
  • Add the new Prefabulous Universal package.
  • Add the new Prefabulous for VRChat package.

☀️ New component: Add ARKit to BlendShapeAvatar

A new component, Add ARKit to BlendShapeAvatar, has been added to Prefabulous for VRM.

This component automatically links all blendshapes found in your meshes as ARKit-named BlendShapeClips for use by VRM apps.

API Changes

Prefabulous is not meant to have any public API, but there has been changes that could affect other plugins.

In essence:

  • NDMF plugin qualified names have been changed,
  • class names have been changed,
  • namespaces have been changed,
  • assembly definitions have been changed,
  • internal classes have been changed.

Prefabulous Universal name changes

  • Component namespace: Prefabulous.Universal.Common.Runtime
Component classNDMF Plugin
PrefabulousAssignUVTiledev.hai-vr.prefabulous.universal.AssignUVTile
PrefabulousConvertBlendshapeConventionsdev.hai-vr.prefabulous.universal.ConvertBlendshapeConventions
PrefabulousDeletePolygonsdev.hai-vr.prefabulous.universal.DeletePolygons
PrefabulousEditAllMeshAnchorOverridedev.hai-vr.prefabulous.universal.EditAllMeshAnchorOverride
PrefabulousEditAllMeshBoundsdev.hai-vr.prefabulous.universal.EditAllMeshBounds
PrefabulousGenerateBlendshapesFTEdev.hai-vr.prefabulous.universal.GenerateBlendshapesFTE
PrefabulousGenerateTwistBonesdev.hai-vr.prefabulous.universal.GenerateTwistBones
PrefabulousRecalculateNormalsdev.hai-vr.prefabulous.universal.RecalculateNormals
PrefabulousReplaceTexturesdev.hai-vr.prefabulous.universal.ReplaceTextures
PrefabulousChangeAvatarScale-

Prefabulous for VRChat name changes

  • Component namespace: Prefabulous.VRC.Runtime
Component classNDMF Plugin
PrefabulousAccurateEyeTrackingdev.hai-vr.prefabulous.vrc.AccurateEyeTracking
PrefabulousBlankExpressionsdev.hai-vr.prefabulous.vrc.BlankExpressions
PrefabulousBlankFXAnimatordev.hai-vr.prefabulous.vrc.ReplaceAnimators
PrefabulousBlankGestureAnimatordev.hai-vr.prefabulous.vrc.ReplaceAnimators
PrefabulousReplaceActionAnimatordev.hai-vr.prefabulous.vrc.ReplaceAnimators
PrefabulousReplaceLocomotionAnimatordev.hai-vr.prefabulous.vrc.ReplaceAnimators
PrefabulousFaceTrackingExtensionsdev.hai-vr.prefabulous.vrc.FaceTrackingExtensions
PrefabulousImportExpressionParametersdev.hai-vr.prefabulous.vrc.ImportExpressionParameters
PrefabulousLockLocomotionMenuItemdev.hai-vr.prefabulous.vrc.LockLocomotionMenuItem
PrefabulousMassBlendshapeSyncdev.hai-vr.prefabulous.vrc.MassBlendshapeSync
(Universal)
PrefabulousChangeAvatarScale
dev.hai-vr.prefabulous.vrc.ChangeAvatarScaleForVRChat

Prefabulous for VRM and VTubing name changes

  • Component namespace: Prefabulous.VRM.Runtime
Component classNDMF Plugin
PrefabulousAddARKitToBlendShapeAvatardev.hai-vr.prefabulous.vrm.AddARKitToBlendShapeAvatar

🗒️ Open documentation

✨ Vixen V1.2.0

You can now add arbitrary blendshape properties on a SkinnedMeshRenderer, even if they don't exist in Edit mode.

This feature was added to support the upcoming release of Starmesh.

⚙️ 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.