Search Issue Tracker
Won't Fix
Under Consideration for 6000.0.X, 6000.3.X, 6000.4.X
Votes
3
Found in
6000.0.56f1
6000.2.1f1
6000.3.0a5
6000.4.0a1
6000.5.0a1
Issue ID
UUM-114581
Regression
No
NaN blend shape deltas are replaced with 0.0 when added via AddBlendShapeFrame
How to reproduce:
1. Open the “IN-111511_AddBlendShapeFrame“ project
2. Open the “SampleScene”
3. Enter Play Mode
4. In the Hierarchy select the “TestMeshObject”
5. In the Inspector expand the “Skinned Mesh Renderer” Component
6. In the “Selector” Component ensure “Selection” is set to “None”
7. In “BlendShapes” set “NaN BlendShape” value above 0
8. Observe the cube color in Game view
Expected result: The cube is black
Actual result: The cube is white
Reproducible with: 2023.1.0a1, 6000.0.56f1, 6000.2.1f1, 6000.3.0a5
Reproducible on: macOS 15.6 (M1 Max)
Not reproducible on: no other environments tested
Comments (1)
-
nekobako-dev
Aug 25, 2025 23:57
A blend shape that moves vertices to Vector3.positiveInfinity is used to temporarily hide part of a mesh without actually splitting it.
I think it would be clearer if the same could also be achieved with Vector3.one * float.NaN.
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Out-of-bounds memory access with multiple CanvasRenderers under a Canvas when using Mesh API
- Inspector tries to access file after it was deleted when the file was locked in Inspector window
- Changing Transform values in Search window Inspector loses focus while dragging and stopping mouse without releasing dragging action
- Saving changes on the dirty VFX Graph during the Play mode throws "The referenced script (Unknown) on this Behaviour is missing!" warnings
- VFX Graph Debug Info overlaps the "Initialize" block debug info by default
Resolution Note:
After careful review, we’ve decided not to support this in SkinnedMeshRenderer. While supporting NaN values could offer benefits, it risks breaking existing projects that depend on current behavior to filter NaNs out. Additionally, ensuring consistent behavior across all platforms, now and in the future, is not guaranteed.
Blend shapes are applied using weights; when the weight is 0, the delta is applied but the result is the original vertex. Allowing NaN would break this, since multiplying zero by NaN still yields NaN, resulting in the primitive always getting culled. The described use case instead relies on an implementation detail of SkinnedMeshRenderer: blend shapes with zero weight are skipped. Only this last behavior results in a toggle to cull primitives.
Instead, for the described use case, we recommend relying on existing values we allow through or creating a custom blendshape-like system. For instance, you can use a compute shader to modify vertices after skinning and achieve a similar result. For this you would need to use SkinnedMeshRenderer.GetVertexBuffer() to retrieve the graphics buffer and dispatch at the correct time in the player loop.