Add Blender's "Preserve Volume" (Dual Quaternion) feature into Unity.

There is no Dual Quaternion into Unity. And all our model’s deformation looks bad when animating as you can see in the picture the difference. The mesh is shrinking when moving the bones. Please add Blender’s “Preserve Volume” (Dual Quaternion) feature into Unity.

3 Likes

I don’t know of a single game engine that supports that, it’s probably for performance reasons I’d guess.
You usually fix those issues with better skinning + corrective blendshapes, and/or more bones in those tricky spots. Depends on the case.

1 Like

CryEngine and Lumberyard support the Dual Quaternion. I want that Unity support this too. They just can add this feature and it depends on developers which they wish to use. They need to be a selection on the editor. And developer will chose the linear or dual quaternion. It is up to developers to choose but they need to add this.

3 Likes

Cool, didn’t know Cryengine supported that, been a while since I used it.
It would indeed be nice if they added it but it’s not some super necessary, urgent feature.
I mean, everyone has been doing just fine with linear blending for decades, there are many ways to solve bad deformations that are more performant than dual quaternion blending. Although a bit more time consuming to do.
Look at the Heretic short from Unity for example, no dual quaternion blending there, still looks amazing. Look at something like FFVII (made in UE4), again no dual quaternion blending, looks amazing.
But anyways, I wouldn’t hold my breath. From what I can tell Unity is already quite swamped with work and adding a feature that already has quite a lot of ways around it probably would not be high on the priority list, if at all.
But it would be nice to have it eventually, at least for HDRP.
Anyways, I’m rambling, sorry.

1 Like

I asked this request to unity support they send this message to me

"Hi there,

Thank you for your kind patience on this ticket.

I’ve talked with our engine support team but they mentioned that it seems to be a feature request but there isn’t much they can do currently. Unfortunately, this feature request is not a priority at this moment, it might take a long time to reflect this request on our Unity engine feature.

I am sorry that we can’t be more help on this, and I hope this is helpful.

Best regards,
Unity AJ_KR
Customer Service Engineer"

I think that they will add this feature, bot not now. It will take a long time add this feature into Unity

1 Like

Any updates regarding volume preservation in Unity? We’re almost 2024 now.

1 Like

I’m afraid that it’s not gonna happen
because it’s not in unity’s benefit to do so
and because it’s not a necessity in terms of character design

when it comes to preserving volumes, it is always advised to learn topology and skinning techniques, not use heavy features like Double Quaternions

That, is nonsensical , you think “preserve volume” and “Corrective smooth” are there in blender because … 3D modellers are lazy or limited in polygons or bad in topology?

(Learn topology is an Inaccurate argument, bad topology will make any deformation look bad WITH OR WITHOUT volume preservation; bad topology will highlight existing problems but they will still exist with or without proper topology).

go down to the math and code of preserve volume (in blender) and see the problems it solves, you can add as many helper deformation bones as you want , as many corrective shape keys as you want, they will minimize the problem but it will ALWAYS BE THERE, like it or not; deformation problems will STILL BE THERE with perfect topology , planer faces, good edge flow and a billion polygons.

every area around a joint, will have a problem without preserving volume and corrective smooth.

Subjective opinion : I will go beyond that, all the things we have today, RTX, upscaling AI and advances in such field, means NOTHING! reflective shiny floors and mirrors and realistic skin means nothing; if we can’t even get a proper model without breaking body parts and losing weight as soon as a joint is moved; what’s the point of quality rendering? to show how broken the deformable model is?

what exactly IS a high priority or BENEFICIAL task for unity’s team?

not only this task is important, i think its more important than most of the stuff (that ain’t bug-fixing) that unity team is currently working on.

agree or disagree, dismissing volume preservation as “Not beneficial”?
then why exactly making games with 3D models if they are just gonna break and look like shit?

I can understand the performance cost, but as mentioned, crytek managed to do it.

1 Like

Well said.

By the way, in terms of DCC, Blender, Houdini and Maya all support dual quaternion.

