[Released] Ica Skinned Mesh ✨ Advanced Mesh Skinner (Dual Quaternion Skinning and much more...)

Asset Store | Docs | Try in Browser

:star: Ica Skinned Mesh :star:

Ica Skinned Mesh is a compute shader based skinner that focused on skinning high quality digital humans.

Its a replacement for the built in “Skinned Mesh Renderer” component, that enables state of the art skinning techniques that used by many AAA games.

:briefcase: When To Use

  • You are working realistic character for games or cinematic projects.
  • Your character model have a lot of blendshapes and reducing performance (10-300+).
  • You want dynamic, physics-driven elements for secondary motion.

:star: Dual Quaternion Skinning (DQS) with Scale

Say goodbye to volume loss with DQS, the gold standard for realistic deformation. DQS solve the volume loss issue on skinned meshes, mostly seen at joints. You probably already familiar with DQS since it standard in 3D Modelling applications(called “Preserve Volume” in Blender).

:star: Optimized Blend Shape Processing

Process all blend shapes in a single compute shader dispatch, improving performance by up to 4x compared to Unity’s built-in Skinned Mesh Renderer, when a lot of blendshapes is active at same time.
Perfect for character models that have high amount of blend shapes.

:star: Accurate Normal & Tangent Recalculation

Fix inaccurate lighting caused by multiple blend shapes affecting the same vertex.
Utilizes a compute shader pipeline for runtime recalculation of normals and tangents, ensuring correct results at every frame.

:star: (Experimental) Verlet Simulation for Realistic Secondary Motion
Bring life to characters with physics-driven secondary motion for mesh parts.
Based on Verlet integration, providing natural, dynamic movement while maintaining performance.
Easily configurable via vertex colors and stiffness, damping levels to suit your character’s design.

:star: Runs Editor time
All Ica Skinned Mesh components works on edit time too, what you see in edit time is what you get in runtime :sunglasses: Also fast play mode options are supported.

:star: Attachment Skinner
Attachment Skinner is alternative way of skinning for meshes that meant to follow a base mesh, for example clothing, 3d decals.

It does not use bone or blend shape information, instead an attachment follows their base shape whenever it deforms.

This results much faster computation, for applicable meshes. Also reduces both vram and disk consumption.

Also since it does not required to transfer weight painting and blend shapes from base mesh, it simplifies asset creation pipeline significantly.

:rocket: Why Choose This Asset?

  • Built for Performance: Ica Skinned Mesh built for high performance from very first iteration, based on experience of author previous DOTS based normal recalculation asset. Its prioritize use of compute shaders whenever algorithms allows, and using DOTS on CPU side.

  • Ongoing Support: Used and supported by author continuously.

  • Non-Disruptive Integration: Ica Skinned Mesh read bone transforms and handles the skinning part, it does not not interfere with other plugins that work on IK, Animation, Shader etc.

:package: Package Includes
Three Components:

  • Ica Skinner System: Process all other Ica Renderers in the scene on ever frame.

  • Ica Skinner: Main component of the asset and a replacement for built in SMR.

  • Ica Attachment Skinner Attachment skinner deform meshes to follow a base Ica Skinner.

:zap:Requirements

  • Unity 22 LTS or higher
  • Compute Shader Support

:warning: Current Caveats

  • Normal recompute is equivalent of “legacy with split tangents” and not “mikktspace”
  • Ica Skinner has higher Vram usage than SMR **
  • Nothing is cached in pre built, this results higher startup initialization time **
  • Ica Skinner has different performance characteristics (could be better or worse) **
  • API is not stable *
  • 4 Bones per Vertex Only *
  • Not all SMR api methods provided in Ica Skinner *
  • Verlet Physics still in experimental state *
  • Tension compute still in experimental state *

(*) Planned to be fixed or improved.
(**) These may be fixed if I can convince Unity to make some improvements in the engine.

2 Likes

:bulb:FAQ
SMR: Skinned Mesh Renderer (built-in)
IcaSM: Ica Skinned Mesh (this asset)
Ica Skinner: Main Component of the asset
LBS: Linear Blend Skinning (Built-in skinning)
DQS: Dual Quaternion Skinning

Q: Is it faster than built in SMR?
A: It depends, SMR and Ica Skinner have different performance characteristic. In most cases when more than 8 blend-shapes are active, Ica Skinner start outperforming SMR.

Q: Does it use more vram than SMR?
A: Unfortunately yes, due to some limitations of mesh API, some data need to be duplicated and this result of higher vram usage. While it may seems a lot, it will be not significant unless you have hundreds of Ica Skinner actives at the scene.

