Changelog

Changelog #

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

The format is based on Keep a Changelog.

1.8.2 - 2024-12-11 #

Added #

  • - button for prefab safe set #1368

Fixed #

  • Errors with models with UV at very edge #1363
  • Errors if exactly same AnimatorController is specified for multiple playable layers #1366
  • Errors if objects removed by some component is listed on exclusions of Trace and Optimize #1367
  • OverflowException when creating prefab #1369

1.8.1 - 2024-12-01 #

1.8.1-beta.1 - 2024-11-30 #

Fixed #

  • Optimize Texture may break liltoon outline mask #1357

1.8.0 - 2024-11-30 #

1.8.0-rc.11 - 2024-11-29 #

1.8.0-rc.10 - 2024-11-28 #

Added #

  • Regex mode for OSC Parameters in Asset Description #1351

Removed #

  • Prefix, Suffix, and Contains mode for OSC Parameters in Asset Description #1351
    • Please use regex mode instead

1.8.0-rc.9 - 2024-11-28 #

Fixed #

  • NRE if some playabke layer is missing from AvatarDesciptor #1350

1.8.0-rc.8 - 2024-11-17 #

Fixed #

  • NRE when saving Prefab with PrefabSafeUniqueCollection #1348

1.8.0-rc.7 - 2024-11-15 #

Added #

  • Optimize Texture support for Unity Standard, VRChat SDK Standard Lite, VRChat SDK Toon Lit Shaders #1346
    • If you want more shader support, please comment to #1183 with shader name and link!

Changed #

  • Make error for MergeBone with MergePB rotation mode fix #1345
    • This was not working as expected in previous version so I made this error.
    • We may add support or change behavior in the future release

Fixed #

  • Error with nested merge skinned mesh #1340
  • Broken synced Layer support #1341
  • Unpacking prefab might look like some data lost in PrefabSafeUniqueCollection #1342
  • InvalidCastException with RenderTexture #1334

1.8.0-rc.6 - 2024-11-08 #

Changed #

  • Added animation validation warning for MergePhysBone limit rotation mode Fix #1336

Fixed #

  • Broken Optimize Texture #1338

1.8.0-rc.5 - 2024-11-07 #

Added #

  • Automatically Merge Material Slot #1334
    • If you have multile material slots with same material, it will be merged automatically.

Changed #

  • Improved performance in RemoveUnusedMaterialProperties #1326

1.8.0-rc.4 - 2024-11-06 #

Fixed #

  • Animation bindings for BoxCollider generated by VRCStation will be removed #1331
    • This might break the GogoLoco or other flying avatar that supports Quest / Android.

1.8.0-rc.3 - 2024-11-04 #

Changed #

  • Improved performance in InternalAutoFreezeMeaninglessBlendShapeProcessor #1325
  • Performance improvements for AutoMergeBlendShape #1327

Fixed #

  • basic Mesh Renderers are not considered in Optimize Texture #1328

1.8.0-rc.2 - 2024-11-03 #

Fixed #

  • Animation broken with auto merge blendShape #1324

1.8.0-rc.1 - 2024-11-03 #

Added #

  • Automatically Merge Blendshape #1300
    • This is new automatic optimization in Trace and Optimize
    • This is a part of “Optimize BlendShape” optimization.
    • AAO 1.8.0 introduced BlendShape support for Merge Skinned Mesh, but new default mode “Rename to avoid conflicts” would increase number of BlendShape.
    • This feature is added to relax this problem by automatically merging multiple BlendShapes of one Mesh.
    • With this feature, you can use rename mode without performance loss.
  • Fix mode for PhysBone Limits in Merge PhysBone #665
    • In addition to existing Copy and Override, we added Fix mode.
    • This mode will try to correct roll axis by rotating bone.
    • This feature allows you to configure the mode for PhysBone Limits in Merge PhysBone.
    • This is useful if all configuration is same but roll axis is different.
  • Automatically merging meshes which have BlendShapes #1308
    • In previous version of Avatar Optimizer, meshes which have BlendShapes are not automatically merged.
    • This was because BlendShape manipulation load is proportional to the number of vertices in Unity 2019.
    • However, in Unity 2020 and later, BlendShape manipulation load is mostly proportional to the number of moving vertices.
    • This means that increasing the number of vertices in a mesh which has BlendShapes does not increase the load of BlendShape manipulation much.
    • Therefore, we decided to automatically merge such meshes.
  • Improved OSC Gimmick Support #1306
    • We added two information for OSC Gimmick in Asset Description.
    • By defining parameters read / written by OSC Gimmick, your OSC Gimmick no longer breaks.

Fixed #

  • Fix non-VRChat project support #1310
  • ‘shader’ doesn’t have a float or range property ‘prop’ error #1312
  • Integer and Int confusion #1313
  • NativeArray leak #1314
  • Error if all components are on inactive GameObject#1318

1.8.0-beta.11 - 2024-10-27 #

Changed #

  • Show version name on NDMF Console #1309

Fixed #

  • NRE if specified expression parameters is None #1303
    • This error only happens if you don’t use Modular Avatar since Modular Avatar will assign parameters asset.
  • “asset is not temporary asset” error if no Modular Avatar is used #1304
  • Merge Skinned Mesh with Basic Mesh is not working #1307
  • Validation system in Avatar Optimizer is not working #1307

