Changelog

Changelog #

All notable changes to this project are documented in this page.

The format is based on Keep a Changelog.

1.7.7 - 2024-07-08 #

Added #

  • Add Traditional Chinese #1102

Fixed #

  • VRCAnimatorPlayAudio support is broken #1114

1.7.6 - 2024-06-17 #

Fixed #

  • BlendTree with NormalizedBlendValues Broken with MergeBlendTree #1096
  • Remove Zero Sized Polygon may remove small polygons #1098

1.7.5 - 2024-06-10 #

Added #

  • Warnings for bad API Usages #1091

Changed #

  • Ignore floating point precision error in Merge PhysBone #1086
  • Animation Warning of Merge Skinned Mesh will not generated if source Renderer is not animated #1087
  • Expression Parameters are now considered as a part of Avatar Dynamics Parameter destination #1089
  • Relax condition for scaled evenly check #1092
    • Trace and Optimize will merge more bones than before.

Removed #

  • Write to Asset on Play menu item which is no-op #1085
  • Particle Syatem with Mesh Renderer shape will be broken #1093

Fixed #

  • Merge BlendTree Layer will break some BlendTrees that have overriden by other layers #1084

1.7.4 - 2024-05-17 #

Fixed #

  • Some rare material swap animation can cause exception #1067
  • Invalid AABB error message from UnityEngine if there are no source for Merge Skinned Mesh #1068

1.7.3 - 2024-05-10 #

Added #

  • Declare VRCSDK 3.6.x compatibility #1060

Fixed #

  • Mesh preview may cause empty mesh on enter play mode if reload scene is disabled #1064
  • MMD Compatibility can be broken with Merge BlendTree Layers #1065

1.7.2 - 2024-05-09 #

Fixed #

  • Entry/Exit to BlendTree broken with None motion in default state 1057
  • An error with MergePhysBone #1061
  • Animators depends on the WD=off behavior can be broken #1062

1.7.1 - 2024-05-07 #

Added #

  • Implement mask texture editor #1044
  • Add Simplified Chinese translation #1055

Changed #

  • Improved behavior with Read/Write Off #1045
    • Because of Unity limitation, AAO cannot process meshes with R/W off on Start so it will be error.
    • However, on Awake, we can read them so AAO should process them.
    • Since this version, AAO will process meshes with R/W off on Awake.
    • This reduces the number of errors on the apply on play.
    • If you’re using Av3Emulator, you still see the error.
    • In addition, in such case, we’ll show Auto Fix button on the error message.
    • If you press the button, AAO will fix the error by changing the mesh to read/write enabled.
  • Advanced Options section has benn renamed to Debug Options #1052
    • This express the purpose of the section more clearly.
  • Added Advanced Optimizations and moved Remove Zero sized Polygons to it #1052
    • The Remove Zero sized Polygons can break some shaders or animations so it’s not enabled by default.
    • To make it more clear, we moved it to Advanced Optimizations.

Fixed #

  • Material Slot animations for multi-material multi-pass rendering are broken #1042
    • Previously we only preserves animations for the number of submeshes instead of material slots.
  • Relax Bounds condition for Automatic Merge Skinned Mesh #1043
    • Previously, AAO doesn’t merge Skinned Meshes if bounds are different accurately.
    • Since this version, AAO will merge meshes if bounds are the same with precision to the last 6 digits of decimal point.
  • Entry/Exit to BlendTree broken with None state 1048
  • Particle System with bone-rigged Skinned Mesh Renderer will be broken #1054

1.7.0 - 2024-04-30 #

Added #

  • Animator Optimizer #854
    • Most features of Animator Optimizer is not available in Unity 2019.
    • Animator Optimizer optimizes your Animator Controller without behaviour Changes
    • Current Optimizer includes the following optimization
  • Asset Description #847
    • Asset Description is the file to provide information of your assets for Avatar Optimizer.
    • Please see documentation for more details.
  • Warning for material animation in Merge Skinned Mesh #769
    • Merge Skinned Mesh does not support animating material properties differently. (In other words, it can be broken.)
    • Since this version, AAO will warn for such a case.
    • If you animated all materials from same animations, your animation will not be warned.
  • API for declaring dependency relationship to the name of the component #943
    • You can use this API to not change the name of the GameObject.
  • Configuring Clamp BlendShapes (Deprecated) #957
    • Since VRCSDK 3.5.1, VRCSDK sets Clamp BlendShapes (Deprecated) to true on assembly reload.
    • This is not a good setting for AAO in EditMode since AAO does not support clamping BlendShapes.
    • That’s why AAO now configures Clamp BlendShapes (Deprecated) to false in edit mode and true in play mode.
    • PlayMode is usually used for testing the avatar behavior so it’s better to have the same setting as VRChat client.
    • If you want not to change this setting, please disable Tools/Avatar Optimizer/Configure Clamp BlendShape Weight.
  • Automatic Merge Skinned Mesh #952 #972 #1010 #1020 #1021
    • Trace and Optimize now automatically merges Skinned Meshes if possible.
    • Trace and Optimize will merge your mesh if the material properties or enablement of the mesh is animated similarly and has no BlendShapes.
  • Components API for Scripting Usage #976
    • You can now add AAO components from your script.
  • Animations animating missing GameObject is removed #994
    • Since this update, animations that targeting GameObjects with post-AAO paths is no longer working.
    • Please create animations that targeting GameObjects with pre-AAO paths.
  • Remove Mesh by Mask #998
    • With this component, you can remove polygons with mask texture.
    • You can use use mask for MeshDeleterWithTexture or alpha mask to remove polygons.
  • Remove Empty SubMesh in Trace and Optimize #1007
    • This removes empty SubMeshes including becomes empty by optimization.

