Win 7 64 - Nvidia 580 gtx
2.67b
The multi-res baking for displacement is not working as it should. The benefit of baking a texture from multi-res is the bypass of bias and artifacts,and the speed it gives on sculpts which are over 16-24 milion polys.
I understand there has been 2 previous posts on the same subject #32832 and #31945.
The examples arent very clear. To show the problem i have prepared a comparison for the original sculpt the multi-res and selected2active baking.
* Please check model_comparison.png
* I have made a displacement map comparison incase you need it.
* Also i have made a example file for you to compare.
If you think there is still no problem with the multi-res baking then i request you remove it from displacement map baking section , since i cant think of any use for it in its current state and its creating confusions.
Thanks
Description
Event Timeline
So I haven't stared at this art to the extent you have so forgive me if I am babbling here but the baked texture on the left in your first comparison "looks" good to me.
Is there a chance this all comes down to the fact that multires bake always normalizes the displacements to [0;1] range?
Or do you think it's more fundamentally wrong than that?
So yeah I just looked in apply_heights_data() and indeed we do normalize to [0;1] unconditionally.
If sergey is able to? we can perhaps provide an option to bypass normalization when rendering to a floats buffer.
For now you'd have to adjust scale and offset on the displacements.
As for your blend sample with the boxy mesh that's not a scenario that will ever work with multires. The multires baker
is done more like the baker in zbrush (we don't shoot off rays). It won't give results like a standard baker and you need a certain level of
fidelity and preferably catmul clark subdiv to pull it off. The one thing that is unfortunate though is that we're not able to provide the ability
to bake to level 0. That does make things more problematic than they need to be. But I think the problem on the alien guy could simply come down to
the normalization of the heights range.
Sorry for posting yet again but yeah I think it's down to normalization and preview level 0 not being supported which is really bad.
But anyway if I load your blend file and then on the multires one if I reduce the strength of the displacement modifier down to 0.25
then the scale looks correct to me. The only issues I see remaining past that point are due to baking to level 1.
For a case like this baking to level 0 would be required which as I am sure you know isn't supported at this point.
Also I think part of your problem is you have a certain expectation of what the multires baker is supposed to produce which isn't entirely correct.
Like I was saying this is more like the baker of zbrush. It's not supposed to produce results like standard baker.
It bakes relative to hi-res vs. preview level. However a zbrush type baker assumes all levels are impacted by brush strokes which is also why
preview level 0 unfortunately isn't supported in blender since it's not impacted by sculpting (in zbrush it is).
So the multires baker will allow you to bake to any preview level that is impact by brush strokes which is from 1 and up to max.
What it bakes is thus the difference between the max level and the preview level. So if you want to apply the resulting map it would have to be applied to a mesh
like the preview level you baked to. On top of that the displacement map is smoothed by default. You can disable this if you check the lo-res option.
smoothed: https://dl.dropboxusercontent.com/u/55891920/issues/asubdivlores.png
non smoothed: https://dl.dropboxusercontent.com/u/55891920/issues/actuallores.png
preview level 1: https://dl.dropboxusercontent.com/u/55891920/issues/lo.png
max level: https://dl.dropboxusercontent.com/u/55891920/issues/hi.png
so which is the right result depends on what your intention is. If you want to displace the original lo-res as is you'd need the non smoothed
displacement map. If you are passing the lo-res as a control cage then you'd subdivide that and use the smoothed displacement map.
What's right/wrong is very case dependent. In the end you have to use the result correctly and applying the smoothed result to
level 0 which isn't what you baked to won't work correctly.
The feature is still useful but you have to know how to use it basically.
Hi Morten, i really cant think of multi-res displacement as a feature because it has no practical uses. If you're saying i have expectations what kind of results a displacement map should produce .You're correct.I have given the examples on the model comparison picture. If you repeating this argument which Sergey also made, that the multi-res baker is not the same as the standard baker, and for true displacement the only way is to use standard baker. Then all i'm saying that this has no uses in practical applications. and its causing problems because it "seems" to claim it is doing the same thing as the standard baker is doing.
You can see a similar problem with multi-res ambient occlusion baking.The multi-res ao is much more brighter than the standard ao bake.I assume the cause of this is the smoothing process.But maybe its another topic so it should be discussed later. The only multi-res baking which is useful at the moment is normal map baking.And i use it almost daily at work.
So if I would like to displace the lo-res mesh with a level 4 sud-d modifier ; I should bake an non-smoothed multi-res displacement with a preview of level 4 . However the resulting mesh will have grid-artifacts is makes it not usable in production.This was also stated in other bug reports before but i remember Sergey saying it was the expected behavior.Of course i'm talking from memory because i have tested this before and i know the outcome,but to give benefit of doubt i will create a example to demonstrate it is not a desired solution and not useful in production.
Since you think i don't know how to use it properly i have put together a document.I will be more than glad if you can show me the proper result which looks like a selected 2 active displacement or better.
in the blend file there are 6 models:
1 ) original sculpt; it just the head. it was't complete so i used zremesher to quickly create a 5k version and cut the head.
2) displacement selected 2 active: I had to clean it beacuse of the artifacts."apply base" is used.
3) non-applied-smooth displace: A smoothed displace bake version with a sculpt with no "apply base" used.
4) non-applied-non-smooth displace: A " low resolution mesh" ticked displace bake version with a sculpt with no "apply base" used.
5) applied-smooth displace: A smoothed displace bake version with a sculpt with "apply base" used.
6) applied-non-smooth displace: A " low resolution mesh" ticked displace bake version with a sculpt with "apply base" used.
thanks.
dropbox link >> https://www.dropbox.com/s/ybsdey4qi96p5tk/displacement_argument.blend
>So if I would like to displace the lo-res mesh with a level 4 sud-d modifier ; I should bake an non-smoothed multi-res displacement with a preview of level 4
This is wrong. The multires baker will always bake from highest level to the preview level you select. So since you can't pick level 0 (unfortunately) you would typically pick level 1.
The way you use the baked displacement map is you use the preview level you baked to as your new lo-res mesh and that's the mesh you displace from.
So you would export the preview level you baked to (with sculpted strokes) into your game for instance as the lo-res. If you catmul-clark subdivide it in the game then you'd use the smooth displacement map for displacements. If you only do a simple tess kind of tessellation in your engine then you'd have to use the non smooth displacement map since that incorporates the distance from the flat lo-res surface to hi-res. This is how you're supposed to use it and it works very well.
I would be grateful if you can show me prof that "it works very well". Because usage explanation you provided is the same procedure i used baking the "model_comparison.png" . I 'm at work and will provide some more bakes when i get home. I have uploaded 2 different examples here and i still don't have prof that a multi-res displacement bake provides result that are useful in some way. (One would expect that the function of a displacement map would be to displace something).
So unless you can show me some better examples other than cubes and spheres, i think the argument is still valid.
Thanks
Multires baked is different from normal one by its's nature and could give different results. But it also have got a bit different usecase described by Morten.
In the file attached the issue is in midpoint and strength i guess (because of normalization). We could support non-normalized baking, but not having it is not a bug :)
Discussing how things shall work better be done outside of the bug tracker. You're welcome to drop into IRC. Me or others would help there. Also, i'm currently working on an article which is aimed to describe all the nuances of multires baker.
Thanks for the report, but for now it's more like you're confused by different nature of multires baker.
Hi Sergey; I have read your previous answers on the bug reports i mentioned on the original post and i also read your blender dev blog. I am aware you have said the 2 systems are different and normal displacement can be achieved with the standard baker. However i tried to explain you guys that looking from the user side of things, multi-res baking causes problems in pipeline integrity. I have been using blender for 6 years now. And can say in a 3dsmax dominant environment i have managed to make my boss and our graphic programmers accept and acknowledge blender's capabilities and performance . I have also explained Morten that i use multi-res normal baking almost daily and like it very much.However, since i can get the correct results with normal baking and not get the same results with displacement and ambient occlusion baking troubles me and i find it obligatory to report this because from a blender pipeline point of view it breaks integrity.
I can use 3dsmax,Zbrush,Topogun or xnormal to bake those maps but i think it is essential that the core devs of blender should know that this kind of usability issues create barriers with users; new or veteran. Thats why i persisted on writing this bug report and not be satisfied with Morten's explanation.I appreciate the work each one of you guys are doing however your approach to the limitations or problems blender might have or seem to have, is very important in promoting the product. And even though blender is open source i believe blender can grow and achieve more if more donations are made by the people, and to ensure more donations be made blender shouldn't be troubled with limitations that look like flaws.
To simplify what im trying to say; I shouldn't feel or be confused by the "different nature" of features if they are common necessary features (or they are labeled that way).
I hope I made a point , and it makes sense to you guys.
Take care.
So what happens if you bake out displacement in zbrush and then try and use that with the displacement modifier in Blender?
Well ; Morten even though this report is closed i guess it still sends notifications ehh ? :). I usually work between 12-14 hours a day so im a little tired at the moment, give me a couple of days and i will post the screen shots of each program and the disp. maps generated by them;i mean. until sunday. I'm not claiming anything like they are flawless or anything. I guess youre trying to rub my face to a problem you already know the answer to hehe. No problem i will start with Zbrush and move from there...
Some pre-info on the test by the way. 3dsmax bakes are almost a favorite by most artists. Since they use a control cage and have super sampling, it usually produces good result if you take time to tweak stufff. I already complained Ton about the lack of cage in blender, and thats why multi-res is so important because of the good result it produces ( no artifacts).X normal you proppably know needs more tweaking than 3dsmax but can produce good results also since you can import custom cage. overall imao it takes more time than max. Topogun ? well they do have lots of fine tune options but i rally dont think their baking is good; but if youre desperate you can use it ( truthfully i would choose to bake with selected 2 active every time). For zbrush you know if you have a UVed mesh all you have to do is tweak projection settings. if projections are good then the maps are good. You do have to tweak normal map channels though since blender uses y as depth and z up. normal maps green channel (y) needs flipping.
Sorry ; anyway i just wanted to say i'll post some tests and we willll both see the result, maybe you already know th outcome :). This is my beer day so sorry if my typing dont make sense..
take care
evn though this argument is over here is the displacements i put together. I forgot to bake 3dsmax on friday i only use it at the office. Anyway the topogun is a bad software but i put it anyway. All in 1 file. Take care
70 + mb
>>>> https://www.dropbox.com/s/pn7ubg7t21h489j/koh_displacement_tests.blend