1.8.0-beta.10 - 2024-10-26 #

Added #

  • Right-click menu option to create a new GameObject with a specified component #1290
  • BlendShape support for Merge Skinned Mesh #1286 #1299
    • You now can successfully merge Meshes with BlendShape with Merge Skinned Mesh.
    • Actually, previous version does not have proper consideration for BlendShape.
    • This version introduces options to select BlendShape behavior in Merge Skinned Mesh.

Changed #

  • More Preference Improvement #1288

Removed #

  • Merging BlendShape from Rename BlendShape component #1296
    • We will add a new component for merging BlendShapes in the future.

Fixed #

  • PrefabSafeUniqueCollection does not consider unity fake null #1294
  • BlendShape with same name is impclitly merged in Merge Skinned Mesh #1286
    • Now you can rename BlendShape to avoid conflicts.

1.8.0-beta.9 - 2024-10-20 #

Fixed #

  • Error with material property animation #1285
  • InvalidOperationException in PrefabSafeUniqueCollection #1287

1.8.0-beta.8 - 2024-10-19 #

Fixed #

  • Animation for target renderer of Merge Skinned Mesh might be overridden by animation for source renderer #1276
  • Merge islands incorrectly when one island covers the other #1278
  • NRE when no AAO component attached #1281

1.8.0-beta.7 - 2024-10-18 #

Added #

  • Invert option for Remove Mesh in Box #1257
    • You now can remove polygons outside of the box instead of inside the box.
    • Along with this new feature, we renamed Remove Mesh in Box to Remove Mesh By Box to make it more clear.
      • This doesn’t change the class name of the component since it’s already a part of the public API.
  • Remove Mesh By UV Tile, a new way to remove polygons #1263
    • You now easily remove some polygons of models configured for UV Tile Discard.
    • This component removes polygons like UV Tile Discard with Vertex Discard Mode.
  • Texture Optimizer support for tiling UV #1268
  • API for AtlasTexture Compability #1269
  • Automatically remove unnecessary material properties based on shader #1041
    • This feature is added to Remove Unused Objects in Trace and Optimize.
    • When you changed shader for an material, properties for previously used shaders might be remain
    • This may increase your avatar size by unexpectedly including unused textures
  • Support for Shaders that depends on vertex index #1275
    • Avatar Optimizer will not automatically merge meshes that are using vertex index
    • since merging them may change vertex order, which changes vertex index

Changed #

  • Transform gizmo are now hidden while you’re editing box of Remove Mesh in Box #1259
    • This prevents mistakenly moving the Skinned Mesh Renderer while editing the box.
  • Make MergePhysBone implement INetworkID #1260
    • This allow you to configure networkid for merged PhysBone component
  • Changed locale code for simplified chinese from zh-cn to zh-hans #1264
    • This would improve compatibility with other NDMF tools.
    • Many NDMF tools uses zh-hans so previously you may see both 中文 (中国) and 中文 (简体).
    • I think zh-hans is more accurate expression so I changed so.

Fixed #

  • InvalidOperationException with removing all polygon on one material slot #1255
  • Remove Mesh in Box does not work for meshes without Bones #1256
  • NullReferenceException in GetBlendShape if Mesh is not specified for SkinnedMeshRenderer #1267
  • NDMF Preview for Mesh by Box will is partially broken #1270

1.8.0-beta.6 - 2024-10-12 #

Fixed #

  • InvalidOperationException with AutoMergeSkinnedMesh #1253

1.8.0-beta.5 - 2024-10-12 #

Added #

  • Rename BlendShape component to rename BlendShapes #1245
    • This can be used to avoid blendShape name conflicts in Merge Skinned Mesh

Changed #

  • Performance Improvements with Mesh Manipulation, especially with blendshape-heavy meshes #1234 #1243 #1240

Fixed #

  • maxSquish cannot be configured for mergePB#1231
  • Error from Optimize Texture if there is Merge Skinned Mesh with material slot animation #1235
  • Unncecessary Prefab Overrides are Generated with Prefab Safe Set #1236
  • CS8632 warning for released version #1237
  • Avatar Descriptor can be removed by Avatar Optimizer in extreamely rare case #1242
  • Material property animation with weight 0 layer might be broken with AutoMergeSkinnedMesh #1248

1.8.0-beta.4 - 2024-10-05 #

Changed #

  • Animator Parser Debug Window now supports ObjectReference animation support #1222
  • Reimplemented Animator Parser node system #1227
  • Renamed debug options internally #1228
    • This will lose previously configured debug options.
    • However, debug options are not considered as Public API as stated in documents so this is not backward incompatible changes in semver 2.0.0 section 8.

Fixed #

  • API about Prefab Safe Set are broken with prefab instance #1219
  • Optimize Texture may cause false positive optimization with blendtree #1225
  • Error with PrefabSafeSet #1221

1.7.13 - 2024-10-01 #

1.8.0-beta.3 - 2024-09-30 #

Added #

  • API to get in advance whether a polygon will be removed #1177