Changed #

  • MergePhysBone now corrects curve settings #775
  • MergePhysBone now warns if chain length are not same #775
  • MergePhysBone with only one source is now error #775
    • It was not working well and not a error by a bug.
  • Animator Parser is completely rewritten #850 #968 #1011
    • New Animator Parser allow us to track animating properties animated by components removed by AAO.
  • PhysBone that swings no bones are now removed #864
    • I found such a PhysBone on Lime so I added this feature.
  • Switched Localization system to NDMF from CL4EE #873
    • Since this release, Avatar Optimizer is no longer depends on CL4EE.
    • Because VCC doesn’t remove unused packages, CL4EE may still be installed on your project.
    • If you want to remove CL4EE, please remove it manually.
  • Suppressed animated BlendShape warning of FreezeBlendShape if it’s animated to a few constants #881
    • Modern models have tons of BlendShapes to change their face shape but emotion animation of some of them animates such a BlendShapes to constant (default value).
    • That’s unnecessary (incorrect I think) and force users to remove or change the clip when user wants to face shape.
    • I see AAO users use FreezeBlendShapes for overriding such a BlendShapes on twitter.
    • I think using this way is reasonable enough so I suppressed the warning if AAO detected such a usage.
  • Changed minimum VRCSDK to 3.3.0 #882
    • VRCSDK 3.3.0 is required for stable NDMF-VRCSDK compatibility.
  • Endpoint Position settings for newly created MergePhysBone is now Copy instead of Clear #945
    • The Clear settings will increase the number of PhysBone Transforms so it’s not better as a default settings.
  • Improved activeness animation warning in Merge Skinned Mesh #948
    • Reduced false-positive warnings
      • Previously, AAO warns if activeness warning is applied to different GameObjects.
      • However, this can be false-positive if animation is applied to different GameObjects with same timing.
      • Since this version, AAO will not warn if the activeness is animated in same animation clip with same curve.
    • Combined warning per Merge Skinned Mesh component.
      • Previously, AAO warns for each source Renderers.
      • Since this version, AAO creates one warning for each Merge Skinned Mesh component.
  • Add error for Cloth component in Merge Skinned Mesh component #949
    • The Cloth component is not supported by Merge Skinned Mesh component.
    • In previous versions, AAO will keep the source Skinned Mesh Renderer if it’s with Cloth component by bug.
    • Since this version, AAO will make an error if the source Skinned Mesh Renderer is with Cloth component.
  • Remove Unused Objects now removes PhysBones and Contact Receivers with parameters defined but not used by Animator Controllers #959
    • Previously, AAO did not remove PhysBones and Contact Receivers if they are defined in Animator Controllers whether they are used or not.
    • I thought such a PhysBones on the base body are rare but my friend told me there is Manuka has such a PhysBone so I added this feature.
  • Dropping GameObject to PrefabSafeSet adds the All components on the GameObject to the PrefabSafeSet #960
    • You can add all PhysBones on the GameObject by dropping the GameObject to the MergePhysBone component.
  • MergeSkinnedMesh now warns if Root Bone or Anchor Override are not set #963
  • It will be error if read/write mesh is off in play mode again #1018
    • I found that we may not possible to read mesh with r/w mesh off mode in play mode with the Av3Emulator.
  • Disabled AutoFreezeBlendShape for Skinned Mesh Renderers with Cloth component #1029
    • According to the report, making some polygons zero-size by AutoFreezeBlendShape will make initializing avatar extremely heavy.
    • After a small discussion, we decided to not automatically optimize Skinned Mesh Renderers with Cloth component.

Removed #

  • Compatibility with VRCQuestTools v1.x #847
    • Please use VRCQuestTools v2.x, which has compatibility with AAO.