Unreal seems to support it too, although a bit hidden ( UE5 has dual quaternion skinning - Laura’s (Mostly) Unreal Blog

But of course, dual quaternion is for lazy people who don’t understand topology! Unity will never benefit from it. Literally every single animator, rigger and app developer is wrong, only Unity is right!

1 Like

I also agree with your perspective. As a beginner, I’ve been suffering from the issue where the area connecting the thigh to the hip becomes flattened or even distorted when the thigh rotates beyond 90 degrees. Almost everyone suggests refining the skeleton, constraints, and skinning to optimize this problem. But after struggling for three nights, the results I achieved were far inferior to what I got by simply enabling “Maintain Volume” and “Corrective Smooth” in Blender in just a few seconds. And when I tried searching for tutorials and consulting resources, I found that they all seemed to deliberately overlook the deformation issue at the hip-thigh junction. These setbacks have left me deeply frustrated and helpless.

Perhaps for experts, achieving similar or even better results is possible through a series of complex optimizations. But since two commonly used features in modeling software can achieve 90% or even 99% of the desired effect in mere seconds, why has almost no one attempted to implement these two features? I just can’t figure it out.

Because they are expansive; no idea if they can be executed on the GPU as well with compute shader; that being said…

Who cares about expansive today? when you have raytracing and volumetric and billion needlessly complicated shaders that games can’t run at 60 FPS on RTX 5090 (the newest GPU (as of time of writing) without aggressive DLSS or competing technologies).

Which begs the question; if today; nobody gives a damn about performance; why can’t we have support for preserving volumes and corrective smooth?

In the meantime; said modifiers can be imitated by baking them (storing the result of the vertex with the modifiers applied) into a texture… to be blended in runtime (You will have to write an exporter in blender using python that will convert the displacement delta of the vertices caused by the modifiers into a texture).

the results will be like a “shape key” in blender or morphs in unity; but for our case; we will use “vertex animation textures” , which is pretty much shape keys executed on the GPU. (It will require tons of textures, tons of texture look-ups, a fragment shader and a lot of VRAM usage).

The gain : non pure shit animations and model deformation that have x100 better returns in visual fidelity than reflective pond with raytracing covered with volumetric fog that turns your GPU into an oven powered by a small nuclear PSU.

You might not care, and the average Unreal Engine game developer (many of whom I consider to be barely competent based on the games getting released) may not care, but many of us here care about performance. Speaking of begged questions: if a feature is this important to you and you don’t care about the caveats why wouldn’t you just choose the engine that supports them?

I see some good arguments for the feature in this thread but “no one cares about performance” isn’t one of them.

1 Like

Well, tbh, he is kind of right… maybe not 100% of devs, but at least in the more representative area of developer (aka AAA companies) is clear that the performance is not even relevant or important anymore, not even something they have in their minds XD, (you have cyberpunk 2077 or silent hill remake for example) for at least 70% of companies (and i’m being generous) Yes, some of us care about performance, in my workflow is the first thing to pay attention, but sadly, you and i, right now, we are not even close a part for that “representative area” :slight_smile:
He is probably talking in general but he is not entirely wrong

In lightwave 3d, i just create bones where i want to keep or preserve volume, i bet we can do something similar here

It was written in a sarcastic way, in every post that i made in the past, people told me to “stop micro-optimizing”; indicating that i may care a bit but lack of tone of voice can cause misunderstanding.

as to “Why not choose different engines”
because engines come as packages, its either unity or unreal or godot; its not “unity with preserve volumes” and “unity without preserve volumes”… there are no forks here (there are add-ons though; but this may need to be implemented as native code).

More information needed. (Show us what is it that you are doing; describe it in details; if you can share screenshots of the process; will be welcomed as well).

Thanks in advance.

there are way more engines than just Unity, Unreal and Godot, and in fact those 3 are not even the best ones (for me unity it’s close to be better tho…)

More information provided:
It’s pretty easy, it’s almost embarrassing, i literally just put one bone where i need to “preserve volume”
Of course i’m exaggerating the effect with a very basic bone chain to make clear the effect but if you modify the size or the power of the bone or strengh you can make wonders, of course i know realtime renders and games are different and the performance is important, but with a few extra bones for that i think it will do fine, if is posible in unity, i have not tried that myslef


1 Like

It should work fine in Unity if the extra bones don’t cause a performance issue. That’s an old rigging trick honestly. I used to use it a lot for knees, shoulders and such. Still would if I were doing much 3d modelling/rigging these days.

2 Likes

I covered that in my 8th post, the solution can’t be something fixed (Meaning not dynamic, set in stone) (and weights are fixed (Once you are done weight painting and export your model).

Neck and other limbs have joints that allow for multiple axes (degrees) of freedom and that’s where the weights will break if he will try to rotate his neck on multiple axes (That’s why we use shape keys to clean up crap deformation)…

That’s where procedural stuff like preserve volume ALONGSIDE corrective smoothness must kick in.

*in addition to cleanup; shape keys can also be used to add fat-folds and boney landmarks for free (If you are already using a shape key; use it all the way; if your topology density allows it ← tip)

**To @impheris - I recommend improving topology; what you have is a spider-web mesh ; which means that you are using more vertices than you should; not a big deal for a static mesh; a big deal for a deforming mesh (especially if you will have shape keys that will eat RAM and corrective smooth + preserve volume will be a nightmare for such density; for a project that needs to run at 60+ FPS).

I mean you generally put these bones as children of relevant bones, or as I would do in Blender, use rigging constraints to make them move/rotate in specific ways that would maintain volume. All in all, it’s very easy to set up and honestly less time consuming than shape-keys.

Comments like these are why you’re hard to take seriously. Its quite good topology; just its high-poly topology. And when you have good topology like this, you can decimate it with few clicks (at least in Blender). There’s nothing wrong with the topology of the mesh in the screenshot, and it may just be a high-poly model they used as an example.

2 Likes

I have answered that as well; in my 8th post just the same; yes; you can add as many bones as you want; parent them to whatever you want; use constraints to make them act the way you want and bake the results when exporting.

You are minimizing the problem; you are not solving it; it will still be there.

Nah, it solves the problem pretty well when you’re know what you’re doing. It’s just called knowing how to rig.