Changed #

  • Improved Prefab Safe Set, which are used in MergePhysBone, MergeSkinnedMesh, FreezeBlendShape and more components #1212
    • This should improve compatibility with replacing base prefab, which is added in Unity 2022.
  • Allow multiple component for Remove Mesh components with API #1216 #1218
    • This allows non-destructive tools to add Remove Mesh components even if Remove Mesh component are added before.

Fixed #

  • Typo in menu for creating Asset Description #1213
  • Optimize Texture broken with Crunch Compression #1215

1.7.13-beta.2 - 2024-09-29 #

Fixed #

  • Default value for RemoveMeshInBox is not correct in Play mode #1217
    • This fix will make Initialize method set default value for boxes.

1.8.0-beta.2 - 2024-09-25 #

Changed #

  • Reimplement Preview system with NDMF Preview System #1131
    • This will prevent issues relates to Animation Mode bug.
    • This allows you to preview Remove Mesh components without selecting Mesh OR while in Animation Mode.

Fixed #

  • Texture Packing which resolves to the white texture would break the Unity Editor #1193
  • Performance issues with preview system #1195
  • Avatar Optimizer does not support Additive Reference Pose #1208

1.7.13-beta.1 - 2024-09-23 #

Fixed #

  • Null Reference Exception with newly created VRCAnimatorPlayAudio #1199
  • Particle System that uses local scale will be broken #1197
  • Avatars with Visame Skinned Mesh disabled will not able to upload #1202

1.8.0-beta.1 - 2024-09-20 #

Added #

  • AnyState to Entry/Exit optimization in Optimize Animator #1157
    • If AAO found animator layer only with AnyState, AAO tries to convert them to Entry / Exit pattern.
      • Currently due to implementation there are some patterns that can be convert but but not converted.
      • We may relax some restriction in the future.
    • Because we have to check for each condition if we use AnyState but we can check for only one (in best case) with entry/exit, this generally reduces cost for checking an parameter in a state.
    • Combined with Entry / Exit to 1D BlendTree optimization, which is implemented in previous release, your AnyState layer may be optimized to 1D BlendTree.
  • Optimize Texture in Trace nad Optimize #1181 #1184
    • Avatar Optimizer will pack texture and tries to reduce the VRAM usage.
    • Currently liltoon is only supported.
  • Copy Enablement Animation to Merge Skinned Mesh #1173
    • This feature copies activeness / enablement animation from merge target renderers to the merged renderer.
    • This feature is not enabled by default. You have to enable it in the inspector.
    • This feature supports copying activeness animation of activeSelf of the GameObjects or ancestors of the GameObjects. However, this feature does not work if multiple GameObjects (or both GameObject and Renderer itself) are animated.
    • In addition, this feature will be animate the enabled of the merged renderer, so you must not animate the enabled of the merged renderer.
      • If animations are unsupported, AAO will show an error message and abort the build.
  • Support Read/Write disabled Meshes with Av3Emulator Enabled #1185
    • Previously, AAO cannot process meshes with Read/Write disabled if AAO is triggered by Av3Emulator.
    • Since this release, AAO can process meshes with Read/Write disabled if AAO is triggered by Av3Emulator.
    • In addition, AAO now supports non-Float32 vertex buffers.
      • We still use Float32 internally so Int32 data might lose precision a little.
      • However, AFAIK there is no real-world problem with this so we implemented this way.
      • If you found such a case, please report it.
    • This change make AAO incompatible with Unity without Graphics.
      • If you’re building your avatar with batchmode with -nographics, please remove -nographics.
  • Asset Description for Avatar Modify Support bundled in an avatar, Shinano #1189

Changed #

  • Skip Enablement Mismatched Renderers is now disabled by default #1169
    • You still can enable it in the Inspector.
    • This change does not affect the behavior of previously added components.
  • Use UInt16 index buffer if possible even when total vertex count is more than 2^16 #1178
    • With baseVertex in index buffer, we can use UInt16 index buffer even if total vertex count is more than 2^16.
    • Of course, if one submeh references wide range of vertices, we cannot use UInt16 index buffer so we still use UInt32 index buffer in such a case.

Removed #

  • Unity 2019 Support #1146
    • For 2019 users, please use 1.7.x.

1.7.12 - 2024-08-27 #

1.7.12-beta.3 - 2024-08-25 #

Fixed #

  • Broken validation for MergePhysBone merging PhysBones with specified target #1160

1.7.12-beta.2 - 2024-08-23 #

Fixed #

  • FinalIK Gimmicks with IKExecutionOrder is broken #1153

1.7.12-beta.1 - 2024-08-22 #

Changed #

  • Rewritten Check for Update system #1151

Fixed #

  • VRCConstraints with Target might be removed unexpectedly #1150

1.7.11 - 2024-08-08 #

Added #

  • VRCSDK 3.7.0 support #1140
    • This includes VRCConstraints support

1.7.11-beta.1 - 2024-08-07 #

Fixed #

  • Some Humanoid Bones might be removed #1137
    • Repeated AddPathDependency is broken.
  • Render is broken if all weighted bone is none and some other non-weight bone is not none #1138

1.7.10 - 2024-08-02 #

Added #

  • Experimental VRCConstraints support #1129 #1130
    • This only works for VRCSDK 3.6.2-constraints.3 3.6.2-constraints.4 and not works with other versions including future versions.