Fixed #

  • Inspector of ComponentTypePair (GCDebug) is broken #846
  • Bones swung by unused PhysBones (which will be removed by AAO) are not merged #850
    • Note that To fix this problem, AnimatorParser is almost completely rewritten.
    • It’s not expected to have behavior change, but if you found some, please report it.
  • Re-fix Nested Constraint can be broken with Trace and Optimize #880
  • Fix non-VRChat project support #884
  • Fix VRM support #892
  • ArgumentNullException in Edit-mode Remove Mesh Preview #942
  • Bad behavior if EditMode preview is enabled when entering play mode #956
  • PlayableLayerControl or AnimatorLayerControl on non-root animator are ignored #964
  • Box Editor of Remove Mesh in Box can be broke with scale of Skinned Mesh Renderer #1019

1.6.13 - 2024-04-13 #

Fixed #

  • Animator Controller on the VRCStation will be broken #1002
  • Remove Component can be fails with RequireComponent attribute #1003

1.6.12 - 2024-04-09 #

Removed #

  • Activeness Optimization for Constraint component #996
    • The constraint component is too complex to optimize correctly and reliably

1.6.11 - 2024-04-07 #

Fixed #

  • Bounds become broken if Update When Offscreen is enabled #990

1.6.10 - 2024-04-05 #

Fixed #

  • Missing Reference Exception with Trace and Optimize #986

1.6.9 - 2024-03-27 #

Added #

Fixed #

  • ContextHolder become unknown component in NDMF 1.4.0 #946

1.6.8 - 2024-03-12 #

Fixed #

  • If some component refers external component, internal error #921

1.6.7 - 2024-02-28 #

Fixed #

  • Compilation Error due to VRCImposterSettings with VRCSDK 3.2.x #905
  • Skinned Mesh Renderers with None mesh will become Mesh with no polygons #906
    • This may affects bounds of Performance Rank in VRChat
  • Exclusions not working with Automatically Remove Zero Sized Polygons #907
  • Fix non-VRChat project support #884 (backport in #909)
  • Merge Toonlit with uv tiling is broken #911

1.6.6 - 2024-01-31 #

Fixed #

  • Some features are not working well if Trace and Optimize is not attached #876

1.6.5 - 2024-01-29 #

Changed #

  • AvatarOptimizer now uses ErrorReporting API of NDMF instead of our own API #805
  • Project is slightly renamed to AAO: Avatar Optimizer #830
    • The term AAO and Avatar Optimizer are not changed, but display name on the VCC is changed to AAO: Avatar Optimizer

Fixed #

  • Fix support for UniVRM components #802
  • VRM: Fix MergeSkinnedMesh breaking BlendShapeClip / VRM10Expression #810
  • Unknown component warning were shown multiple time for one type #818
    • In addition, location of the unknown components are shown on the error report.
  • Empty Armature trick broken #819
  • Added workaround for Array index (n) is out of bounds (size=m) error
  • Humanoid Bones may be removed by Trace and Optimize #831
  • Add license, documentationUrl, and changelogUrl to package.json #851
  • Nested Constraint can be broken with Trace and Optimize #857

1.6.4 - 2023-12-10 #

Fixed #

  • Error with generic avatar in 2022 #794
  • Assertion Error in some rare case #795

1.6.3 - 2023-12-09 #

Added #

  • Support for VRCSDK 3.5.x #787
    • Actually, previous version of AAO works well with VRCSDK 3.5.x / Unity 2022 with tiny bugs.
    • I’ve fixed some bugs in Unity 2022 in this release.
    • Since this version, package.json declares Avatar Optimizer is compatible with VRCSDK 3.5.x.
    • I was planned to release this changes while VRCSDK 3.5.0 is in beta.
    • However, VRCSDK 3.5.0 beta was only 3 hours so I could not.

Fixed #

  • Fix NullReferenceException on Unity 2022 when extra Animator components are present #778
  • Fix Errors with Generic Avatars #779
  • Editing Prefabs with AAO Components in Unity 2022 will cause Error #782
  • Error if there are reference to Prefab Asset PhysBone Collider #783
  • Remove Mesh in Box editor broken if inspector is narrow #784
  • Errors for partially incorrectly configured avatars #786
    • Since this release, instead of internal errors, warnings are shown

1.6.2 - 2023-11-30 #

Fixed #

  • Path remapping for merge bone will not work well in some (relatively rare) case #764
  • Error due to PhysBone collider with root bone outside avatar #766

1.6.1 - 2023-11-29 #

Fixed #

  • Error if there are None colliders for PhysBone #758
  • BlendShapes can broken in extreamly rare cases #760
    • It seems this is due to Unity bug.

1.6.0 - 2023-11-27 #