Q: Does it reduce asset size?
A: Yes, since Ica Skinner recomputes normals and tangents real-time, it does not need the mesh normals-tangents and blend shape delta normals-tangents. This significantly reduce asset size.

Q: Can be used by “X Asset” together?
A: If X asset work with the internal buffers of SMR (GetVertexBuffer etc), then probably no.

Q: Does Cloth Component works?
A: No.

1 Like

Absolutely valuable asset!

1 Like

What about the store link?

Thanks!

I’m doing final touches and preparing promo images and video, after that I will submit to store, not sure how much it will take to get approved tho.

1 Like

In general, you will get a response from Unity within three weeks. Sometimes with a bit of luck, you can get the results in 10 days!

1 Like

I have a question. Under standard conditions (without many BlendShapes and not very high - precision animations), does the Ica Skinned Mesh still lead the built - in Skinned Mesh Render in terms of performance? If the answer is yes, then the potential of this asset will increase significantly!

1 Like

You can download the windows build at itch io page and try yourself. In my pc at 6 blendshapes they are almost equal (with normal fix), after that IcaSMR become faster, with every new blendshape added gaps widen. Note that on windows build built in smr uses batched compute skinning which is the new tech unity featured in v6000.

1 Like

Great news, really excited of your package!
I see no performance hit with DQS enabled in your demo, always wondered why game engines avoid it like the plague.

1 Like

And the linear performance degradation looks rather threatening. Afraid if it wasn’t for batching or even with cpu skinning.

Hope you’ll manage to do at least 8 soon.

So there’s no fallback to it in runtime?

In your detailed post you’ve mentioned Subsurfaces as a LOD approach, any news in this regard?

Does it reduce VRAM usage by chance? My main concern with blendshapes is that when they overload video memory, the FPS is just being killed. And they do it pretty quickly with 250k tris characters. Chars unique, so not much that GPU batching can do, and the CPU skinning just tanks overall performance down, despite offloading memory.
There’s some impressive improvement in your demo, with dozens of copies of same mesh (btw how much tris?), though in my scenario it’s quite the opposite: up to 4-5 unique characters with dense cage on the screen, maybe 10-20 active and 100-150 overall blendshapes on each. Maybe dynamic stripping of unused blendshapes can help, don’t know if that’s possible though. So do you think there will be some gains?

1 Like

First of all, thanks for your interest.

Batched still dispatch per blend shape, where in IcaSMR all blend shape always use one dispatch.

My end goal is support whatever built in support, but I want to be sure everything is right before adding a new layer of complexity.

You switch in runtime with just enabling/disabling the components, could be useful for lowest level of lod where you don’t use blendshapes

I not working on it right now, one reason is focusing stability of first version of without adding more complexity like I said, another reason is this kind of task would be way more efficient with Mesh Shader, performance and memory wise. Even if it will take 0.2ms on 60k mesh, via compute shaders,
it will take 5x memory. I’m currently writing my own Vulkan/c++ renderer to prototype with mesh shaders and to be reference point for compute performance. But do not expect to happen in near future.

Currently not, VRAM usage will be higher when using IcaSMR. It its caused by the lack of mesh api.
While Unity constantly trying to improve customizability of the rendering part of the graphics,
the geometry part still prehistoric. I know exactly what should I do, but simply no way to do it since,
I hit a the wall when reaching c++ layer where I need to access.

Are you sure it happens because of high vram usage? The bottle-necked by vram capacity and bandwidth are different. When bottleneck by vram capacity graphic resources become allocated from regular ram, which moves data from pci-e bus to gpu core, which has higher latency and slower.
You may guess that’s happening from memory profiler in unity but need to use gpu profiler to be sure.
And unless you fill your scene 4k pbr textures you should not filled vram with that amount of geometry data. Btw use the vertex count when talking about optimizations and not triangle/index count :grin:

1 Like

Also I will update this page to reflect stability and limitations of the IcaSMR better. Last thing that I want to do is giving false promises.

1 Like

Big news! Ica Skinned Mesh published Ica Skinned Mesh | Animation Tools | Unity Asset Store with %50 discount.

Also I’m experimenting with Tension Values Compute. Tension values are per vertex data that shows how much that area stretch or compressed by deformations. Looks like some character creator software already creating the textures for it.

I did some renaming, in first versions of IcaSM the skinners also responsible for rendering, so I called them Renderers. But in published version skinners do only skins and built in mesh renderer renders the final mesh.

Also, to the first four request (here or dm me) I will send a free voucher. BE QUICK!!!

1 Like

Congratz on your release! Will be glad to test out the tool if vouchers still available.

Send!! Still 3 more left :yum:

1 Like