1.7.10-beta.1 - 2024-07-30 #

Fixed #

  • AutoMergeSkinnedMesh is broken if all merging meshes has no SubMeshes #1127

1.7.9 - 2024-07-25 #

1.7.9-beta.1 - 2024-07-25 #

Fixed #

  • Index out of bounds error with remove mesh by mask with negative UV #1123

1.7.8 - 2024-07-22 #

1.7.8-beta.1 - 2024-07-21 #

Fixed #

  • Index out of bounds error with remove mesh by mask #1119
  • NRE with Generic Avatar #1122

1.7.7 - 2024-07-08 #

1.7.7-beta.1 - 2024-07-08 #

Added #

  • Add Traditional Chinese #1102

Fixed #

  • VRCAnimatorPlayAudio support is broken #1114

1.7.6 - 2024-06-17 #

1.7.6-beta.2 - 2024-06-16 #

Fixed #

  • Remove Zero Sized Polygon may remove small polygons #1098

1.7.6-beta.1 - 2024-06-15 #

Fixed #

  • BlendTree with NormalizedBlendValues Broken with MergeBlendTree #1096

1.7.5 - 2024-06-10 #

1.7.5-beta.2 - 2024-06-07 #

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

Fixed #

  • Particle Syatem with Mesh Renderer shape will be broken #1093

1.7.5-beta.1 - 2024-06-03 #

Fixed #

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

1.7.4 - 2024-05-17 #

Fixed #

  • Invalid AABB error message from UnityEngine if there are no source for Merge Skinned Mesh #1068

1.7.4-beta.1 - 2024-05-11 #

Fixed #

  • Some rare material swap animation can cause exception #1067

1.7.3 - 2024-05-10 #

1.7.3-rc.1 - 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 #

1.7.2-rc.2 - 2024-05-08 #

Fixed #

  • Animators depends on the WD=off behavior can be broken #1062

1.7.2-rc.1 - 2024-05-08 #

Fixed #

  • Entry/Exit to BlendTree broken with None motion in default state 1057
  • An error with MergePhysBone #1061

1.7.1 - 2024-05-07 #

Added #

  • Add Simplified Chinese translation #1055

1.7.1-rc.1 - 2024-05-06 #

Added #

  • Implement mask texture editor #1044

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 #

1.7.0-rc.4 - 2024-04-26 #

Changed #

  • 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.

Fixed #

  • Animating m_Enabled of Animator as a Behavior is broken #1028
    • Since Animator.property become animating float animation property named property,
    • AAO must keep it as Behavior.m_Enabled instead of Animator.m_Enabled but we were not.

1.7.0-rc.3 - 2024-04-24 #

1.7.0-rc.2 - 2024-04-24 #

Changed #

  • 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.

Fixed #

  • Box Editor of Remove Mesh in Box can be broke with scale of Skinned Mesh Renderer #1019
  • Automatic Merge Skinned Mesh is broken with BlendTree #1020
  • Automatic Merge Skinned Mesh breaks mesh-shaped Particle System #1021
    • In addition, reference to Skinned Meshes might be broken and this is also fixed.

1.7.0-rc.1 - 2024-04-19 #

1.7.0-beta.7 - 2024-04-16 #

Fixed #

  • NRE with AutoMergeSkinnedMesh #1010
  • Error with some rare animation clip #1011

1.7.0-beta.6 - 2024-04-13 #

Added #

  • 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.

Fixed #

  • dependency is not child of root error if humanoid bone is moved to out of animator game object #995

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.7.0-beta.5 - 2024-04-07 #

Added #

  • Components API for Scripting Usage #976

Fixed #

  • Fix skipped parameter values in Entry/Exit to BlendTree optimization #991

1.6.11 - 2024-04-07 #

Fixed #

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

1.7.0-beta.4 - 2024-04-05 #

Changed #

  • Renamed MergeDirectBlendTree(Layers) to MergeBlendTreeLayer #984

1.6.10 - 2024-04-05 #

Fixed #

  • Missing Reference Exception with Trace and Optimize #986

1.7.0-beta.3 - 2024-04-04 #

Added #

  • Merge non Direct BlendTree in MergeDirectBlendTree #980
  • Support bool parameters in Entry/Exit to BlendTree optimization #982

Fixed #

  • Skip Merge Direct BlendTree Option is flipped #978

1.7.0-beta.2 - 2024-04-01 #

Changed #

  • Relax preconditions of Entry/Exit to BlendTree optimization #970

Fixed #

  • Some animation is Falsely detected as constant #968
  • Activeness of renderer GameObject is not correctly considered #972
  • Exclusions is not working for Automatic Merge Skinned Mesh #972

1.7.0-beta.1 - 2024-03-29 #

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
      • Remove meaningless properties #854
      • Converts Entry / Exit to 1D BlendTree #854 #867 #927
      • Merges multiple Direct BlendTree to single Direct BlendTree #870
      • Removes meaningless Animator Layers #870
  • 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
    • 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.

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
    • 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.
  • 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

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

1.6.9 - 2024-03-27 #

1.6.9-beta.3 - 2024-03-24 #

Fixed #

  • ContextHolder become unknown component in NDMF 1.4.0 #946