Added #

  • Public API for registering component information #632 #668
  • Disabling PhysBone animation based on mesh renderer enabled animation #640
    • If you toggles your clothes with simple toggle, PhysBones on the your avatar will also be toggled automatically!
  • Small performance improve #641
  • Ability to prevent changing enablement of component #668
  • Remove Zero Sized Polygons #659
  • Add support for UniVRM components #653
  • Support for Mesh Topologies other than Triangles #692
  • Skip enablement mismatched Renderers in Merge Skinned Mesh #670
    • This is now enabled by default for newly added Merge Skinned Mesh.
  • Error for MergeBone on the Avatar Root #716
  • Warning for conflicts with animation
    • Warning for freezing animated BlendShapes #719
    • Warning for merging renderers that activeness/enablement animated differently #675
  • PhysBone Optimization #733
    • Unnessesary isAnimated is now unconfigured
    • Floor Colliders with same configuration will be merged to one floor collider
  • Minimum Support for FinalIK #735

Changed #

  • All logs passed to ErrorReport is now shown on the console log #643
  • Improved Behaviour with multi-material multi pass rendering #662
    • Previously, multi-material multi pass rendering are flattened.
    • Since 1.6, flattened if component doesn’t support that.
  • Remove Unused Objects removes meaningless Animators and Renderers #709
    • Renderers without Mesh and Animators without AnimatorController is meaningless

Removed #

  • Legacy GC #633
  • Preventing removing IEditorOnly in callback order -1024 #658
    • This is no longer needed since 1.5.0 but I forgot to remove so I removed in 1.6

Fixed #

  • Improve support of newer Unity versions #608
  • Improve support of projects without VRCSDK #609 #625 #627
  • Prefab blinks when we see editor of PrefabSafeSet of prefab asset #645 #664
  • complex shader with SkinnedMeshRenderer without Bones Brokebn #694
  • bounds can be changed in apply on play if updateWhenOffscreen is true #697
  • Compatibility with transform moving plugins #715
  • Some missing components warnings #736
    • warning for ONSPAudioSource, VRCImpostorSettings, and RectTransform are fixed
  • Remove Unused Object may break ParticleSystem #738
    • Trigger Colliders can be disapper if you specify Transform instead of Collider instance.
    • Initially diabled particle system module will be ignored
  • MergeBone breaks ignoreTransforms of PhysBone #745

1.5.11 - 2023-11-18 #

Fixed #

  • Dynamic Bone support not working #727

1.5.10 - 2023-11-04 #

Fixed #

  • RigidBody Joint can be broken #683

1.5.9 - 2023-10-29 #

Fixed #

  • Animation clip length can be changed #647

1.5.8 - 2023-10-20 #

Fixed #

  • warning about VRCTestMarker when Build & Test #628

1.5.7 - 2023-10-19 #

Added #

  • Add compatibility for VRCQuestTools #619

Fixed #

  • AutoFreezeBlendShape will freeze BlendShapes with editor value instead of animated constant #622

1.5.6 - 2023-10-17 #

Changed #

  • Make no-op as possible if no AAO component attached for your avatar #603
  • Error Report window is refreshed after exiting play mode #606

Removed #

  • Error for Read/Write Mesh off Mesh #615
    • Since AAO creates Mesh every time, no more error is required!

Fixed #

  • Multi-frame BlendShape can be broken #601
  • Update notice may show incorrect version #602
  • Preview button is not disabled even if mesh is none #605
  • BindPose Optimization may break mesh with scale 0 bone #612

1.5.5 - 2023-10-15 #

Fixed #

  • Constraints and Animations can be broken with Automatic MergeBone #594
  • NRE with SMR with None with preview system #596
  • Some Multi-Frame BlendShape broken #597
  • BlendShape can be broken with MergeBone Optimization #599

1.5.4 - 2023-10-14 #

Added #

  • Add compatibility for Satania’s KiseteneEx #584

Changed #

  • Normal check is skipped for empty mesh #588
  • Meshes without Normal are shown on the normal existance mismatch warning #588

Fixed #

  • Error with MeshRenderer without MeshFilter #581
  • Preview not working with VRMConverter #582
  • AvatarMask about HumanoidBone broken #586
  • Unused Humanoid Bones can be removed #587

1.5.3 - 2023-10-11 #

Changed #

  • Ignore the warning instead of migration from 0.3.x or older #570

Fixed #

  • AnimatorController with Synced can be broken #564
  • AnimatorOverrideController may not be proceed correctly #567
  • Unclear behaviour if we merged meshes with and without normals #569

1.5.2 - 2023-10-10 #

Added #

  • Feature for debugging GC Objects #543
  • More MMD BlendShapes are registered #552
    • New English Translation BlendShapes are compatible with AAO!
  • Check for update #554

Changed #

  • You now cannot key any of AvatarOptimizer Components #551
    • Previously you can key AvatarOptimizer Coponent but it was meaningless.

Fixed #

  • EditMode Preview of RemoveMeshInBox is not correct #550
  • Avatar Standard Colliders can be removed #553
  • Freeze BlendShape may break Visame with MergeSkinnedMesh #561

1.5.1 - 2023-10-08 #

Fixed #

  • MergePhysBone component may be shown as unknown components #541
  • MergeBone may break Fur #542

