New features in Animator Wizard and misc#5
Open
strakacher21 wants to merge 50 commits into
Open
Conversation
Fixed numerous bugs in Animator Wizard script (flag fixes, added new split functions, code optimization), changes in icons, fixed some animations, added Avatar 3D Thumbnail (avatar preview in VRChat). Fixes to some avatar functions, and FaceTracking by parameters has been simplified (not tested yet!).
…smooth params fix
Trivia: - FaceToggleActiveParam has been fixed (save bug), as well as the name ftprefix+LipSync; - The rarely used “ftreset” function was removed (one bool variable was freed); - Added Avatar 3.0 manager package.
…rd script and fix view position
Added baked avatar texture (from the color attribute). Updated UV mapping (due to Mip Maps issues with Unity) and made cosmetic adjustments to Blender layouts.
this is so that i can understand which scene I am in and easily switch between them without having to search for them in folders. You can also add more scenes via the path “scripts\Scene\SceneSwitcher.asset” in the vrcfox unity project (B&C).
before switching scenes, the current scene must be saved and AssetMenu on scene
- fix adding ftActiveParam, ExpTrackActiveParam, LipSyncActiveParam to VRCExpressionParameters; - fix the float param value "OSCsmooth/Blend" (which caused OSCsmooth to not work); - remove adding the driver to setupEyeTracking; - fix VRC Animator Tracking Control in "face tracking off" state (TrackingTracks instead of TrackingAnimates); - when the "Shape Preferences flag" is disabled, an empty layer was created; - add the function of changing Layers start name.
…equent use refactored AnimatorWizard to repack FX/Gesture/Additive controllers into fresh controllers using VRLabs’ AnimatorCloner, then swap them back in place under the original controller paths. This keeps custom layers and newly generated Animator Wizard layers while dropping unreachable “garbage” objects that Unity leaves inside controllers over time. The garbage was accumulating specifically due to frequent use of the Animator Wizard script. This also resolves the long‑standing controller size growth reported in issue: strakacher21/vrcfox-2.3_body_and_cloth_edition#9.
The mesh_smooth_type='EDGE' setting in the export script prevented custom normals from being transferred correctly to Unity, so that line has been commented out. After that, the ImportFBX Warnings: Can't generate normals for blendshape warning appeared, which was expected. To remove the warning in Unity, the Legacy Blend Shape Normals option was disabled, and Blend Shape Normals was set to None in the Unity FBX import settings. Implemented automatic texture resolution switching integrated with SceneLabel: when switching scenes, TextureResolutionApplier applies settings for each scene from SceneTextureAsset, allowing resolution changes (e.g., 4K → 2K) for different platforms without manually resizing textures.
- split the monolithic AnimatorWizard into partial class files (Core, Gesture, OSC smoothing, Editor, etc.) - preserve AnimatorController refs (no Missing in prefab) Rewrote "RepackAnimatorControllers()": stop deleting/moving ".controller" assets (preserve GUID/.meta). Build the merged controller in a temp folder using the same filename, then overwrite the original file and force a reimport-this removes `Missing (Runtime Animator Controller)` in prefabs and avoids the “Fix object name” warning - auto-remove Unity "Base Layer" on generate after generating animator layers, delete Unity’s auto-created "Base Layer" from non-default avatar animation controllers to avoid duplicate layers next to the system layer (SystemName) - clean up generated layers safely make AnimatorWizard re-runnable across feature-flag changes by removing only its own generated layers (via an explicit whitelist) on FX/Gesture/Additive controllers and keeping user custom layers at the bottom of the stack - fix Face Tracking LipSync Control fixed an error where the Face Tracking Lip Sync Control parameter was incorrectly created when the corresponding flag was disabled. fixed a bug where if the Face Tracking Lip Sync Control was disabled (in AnimatorWizard), Lip Sync would not work at all when Face Tracking was enabled in-game. - add custom Gesture Expressions Block bool list adds a configurable list of bool parameter names that, when true, prevent hand gestures from driving facial expressions (gesture-driven brow/mouth blendshapes) - allow FT shapes to be single or split into Left/Right variants add a per-shape “Left and Right Shapes” checkbox for FT single/dual shape entries: when enabled generates ShapeLeft + ShapeRight, otherwise generates one Shape param I hope I didn't miss anything lol
adds layout-only 3d viewport header popover with export settings
- add custom block lists for face toggle, face/eye tracking toggles; - fixed clothing creation; - fix UV map cleanup when exporting (3+ UV layers); - also, the Blendshape normals export was corrected and the FBX model in Unity was slightly adjusted for this (now you can use custom normals and there will be no warning: Can't generate normals for blendshape); - Proper avatar functionality when you're AFK.
…tion and export to unity.py improvement AnimatorWizard Color customization can work with lists now. Previously, you needed to use special prefix names such as "pref/toggle/" (for bool behavior) or "pref/slider/" (for float behavior). Now, these are all under the same prefix "pref/body/", and the switching logic is specified in the GUI. Additionally, vrc parameters such as pref/body/(bool or float)/ are created. In the future, I plan to implement automatic addition/detection of parameters for Face Tracking, Shape preferences, and other features to save time on manually entering names in the AnimatorWizard GUI. export to unity.py (improve export-to-unity [separate meshes, rig rename, vertex colors]): - Added Separate meshes mode: a list of meshes that are exported as separate meshes and are not joined into Body. - Added a UIList plus add/remove operators to manage the separate-meshes list (supports adding selected meshes from the export collection). - Added rig renaming (both the Armature object and its datablock), including name-conflict handling via the "__old" suffix. - Added a vertex color layer name setting and version-safe FBX export options by checking which FBX properties exist before setting them. - UV cleanup + triangulation moved into a shared helper and applied to both Body and each separate mesh; improved the missing UV-map error to list existing UV maps. - scene switch memory. - Removed the Exclude collection workflow (exclude_collection_name). The triangulation process should be made optional
New UI checkbox controls whether meshes are triangulated before FBX export.
convert “Export to Unity” into generic Auto FBX Export (optional rig export): renamed the addon/UI and settings, changed the defaults to a generic export target (//../Exports, model.fbx), added an Export rig toggle so armatures were only processed/exported when enabled, and simplified auto-unload logic (from owner-file tracking on file-load to a direct unregister hook on load-pre).
SceneLabel can now change the compression quality
- refactored SceneLabel for cleaner initialization and scene GUI flow - simplified SceneSwitcherAsset and SceneTextureAsset data containers - improved TextureResolutionApplier null-safety and importer update logic - removed redundant refresh/reimport-related operations
keep the existing bool-based flow and add an alternative int-based clothing switch mode (with compressor support).
https://github.com/strakacher21/AnimatorWizard It's just easier for me to update lol.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
AnimatorWizard
Save VRC Expression Parametersfunction has been added (will save your VRC Expression Parameters before setting up animator);Gesture Expressions Block bool listfunction (each element is a VRC bool parameter name. When any is True, gestures won't drive expressions);clothing creationfeature (switching algorithm). Creates an algorithm to switch clothes, animations and VRC params. By using specific blendshapes roll up clothes and body into "tube";Face Toggle creationfeature. Creates an algorithm to switch face animations;OSC smooth setupfeature. OSC smooth is needed to fix Face/Eye Tracking params in-game, as without it animation is choppy and jerky, as if it's lacking FPS;Compressed Paramsmodule. Multiplexes multiple avatar parameters over a single synced channel, reducing parameter memory cost at the expense of sync latency. Parameter Compressor is based on the ideas behind LauraParamCompressor (LauraRozier);Eye Tracking (Simplified Eye Parameters) creationfeature. Creates an eye tracking using pre-made animations. The "same animations" system is also implemented there. With the Eye Tracking Block bool list function;Face Tracking LipSync Controlfunction (adds LypSync off/on feature) ;Misc
I definitely missed something, but here is basically what was done