1.6.9-beta.2 - 2024-03-22 #

Added #

  • Support for VRCSDK 3.5.2-beta.2 #935

1.6.9-beta.1 - 2024-03-16 #

Added #

  • Support for VRCSDK 3.5.2-beta.1 #926

1.6.8 - 2024-03-12 #

Fixed #

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

1.6.7 - 2024-02-28 #

1.6.7-beta.1 - 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 #

  • use stable version of NDMF 1.3.0 or later #821

1.6.5-rc.3 - 2024-01-27 #

Changed #

  • Reverted NDMF to 1.3.0-rc.3 #858
    • NDMF 1.3.0-rc.4 or later does not execute Optimizing phase on entering play mode.
    • See this issue for more details.

Fixed #

  • Nested Constraint can be broken with Trace and Optimize #857

1.6.5-rc.2 - 2024-01-24 #

Changed #

  • 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
  • Upgrades NDMF to 1.3.0-rc.4 #853

Fixed #

  • Humanoid Bones may be removed by Trace and Optimize #831
  • Add license, documentationUrl, and changelogUrl to package.json #851

1.6.5-rc.1 - 2024-01-07 #

Changed #

  • Upgrades NDMF to 1.3.0-rc.1 #815
    • Use Title instead of Description since substation in Title is implemented

Fixed #

  • Reference to meshes will be merged is removed #808
  • 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.
  • AvatarOptimizer didn’t register modification to ObjectRegistry #815
  • Empty Armature trick broken #819
  • Added workaround for Array index (n) is out of bounds (size=m) error

1.6.5-beta.1 - 2023-12-28 #

Changed #

  • AvatarOptimizer now uses ErrorReporting API of NDMF instead of our own API #805

Fixed #

  • Fix support for UniVRM components #802

1.6.4 - 2023-12-10 #

1.6.4-beta.1 - 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 #

1.6.2-rc.1 - 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 #

1.6.0-rc.4 - 2023-11-25 #

Fixed #

  • Error if there are null in ingore transforms of PhysBone #749

1.6.0-rc.3 - 2023-11-25 #

Fixed #

  • MergeBone breaks ignoreTransforms of PhysBone #745
  • freeze meaningless may cause FreezeBlendShape:warning:animation warning #746

1.6.0-rc.2 - 2023-11-22 #

Fixed #

  • FinalIK Components will be removed #742

1.6.0-rc.1 - 2023-11-21 #

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

1.6.0-beta.12 - 2023-11-21 #

Added #

  • 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

Fixed #

  • Some missing components warnings #736
    • warning for ONSPAudioSource, VRCImpostorSettings, and RectTransform are fixed

1.6.0-beta.11 - 2023-11-18 #

Fixed #

  • False Positive warning for constant animation in Freeze BlendShape #722
  • Error if we merged Viseme BlendShapes #728

1.5.11 - 2023-11-18 #

1.5.11-beta.1 - 2023-11-17 #

Fixed #

  • Dynamic Bone support not working #727

1.6.0-beta.10 - 2023-11-13 #

Added #

  • Error for MergeBone on the Avatar Root #716
  • Warning for freezing animated BlendShapes #719

Fixed #

  • Compatibility with transform moving plugins #715

1.6.0-beta.9 - 2023-11-12 #

Fixed #

  • Humanoid of Avatar Root Animator broken #714

1.6.0-beta.8 - 2023-11-11 #

Fixed #

  • Animator of AvatarRoot diesappears #711

1.6.0-beta.7 - 2023-11-11 #

Fixed #

  • MergeSMR broken #710

1.6.0-beta.6 - 2023-11-11 #

Changed #

  • Remove Unused Objects removes meaningless Animators and Renderers #709
    • Renderers without Mesh and Animators without AnimatorController is meaningless

Fixed #

  • Enablement mismatched renderers are merged instead of matched renderers #705

1.6.0-beta.5 - 2023-11-08 #

Fixed #

  • PPtr / Object animation not working #703

1.6.0-beta.4 - 2023-11-08 #

Fixed #

  • eyelids BlendShape Removed error for non-AAO avatars #696
  • bounds can be changed in apply on play if updateWhenOffscreen is true #697
  • Animations for most components under MergeBone is not mapped #700

1.6.0-beta.3 - 2023-11-06 #

Added #

  • 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.

Changed #

  • When you’re animating activeness/enablement of source renderers, warning is shown since this release #675

Fixed #

  • proxy animation can be modified #678
  • complex shader with SkinnedMeshRenderer without Bones Brokebn #694

1.6.0-beta.2 - 2023-10-31 #

Added #

  • Small performance improve #641
  • Ability to prevent changing enablement of component #668

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.
  • BREAKING API CHANGES: Behaviour components are renamed to HeavyBehaviour #668

Removed #

  • 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 #

  • Prefab blinks when we see editor of PrefabSafeSet of prefab asset #645 #664
  • Fixes in 1.5.9 #654

1.5.10 - 2023-11-04 #

Fixed #

  • RigidBody Joint can be broken #683

1.5.9 - 2023-10-29 #

1.5.9-rc.1 - 2023-10-28 #

Fixed #

  • Animation clip length can be changed #647

1.6.0-beta.1 - 2023-10-25 #