1.5.0 - 2023-10-07 #

Added #

  • Support for NDMF integration #375
  • Pre-building validation for MergeBone #417
    • There are some (rare) cases that are not supported by MergeBone. This adds warning for such case.
  • Validation error for self recursive MergeSkinnedMesh #418
  • Advanced Settings Section for Trace and Optimize #419
    • Moved Use Advanced Animator Parser to there
    • Added Exclusions for exclude some GameObjects from optimization
    • In this section, there are for debugging GC Objects #464
  • Avoid Name Conflict in MergeBone #467
  • Full EditMode Preview of RemoveMesh Components #500
  • Significant Performance Improvements with small code changes #523

Changed #

  • Improved ‘Remove Unused Objects’ #401
    • Remove Unused Objects now removes unnecessary Components & Bones!
    • With new algorithm, you can preserve end bones (#430)
    • You may use Use Legacy GC to use legacy algotythm for Remove Unused Objects in Advanced Settings (#419)
  • Performance: Share MeshInfo2 between SkinnedMesh processing and MergeBone #421
  • Declare compatible with VRCSDK 3.4.x #513
  • Change Japanese Translation of “BlendShape” #535

Deprecated #

  • UnusedBonesByReferenceTool component is now obsolete #430
    • Newly introduced algorithm ofRemove Unused Objects does same thing!
    • You can migrate to Remove Unused Objects only with one click!

Removed #

  • internal ApplyOnPlay framework #504

Fixed #

  • Crash with Unity 2022 #423
  • Error if all vertices of some BlendShape is removed by RemoveMeshByBlendShape or RemoveMeshInBox #440
  • RemoveMeshByBlendShape on the SkinnedMeshRenderer with MergeSkinnedMesh not working #451
  • MergeBone may make some bone inactive to active if bone being merged is inactive #454
  • Avoid problematic material slot in MergeSkinnedMesh #508
  • Editor of EditSkinnedMesh components may not work well if the object is inactive #518

1.4.3 - 2023-09-05 #

Fixed #

  • Mesh broken with BlendShape Frame with weight 0 #408

1.4.2 - 2023-09-04 #

Fixed #

  • Components/GameObjects can falsely detected as always disabled / inactive. #403

1.4.1 - 2023-09-02 #

Fixed #

  • RootBone become None with Merge SkinedMesh #399

1.4.0 - 2023-09-02 #

Added #

  • Support for Multi Frame BlendShapes #333
  • Add link to help page #382
  • Advanced Animator Parser #343
    • This is new AnimatorController parser to collect animated properties
    • This parser understands AnimatorLayers, so with this parser, AAO can freeze BlendShapes which are always finally animated to a constant value.
    • This also understands Additive Layer and BlendTree, so extremely rare problem in previous Animator Parser with Additive Layer or BlendTree will be fixed with this parser.
  • Multi Pass Rendering of Last SubMesh support #384
  • Remove Mesh By BlendShape Editor now can set BlendShape weights to 0/100

Changed #

  • Auto FreezeBlendShape now freezes meaningless BlendShape #334
    • If you removed some vertices with RemoveMeshInBox or RemoveMeshWithBlendShape, some BlendShape may transform no vertices
    • Auto FreeseBlendShae now freezez such a BlendShapes
  • Auto FreezeBlendShape now freezes vertices even if already FreezeBlendShape is configured. #334
  • Meshes generated by AAO now have name #371
    • This will improve compatibility with UniVRM.
  • VPM Package now doesn’t include Test code #372 #373
  • Better error infomation for MeshInfo2 error #381
  • Declare compatible with VRCSDK 3.3.x #395
  • Understandable Error if there are Missing Script Component #398
    • Why VRCSDK doesn’t have such a error system?

Fixed #

  • MergeBone not working well with non-restpose bones #379
  • Unclear Error with Mesh with Read/Write off #386
  • Clear Endpoint Position may not work well with ignore transforms #390
  • Clear Endpoint Position doesn’t support Undo #390

1.3.4 - 2023-08-22 #

Changed #

  • Internal implementation of Trace and Optimize #361
  • Documentation Improvements #366 #365

1.3.3 - 2023-08-21 #

Added #

  • BlendShape Weight mismatch warning is now build-time warning instad of validate time warning #359
    • Thanks to FreeseBlendShape by TraceAndOptimize, most pre-build this warning is false positive. So this warning is moved to build-time only.

Fixed #

  • ClearEndpointPosition is not applied for non-first PhysBones on the GameObject #357
  • Incompatbile with Reload Scene disabaled #358

1.3.2 - 2023-08-20 #

Fixed #

  • Children of IsActive animated object is not considered #342
  • Multi Passs Rendering not supported error doesn’t have location info #347

1.3.1 - 2023-08-19 #

Fixed #

  • Unity Editor may freezes when there are circular dependency #329
  • Network ID is not assigned for newly created PBs #331
  • Internally assigned animator controller is not skipped for default choosen playable layer in Trace and Optimize #332
  • VRCSDK assigned default animators are not considered in Trace and Optimize #332
    • This bug doesn’t create bad behavior for now but will does in the feature.
  • Humanoid Animation are not considered in Trace and Optimize #332
    • This bug doesn’t create bad behavior for now but will does in the feature.
  • Material Slot with null material is created if there are more SubMesh than Material Slots #337
  • AAO silently ignored multi pass rendering #337
    • For now, multi pass rendering of last SubMesh is not (yet) supported so now cause error but will be supported.
  • There is no warning about BlendShape weight difference #336

1.3.0 - 2023-08-12 #

Added #

  • Remove always disabled objects #278
  • The new Remove Mesh By BlendShape component removes mesh data based on BlendShapes. #275
  • Option to process Make Children before modular avatar #296

Changed #

  • Use UnityEditor api to compress texture #276
    • This also adds some supported texture formats.
  • Every component have AAO prefix in their name now #290
    • The official shorthand for this tools is AAO!
  • Automatic Configuration component has been renamed to Trace And Optimize #295

Fixed #

  • UnusedBonesByReferenceTool error with SMR without mesh #280
  • MergeSkinnedMesh doesn’t work well with eyelids #284
  • Animating Behaviour.m_Enabled not working #287
  • Error Report Window may not refreshed after build error #299
  • Apply On Play may not working well #305
  • Some components unexpectedly can be added multiple times #306

1.2.0 - 2023-07-26 #

Added #

  • Automatic bounds computation in MergeSkinnedMesh #264
  • Automatic Configuration System #265
    • Currently FreezeBlendShape can be automatically configured.
  • Support for material swapping animation in MergeSkinnedMesh #274

Changed #

  • Support newly activated avatars in play mode for apply on play #263

Fixed #

  • Breaks mesh without tangent #271

1.1.1 - 2023-07-14 #

Changed #

  • Avatar GameObject marked as EditorOnly no longer be removed #261
    • Previously, if avatar GameObject is marked as EditorOnly, whole avatar is removed and this confuses users.

Fixed #

  • Name of failed ApplyOnPlayCallback is not included in error message #260
  • Entering play mode can be extremely slow if you have many avatar on the scene #262

1.1.0 - 2023-07-13 #

Added #

  • Now we can choose texture format for Merge Toon Lit Material #251
    • This includes one tiny BREAKING CHANGES.
    • Previously MergeToonLit uses ARGB32 as texture format but for now, it use ASTC 6x6 or DXT5 by default based on platform.

Changed #

  • Move Components into Avatar Optimizer folder #247
    • Previously they are Optimizer folder
  • Completely rewrite apply on play system #249
    • This will remove EditorOnly on play.
    • This enable UnusedBonesByReferencesTool component on play.
    • This replaces way to apply [modular-avatar by bdunderscore] on play.
      • modular avatar will be applied before AvatarOptimizer main logic and after removing EditorOnly.
    • This will remove enable/disable checkbox on components, which had no meaning.
    • The framework for this changes will be published as separated framework when ready.
  • Use binary form of asset file in avatar optimizer output #252

Fixed #

  • Manual bake not working with avatars with invalid file name chars #253
  • Merge Toon Lit duplicates vertex too many #256
    • This could causes huge increase in avatar size. this is now fixed.

1.0.0 - 2023-06-27 #

If you’re using v0.3.x or older, Please upgrade to v0.4.x before upgrading v1.x.x!

もし v0.3.x 以前を使用しているのであれば, v1.x.xに更新する前に v0.4.x に更新してください!

Removed #

  • Save format migration system #199
    • We no longer see save data in format of v0.3.x or older.
    • Please migrate to v0.4.x format before installing v1.0.0.

0.4.12 - 2023-06-22 #

Added #

  • MergePhysBone without ClearEndpointPosition #239
    • Instead of ClearEndpointPosition, you can use original value, or override Endpoint Position.

0.4.11 - 2023-06-19 #

Changed #

  • Show error with user friendly message if BlendShape for eyelids are removed / frozen. #253

Fixed #

  • eyelids BlendShape settings are mapped even if it’s disabled #235
    • This fixes error if internally eyelids BlendShape are frozen.

0.4.10 - 2023-06-17 #

Fixed #

  • PrefabSafesSet’s prefab modifications on latest layer are invisible on inspector #229

0.4.9 - 2023-06-16 #

Fixed #

  • NullReferenceException if window is in background #226

0.4.8 - 2023-06-16 #

0.4.7 - 2023-06-13 #

Fixed #

  • Dropping PhysBone to MergePhysBone is not working #221
  • First box will be size of zero #223

0.4.6 - 2023-06-10 #

Changed #

  • Improve ErrorReport window on build error #216

0.4.5 - 2023-06-06 #

Fixed #

  • Error in MergeSkinnedMeshProcessor with RecordMoveProperty #214

0.4.4 - 2023-06-04 #

Changed #

  • Make Remove Empty Renderer Object enabled by default #208

0.4.3 - 2023-06-02 #

Added #

  • Adding multiple values to PrefabSafeSet #200
  • Overriden PrefabSafeSet properties are now highlighted as blue and bold #200

Fixed #

  • Error when we removed some modification in PrefabSafeSet #201
    • There are several situations for this problem:
      • When we removed value in original component
      • When we removed new value in overrides
      • When we reverted added twice in overrides
      • When we reverted deletion in overrides
      • When we reverted fake deletion in overrides
  • Error when we reverted whole PrefabSafeSet with modifications #201

0.4.2 - 2023-05-30 #

Fixed #

  • MergeSkinnedMesh depends on other EditSkinnedMesh components does not working #195
  • Error with removed modified property in PrefabSafeSet Editor #196
  • Apply on Play may not work #198

0.4.1 - 2023-05-23 #

Changed #

  • Reimplemented Animation Mapping System Completely #168
    • This should fixes problem with objects/components at same place.
  • Improve Animation Mapping System #172
    • This should reduce build time
  • Disable animating m_Enabled of source SkinnedMeshRenderer #190
    • Animating m_Enabled of source SkinnedMeshRenderer now doesn’t affects merged SkinnedMeshRenderer
    • If you actually want to enable/disable merged SkinnedMeshRenderer, animate m_Enabled of merged SkinnedMeshRenderer instead.

Fixed #

  • Error is not cleared on build #170
  • Merge PhysBone is not working #177
    • Previously, values are not copied correctly
  • The help box for description of components without description were shown #178
  • Name of Is Animated and Parameter field are not correct #183
  • We cannot set override setting of Colliders to Copy #183
  • Error with MergeToonLit #185
  • Poor word choice in Japanese Translation #174
  • Localization is not applied for some fields #186

0.4.0 - 2023-05-20 #

Added #

  • Japanese Translation: 日本語化 #152

Changed #

  • Save format for MergePhysBone #166
    • Previously used backed PhysBone component for override values are removed.
    • There are no changes in behaviour. Just migrate your assets.

Removed #

  • Delete GameObject feature #153
    • Use EditorOnly tag instead

Fixed #

  • Error with Animator at non-root GameObject #164
  • Error with copied MergePhysBone component #165

0.3.5 - 2023-05-15 #

Changed #

  • Internal Errors not relates to any Object are now reported #160

Fixed #

  • Error if there are multiple GameObjects with same path #159

0.3.4 - 2023-05-15 #

Fixed #

  • Reference to Component will become None #156
  • BlendShapes for Eyelids can be broken with FreezeBlendShape #154

0.3.3 - 2023-05-14 #

0.3.2 - 2023-05-14 #

Added #

  • Error Reporting System #124
    • This adds window shows errors on build
    • This is based on Modular Avatar’s Error Reporting Window. thanks @bdunderscore
  • Website for AvatarOptimizer #139
  • Manual Bake Avatar #147
    • Left click the avatar and click [AvatarOptimizer] Manual Bake Avatar

Changed #

  • Improved & reimplemented Animation (re)generation system #137
    • This is completely internal changes. Should not break your project
    • In previous implementation, animations for GameObjects moved by MergeBone, MergePhysBone or else doesn’t work well
    • This reimplementation should fix this problem

Fixed #

  • Migration fails with scenes/prefabs in read-only packages #136
    • Now, migration process doesn’t see any scenes/prefabs in read-only packages.

0.3.1 - 2023-05-05 #

Fixed #

  • Can’t remove SkinnedMeshRenderer error #133
    • This error should do nothing bad but it confuses everyone
  • Bad behaviour with VRCFury on build #134

0.3.0 - 2023-05-04 #

Added #

  • Make Children of Me #100
    • As a alternative of feature removal in same pull request
  • UnusedBonesByReferencesTool #112
  • Support for VRCSDK 3.2.0! #117
    • This includes support for PhysBone Versions and PhysBone 1.1

Changed #

  • Use IEditorOnly instead of mokeypatching VRCSDK #102
  • Move the toggle for Override and the setting of the value after Override closer together. #105
    • With this changes, the merged PhysBone is now hidden.
    • The merged PhysBone will be shown in Play mode.
  • Now we can Copy (instead of Override) Pull, Gravity, Immobile properties even if Integration Type is overriden. #105
    • During migration, if Integration Type (previously called Force) is configured to be Override, Pull, Gravity, Immobile will be configured to be Override.
    • This is BREAKING changes.
  • Now we can Copy / Override Immobile Type and Immobile (strength) separately. #105
    • Previously, if you override Immobile Type, you also required to override Immobile but no longer required.
    • This is BREAKING changes in the semantics of immobile property.
  • Upgrade CL4EE to 1.0.0 #121

Removed #

  • BREAKING Removed Prefab Safe List #95
  • BREAKING Removed RootTransform feature from MergePhysBone #100
  • Removed support for VRCSDK 3.1.x. #117
    • Dropping VRCSDK support is a BREAKING changes.
    • However, we may drop old VRCSDK support in the minor releases of AvatarOptimizer in the feature.
    • In the other hand, we promise we’ll never drop old VRCSDK support in the patch releases.
    • Notice: in the 0.x.y release, y is a minor releases in this project.

Fixed #

  • ShouldIgnoreComponentPatch cases compilation error #108
  • Merge PhysBone is working even if parents are differ #129

0.2.8 - 2023-04-19 #

Fixed #

  • NullReferenceException with prefabs in editor for PrefabSafeSet #92

0.2.7 - 2023-04-01 #

Added #

  • Support for VRCSDK 3.1.12 and 3.1.13

0.2.6 - 2023-03-31 #

Added #

  • Internationalization support #77
    • This adds way to translate editor elements.
    • However, no other language translation than English is not added yet.
    • Please feel free to make PullRequest if you can maintain the translation.

Fixed #

  • Remove Empty Renderer Object is not shown on the inspector #76
  • normal vector and tangent vector might not be unit length #81
    • This can be problem with FreezeBlendShape.
  • Assertion does not work well #85
    • This can make invalid mesh
  • Mesh is broken if more than 65536 vertices are exists #87
    • Because we didn’t check for vertices count and index format, vertex index can be overflow before.
  • Generated assets are invisible for a while #88

0.2.5 - 2023-03-24 #

Added #

  • Show SaveVersion internal property on editor. #71
    • This makes it easier to make it easier to see prefab overrides

Changed #

  • reduce unnecessary modification in PrefabSafeSet/List #64
    • Previously PrefabSafeSet/List will always generates array size change modification.
    • Now, array size change will be generated when added/removed elements from the collection.
  • use ExecuteAlways instead of ExecuteInEditMode #72

Fixed #

  • save version is not saved again #69
  • None is added/removed on the prefab modifications #73

0.2.4 - 2023-03-22 #

Changed #

  • make Accessing v1 error #61
    • This reduces future mistakes like #59

Fixed #

  • RemoveMeshInBox refers old v1 configuration #60

0.2.3 - 2023-03-20 #

Fixed #

  • instantiating material occurs #58

0.2.2 - 2023-03-20 #

Added #

  • Make Children #53

Changed #

  • Do not use cache on applying components now #56

Fixed #

  • NullReferenceException if some component is removed #54
  • save version is not saved. this may break future migration #55

0.2.1 - 2023-03-20 #

Fixed #

  • Migration failed if some renderer is None #49

0.2.0 - 2023-03-19 #

Added #

  • Support for Prerelease in publish system #19
  • Changelogs (including ones for traditional releases) #19
  • Auto Test #23
  • Prefab support #11

Changed #

  • BREAKING Save format for many components #11
    • Even if you added more elements than before on prefab, added elements on prefab instance will be kept.
    • In previous implementation (unity default array prefab overrides implementation), can be broken easily.
  • BREAKING All materials are merged by default #11
    • Due to save format migration, every materials will be marked as merged.
    • If you have some materials not to be merged, please re-reconfigure that.

Fixed #

  • Fixed IndexOutOfError if there are more bones than bindposes #30
  • SkinnedMeshRenderers without bones will break mesh #35
  • We may forget checking components on disable objects #46

0.1.4 #

Added #

  • Support for feature Migration be0147b

Changed #

  • Box editor of RemoveMeshInBox 15fc931
  • Installer unitypackage name b32167f
  • Warn if MergeSkinnedMesh is with SkinnedMeshRenderer with Mesh 1016aa6

Fixed #

  • MergeToonLit is always marked as dirty 82ba212
  • RemoveMeshInBox does not handle bone correctly b2fea4f

0.1.3 #

Fixed #

0.1.2 #

Fixed #

0.1.1 #

Added #

  • (internal) MeshInfo2 system for speed up 36716dd
  • RemoveMeshInBox component 96f3526

Changed #

  • Make VPAI installer unitypackage install 0.1.x 6615991
  • Editor of FreezeBlendShape cdd2031

Fixed #

  • Several bugs

0.1.0 - 2023-01-16 #

Changed #

  • Move components from Anatawa12/ to Optimizer/ 949d267

Fixed #

  • Several bugs

0.0.2 - 2023-01-15 #

Added #

Fixed #

0.0.1 - 2023-01-13 #

Added #

  • Merge Skinned Mesh
  • Merge PhysBone
  • Freeze BlendShape
  • Merge Bone
  • Clear Endpoint Position