Added #

  • Public API for registering component information #623
  • Documentation for developers about compatibility with Avatar Optimizer #623
  • 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!

Removed #

Fixed #

  • Improve support of newer Unity versions #608
  • Improve support of projects without VRCSDK #609 #625 #627

1.5.8 - 2023-10-20 #

1.5.8-rc.1 - 2023-10-20 #

Fixed #

  • warning about VRCTestMarker when Build & Test #628

1.5.7 - 2023-10-19 #

1.5.7-beta.1 - 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 #

1.5.6-rc.1 - 2023-10-17 #

Removed #

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

Fixed #

  • BindPose Optimization may break mesh with scale 0 bone #612
  • Error from Preview System when opening inspector of GameObject without SkinnedMeshRenderer #613

1.5.6-beta.2 - 2023-10-16 #

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

Fixed #

  • Update notice may show incorrect version #602
  • Preview button is not disabled even if mesh is none #605

1.5.6-beta.1 - 2023-10-16 #

Fixed #

  • Multi-frame BlendShape can be broken #601

1.5.5 - 2023-10-15 #

1.5.5-rc.1 - 2023-10-15 #

Fixed #

  • BlendShape can be broken with MergeBone Optimization #599

1.5.5-beta.1 - 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

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 #

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

1.5.3-beta.1 - 2023-10-10 #

Fixed #

  • AnimatorController with Synced can be broken #564

1.5.2 - 2023-10-10 #

1.5.2-beta.3 - 2023-10-10 #

Fixed #

  • New version notice remains after updating AAO without restarting UnityEditor #559
  • Freeze BlendShape may break Visame with MergeSkinnedMesh #561

1.5.2-beta.2 - 2023-10-10 #

Added #

  • 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 #

  • GC Debug doesn’t include inactive objects #546
  • EditMode Preview of RemoveMeshInBox is not correct #550
  • Avatar Standard Colliders can be removed #553

1.5.2-beta.1 - 2023-10-09 #

Added #

  • Feature for debugging GC Objects #543

1.5.1 - 2023-10-08 #

1.5.1-beta.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 #

1.5.0-rc.13 - 2023-10-07 #

Changed #

  • Change Japanese Translation of “BlendShape” #535

1.5.0-rc.12 - 2023-10-07 #

1.5.0-rc.11 - 2023-10-05 #

Fixed #

  • Viseme may be broken #527

1.5.0-rc.10 - 2023-10-03 #

Added #

  • Significant Performance Improvements with small code changes #523

1.5.0-rc.9 - 2023-09-28 #

Fixed #

  • Editor of EditSkinnedMesh components may not work well if the object is inactive #518

1.5.0-rc.8 - 2023-09-25 #

Added #

  • Warning Dialog for Legacy Modular Avatar #509

Changed #

  • Internal: ErrorReporting is now on NDMF #511
  • Declare compatible with VRCSDK 3.4.x #513

Fixed #

  • (legacy) Animation Component Disappears #512
  • VRC_SpatialAudioSource Disappears #512
  • Unknown component warning for AvatarActivator of NDMF #512
  • Avoid problematic material slot in MergeSkinnedMesh #508

1.5.0-rc.7 - 2023-09-24 #

Added #

Removed #

  • internal ApplyOnPlay framework #504

1.5.0-rc.6 - 2023-09-24 #

Fixed #

  • AvatarMask broken with many cases #502

1.5.0-rc.5 - 2023-09-23 #

Added #

  • Full EditMode Preview of RemoveMesh Components #500

Fixed #

  • Remove unused bone references #498
  • MergeBone will loose some other transform information with extreamly small parent scale #499

1.5.0-rc.4 - 2023-09-21 #

Fixed #

  • Left eye disappears #493
  • MergeBone will loose transform information with extreamly small parent scale #495
  • Manually configured MergeBone is removed / disabled by GC Objects #496

1.5.0-rc.3 - 2023-09-19 #

Fixed #

  • Eyelid bones disappears with Automatic MergeBone #487

1.5.0-rc.2 - 2023-09-15 #

Added #

  • Automatically merge unnecessary activeness animated GameObject #476

1.5.0-rc.1 - 2023-09-14 #

Fixed #

  • StaticRenderer is not removed with MergeSkinnedMesh #473

1.5.0-beta.14 - 2023-09-14 #

Added #

  • Avoid Name Conflict in MergeBone #467

Fixed #

  • Light disappears #466
  • Automatic MergeBone may break Animation by conflictng GameObject name #467

1.5.0-beta.13 - 2023-09-13 #

Added #

  • Feature for debugging GC Objects #464

Fixed #

  • Collider disappears #463
  • Behaviour can disappears if initially disabled #465

1.5.0-beta.12 - 2023-09-13 #

Fixed #

  • Transform animation broken #461

1.5.0-beta.11 - 2023-09-13 #

Fixed #

  • Tangent is broken with MergeBone #457
  • VRCStation disappears #460

1.5.0-beta.10 - 2023-09-12 #

Fixed #

  • Error if we merge bone recursively #456

1.5.0-beta.9 - 2023-09-12 #

Fixed #

  • Automatic MergeBone doesn’t think about animating m_IsActive of GameObject #454
  • MergeBone may make some bone inactive to active if bone being merged is inactive #454

1.5.0-beta.8 - 2023-09-11 #

Fixed #

  • MergeBone will break Normal and Tangent #448
  • PhysBone for Animator Parameter disappears #452
  • RemoveMeshByBlendShape on the SkinnedMeshRenderer with MergeSkinnedMesh not working #451

1.5.0-beta.7 - 2023-09-08 #

Fixed #

  • GC Objects will remove VRC Contact Components #438
  • Error if all vertices of some BlendShape is removed by RemoveMeshByBlendShape or RemoveMeshInBox #440
  • Inactivating parent GameObject or GameObject of component is not accounted in GC Objects #441

1.5.0-beta.6 - 2023-09-07 #

Added #

  • Automatic MergeBone in Remove Unused Objects #433
  • Preserve end bones in Remove Unused Objects #430
    • This does same thing as Preserve end bones in UnusedBonesByReferenceTool.

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!

Fixed #

  • Unknown type warning is not correctly rendered #427
  • MergeBone with uneven scale is supported if all children are merged #426
  • MakeChidlren are detected as Unknown Component #431

1.5.0-beta.5 - 2023-09-06 #

Added #

  • 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
    • Added Use Legacy GC to use legacy algotythm for Remove Unused Objects

Changed #

  • Performance: Share MeshInfo2 between SkinnedMesh processing and MergeBone #421

Fixed #

1.5.0-beta.4 - 2023-09-05 #

Changed #

  • Merged changes in 1.4.3 #409

1.4.3 - 2023-09-05 #

1.4.3-beta.1 - 2023-09-05 #

Fixed #

  • Mesh broken with BlendShape Frame with weight 0 #408

1.5.0-beta.3 - 2023-09-05 #

Fixed #

  • Unable to upload avatars with VRCSDK 3.2.x #407

1.5.0-beta.2 - 2023-09-04 #

Fixed #

  • Animator Component Disappears #404
  • MeshFilter Component Disappears with MeshRenderer #405

1.5.0-beta.1 - 2023-09-04 #

Changed #

  • Improved ‘Remove Unused Objects’ #401
    • Remove Unused Objects now removes unnecessary Components & Bones!

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 #

1.4.0-rc.4 - 2023-09-01 #

1.4.0-rc.3 - 2023-09-01 #

Changed #

  • 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?

1.4.0-rc.2 - 2023-08-29 #

Added #

  • Remove Mesh By BlendShape Editor now can set BlendShape weights to 0/100 #389

Fixed #

  • Clear Endpoint Position may not work well with ignore transforms #390
  • Clear Endpoint Position doesn’t support Undo #390

1.4.0-rc.1 - 2023-08-27 #

Added #

  • Multi Pass Rendering of Last SubMesh support #384

Fixed #

  • Unclear Error with Mesh with Read/Write off #386

1.4.0-beta.1 - 2023-08-26 #

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.

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

Fixed #

  • MergeBone not working well with non-restpose bones #379

1.3.4 - 2023-08-22 #

Changed #

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

1.3.3 - 2023-08-21 #

Changed #

  • 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 #

1.3.2-beta.3 - 2023-08-20 #

Fixed #

  • No error context in Multi Pass Rendering error #348

1.3.2-beta.2 - 2023-08-20 #

Fixed #

  • Multi Passs Rendering not supported error doesn’t have location info #347

1.3.2-beta.1 - 2023-08-20 #

Fixed #

  • Children of IsActive animated object is not considered #342

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 #

Changed #

  • ApplyOnPlayGlobalActivator is no longer added for scens without avatars #318

1.3.0-rc.2 - 2023-08-11 #

Fixed #

  • Apply On Play may not working well #305
  • Some components unexpectedly can be added multiple times #306

1.3.0-rc.1 - 2023-08-10 #

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

1.2.0 - 2023-07-26 #

Added #

  • Support for material swapping animation in MergeSkinnedMesh #274

1.2.0-rc.1 - 2023-07-24 #

Fixed #

  • Breaks mesh without tangent #271

1.2.0-beta.1 - 2023-07-17 #

Added #

  • Automatic bounds computation in MergeSkinnedMesh #264
  • Automatic Configuration System #265
    • Currently FreezeBlendShape can be automatically configured.

Changed #

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

1.1.2-beta.1 - 2023-07-17 #

This release is mistake.

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 #

Changed #

  • Do not compress MergeToonLit generated texture on play #258

1.1.0-rc.1 - 2023-07-10 #

1.1.0-beta.2 - 2023-07-08 #

Fixed #

  • Asset files are not generated with Manual Bake #255
  • Merge Toon Lit duplicates vertex too many #256
    • This could causes huge increase in avatar size. this is now fixed.

1.1.0-beta.1 - 2023-07-07 #

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 replaces way to awake modular-avatar by bdunderscore.
    • 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

1.0.0 - 2023-06-27 #

1.0.0-beta.5 - 2023-06-26 #

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 に更新してください!

Changed #

  • Merged changes in 0.4.12

0.4.12 - 2023-06-22 #

Changed #

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

1.0.0-beta.4 - 2023-06-19 #

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 に更新してください!

Changed #

  • Merged changes in 0.4.8, 0.4.9, 0.4.10, and 0.4.11

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 #

0.4.10-beta.1 - 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 #

1.0.0-beta.3 - 2023-06-13 #

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 に更新してください!

Added #

  • Merged changes in 0.4.7 #224

0.4.7 - 2023-06-13 #

Fixed #

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

1.0.0-beta.2 - 2023-06-10 #

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 に更新してください!

Added #

  • Merged changes in 0.4.5 and 0.4.6 #218

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

1.0.0-beta.1 - 2023-06-05 #

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.5-beta.1 - 2023-06-05 #

0.4.4 - 2023-06-04 #

0.4.4-rc.1 - 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 #

  • 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.

0.4.1-rc.3 - 2023-05-22 #

Fixed #

  • 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.1-rc.2 - 2023-05-22 #

Fixed #

  • Errors in Animation Mapping System #176
    • Error with removed property
    • Error with Property moved twice
  • Merge PhysBone is not working #177
    • Previously, values are not copied correctly
  • The help box for description of components without description were shown #178

0.4.1-rc.1 - 2023-05-21 #

Changed #

  • Improve Animation Mapping System #172
    • This should reduce build time

0.4.1-beta.1 - 2023-05-20 #

Changed #

  • Reimplemented Animation Mapping System Completely #168
    • This should fixes problem with objects/components at same place.

Fixed #

  • Error is not cleared on build #170

0.4.0 - 2023-05-20 #

0.4.0-rc.2 - 2023-05-19 #

Fixed #

  • Error when we opened Editor of MergePhysBone component #167

0.4.0-rc.1 - 2023-05-19 #

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.

Fixed #

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

0.4.0-beta.1 - 2023-05-16 #

Added #

  • Japanese Translation: 日本語化 #152

Removed #

  • Delete GameObject feature #153
    • Use EditorOnly tag instead

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 #

  • Manual Bake Avatar #147
    • Left click the avatar and click [AvatarOptimizer] Manual Bake Avatar

0.3.2-beta.2 - 2023-05-12 #

Added #

0.3.2-beta.1 - 2023-05-09 #

Added #

  • Error Reporting System #124
    • This adds window shows errors on build
    • This is based on Modular Avatar’s Error Reporting Window. thanks @bdunderscore

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 #

Fixed #

  • Parent differ error is gone #129

0.3.0-rc.2 - 2023-05-02 #

Fixed #

  • Max Squish is not shown if we’re using PhysBone 1.0 #127

0.3.0-rc.1 - 2023-04-30 #

Changed #

  • Upgrade CL4EE to 1.0.0 #121

0.3.0-beta.3 - 2023-04-28 #

Added #

Removed #

  • 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.

0.3.0-beta.2 - 2023-04-26 #

Fixed #

  • ShouldIgnoreComponentPatch cases compilation error #108
  • Not working on the build time #114

0.3.0-beta.1 - 2023-04-24 #

Added #

  • Make Children of Me #100
    • As a alternative of feature removal in same pull request

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.

Removed #

  • BREAKING Removed Prefab Safe List #95
  • BREAKING Removed RootTransform feature from MergePhysBone #100
  • BREAKING Dropped support for VRCSDK 3.1.12 or older #101
    • Now, we require VRCSDK since 3.1.13 (including) until 3.2.0 (excluding)

0.2.8 - 2023-04-19 #

0.2.8-rc.1 - 2023-04-19 #

Fixed #

  • NullReferenceException with prefabs in editor for PrefabSafeSet #92

0.2.7 - 2023-04-01 #

0.2.7-beta.1 - 2023-04-01 #

Added #

  • Support for VRCSDK 3.1.12 and 3.1.13

0.2.6 - 2023-03-31 #

0.2.6-rc.4 - 2023-03-30 #

Fixed #

  • 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.6-rc.3 - 2023-03-29 #

Fixed #

  • Assertion does not work well #85
    • This can make invalid mesh

0.2.6-rc.2 - 2023-03-29 #

0.2.6-rc.1 - 2023-03-28 #

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.

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 #

  • use ExecuteAlways instead of ExecuteInEditMode #72

Fixed #

  • None is added/removed on the prefab modifications #73
  • NullReferenceException in SetCurrentSaveVersion #74

0.2.5-rc.1 - 2023-03-23 #

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.

Fixed #

  • save version is not saved again #69

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 #

0.2.1-beta.1 - 2023-03-20 #

Fixed #

  • Migration failed if some renderer is None #49

0.2.0 - 2023-03-19 #

0.2.0-rc.2 - 2023-03-16 #

Added #

  • Reopening scene after migration #47

Fixed #

  • unnecessary logs on migration #38
  • We may forget checking components on disable objects #46

0.2.0-rc.1 - 2023-03-12 #

Fixed #

  • SkinnedMeshRenderers without bones will break mesh #35
  • Reference to components in prefab asset will remain #37

0.2.0-beta.2 - 2023-03-04 #

Added #

  • Forge Migration #31
    • With this feature, you can re-migrate everything but you may lost changes you made in v0.2

Fixed #

  • Migration of PrefabSafeSet prefab overrides is not well #29
  • Fixed IndexOutOfError if there are more bones than bindposes #30

0.2.0-beta.1 - 2023-03-03 #

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.

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