FEATURE REQUEST-GUI display of displacement mapping

The interface, modeling, 3d editing tools, import/export, feature requests, etc

Moderators: jesterKing, stiv

Post Reply
xenophear
Posts: 0
Joined: Tue Nov 15, 2005 3:21 am
Location: USA, Utah

FEATURE REQUEST-GUI display of displacement mapping

Post by xenophear » Tue Nov 15, 2005 3:40 am

I've just recently been getting into procedural texture animation, and while trying to place an object and animate it precisely on a displacement map are extremely difficult without a realtime preview. Perhaps i'm missing something, but if i'm not I would like to submit this as what would seem to be a relatively easy to add feature. I think it would be helpful to the entire blender community.

Thanks to all of you who develop for the blender foundation. Your work is much appreciated and, quite honestly, astounding. Keep up the good work!
Everytime my brother shows me something max can do I discover blender does it too, and in many cases much, much better. (not to mention the fact that it is free!)

joeri
Posts: 96
Joined: Fri Jan 10, 2003 6:41 pm
Contact:

Post by joeri » Tue Nov 15, 2005 9:57 am

Euh,...
That sortof defies the reason for using displacement mapping?

But I guess, if it only is used on selected objects it would be very helpfull for placing the displacement map.
"convert displacement map to poly" already exists in blender. Be it a bit clunky. It's the noise button in the mesh tools. It works as long as you object has size 1,1,1 and is on location 0,0,0 and has a boundingbox of -1,-1 to 1,1

Image

If this would be implemented for the modifiers then you could turn it on/off by own will in render/object/edit mode.

matt_e
Posts: 410
Joined: Mon Oct 14, 2002 4:32 am
Location: Sydney, Australia
Contact:

Post by matt_e » Tue Nov 15, 2005 12:14 pm

joeri wrote:It works as long as you object has size 1,1,1 and is on location 0,0,0 and has a boundingbox of -1,-1 to 1,1
And only if you're doing displacement in one direction straight up, like from a plane, which limits its usefulness. A 'real' displacement modifier would totally rock though (especially being able to rearrange it up and down within other subdivisions etc), just waiting for someone to step up and code it :)

LetterRip
Posts: 0
Joined: Thu Mar 25, 2004 7:03 am

Post by LetterRip » Tue Nov 15, 2005 12:19 pm

broken,

needs to be on your demand list for 'Orange 2' :)

LetterRip

matt_e
Posts: 410
Joined: Mon Oct 14, 2002 4:32 am
Location: Sydney, Australia
Contact:

Post by matt_e » Tue Nov 15, 2005 12:22 pm

Well, there's nothing stopping other coders from having a go - Ton can't do all the work around here! :)

pildanovak
Posts: 18
Joined: Fri Oct 25, 2002 9:32 am
Contact:

Post by pildanovak » Tue Nov 15, 2005 12:32 pm

joeri:
Euh,...
That sortof defies the reason for using displacement mapping?
I don't agree. I think displacement mapping is here to save memory and speed. If you visualise the displacement, you maybe loose part of the speed, but still save memory. And who says you have to display the displacement on the subdivision level of rendering? for animating something on a displacement surface you just need to see approximately where the surface is.
Another good reason to visualise displacement would be painting of displacement maps on the surface. [/code]

maybe in case of generated fractal textures it could be a problem, i don't know.

in this thread i wrote about something similar, which could be also used together with visualised displacement mapping
http://www.blender3d.org/forum/viewtop ... c1f2ba81ef

joeri
Posts: 96
Joined: Fri Jan 10, 2003 6:41 pm
Contact:

Post by joeri » Tue Nov 15, 2005 3:57 pm

How would it save memory?

Displacement in rendering was invented so you would not need all the polygons in your 3d scene. Writting code to create all the polys automaticly therefore seems defying the reason for using displacement mapping to me.

Unless it would be a model/texture tool, only slicing up the selected model currently up for displacement texturing.

But usefull I agree, nothing more painstaing then rendering a (slow) scene all the time to see if the displacement fits.

Maybe some smart subdivision can help to.

LetterRip
Posts: 0
Joined: Thu Mar 25, 2004 7:03 am

Post by LetterRip » Tue Nov 15, 2005 9:54 pm

broken,
Well, there's nothing stopping other coders from having a go - Ton can't do all the work around here!
Yah - it is something I wish I was knowledgable/capable of doing. There is a coder who was going to add tangent space normals to blender, but I guess he hasn't had time to do so for this release. The code by zr is all black magic vodoo to me and I suspect to get such a thing done will require good understanding of zrs incremental subsurf rendering and such.

joeri - I think people are wanting the live displacement type of stuff that you see in zbrush. For doing major transforms (rotating the mesh etc) zbrush drops down some levels of detail while the transform takes place to maintain interactivity.

LetterRip

joeri
Posts: 96
Joined: Fri Jan 10, 2003 6:41 pm
Contact:

Post by joeri » Tue Nov 15, 2005 11:35 pm

LetterRip wrote: joeri - I think people are wanting the live displacement type of stuff that you see in zbrush. For doing major transforms (rotating the mesh etc) zbrush drops down some levels of detail while the transform takes place to maintain interactivity.

LetterRip
Zbrush handles one object and then freezes a finished object.

Blender handles a lot of objects. I understand that it would be usefull as a texture fitting tool that works on a selected object. But I rather not have hundreds of models in my scene that are all subdivided into grids just to see the displacement map (all at once). Maybe nobody is talking about that, but lets not get the "works on my cube" syndrome. Displacement map is to avoid high poly models.

Zbrush also uses some smart subdivision of a model, much polys where they are needed on high detail, and less polys on parts where they are not needed. And again (as far as I know) only on one object at a time.

Having it as a modifier would give the user the choice on which object(s) they want it to show, and (as matt says I think) by adding subdivision modifiers in front of the displacement modifier the user can choose how fine (detailed) the displacement preview should be.

Sounds like an excellent addition to me. So as matt says: who is going to programm this? Zuster?

xenophear
Posts: 0
Joined: Tue Nov 15, 2005 3:21 am
Location: USA, Utah

good stuff

Post by xenophear » Wed Nov 16, 2005 2:26 am

I first just wanted to mention how awesome it is to have replys so quickly on a topic. This makes me feel good about the development of blender.

About the displacement mapping stuff. I've done some programming, but not enough to understand the lingo behind the programming of blender. I say this because I don't understand how it would eat up as much processing power and memory as you're talking about, because don't you have to do a huge subdivided mesh in order to make the displacement show up in any kind of detail during render. I guess what i'm trying to say is that it wouldn't seem to matter wether or not you had it diplayed in real-time, because all the polys are already there.

Fill me in please.

BTW, thanks for all the great thoughts you guys are throwing out.
Everytime my brother shows me something max can do I discover blender does it too, and in many cases much, much better. (not to mention the fact that it is free!)

LetterRip
Posts: 0
Joined: Thu Mar 25, 2004 7:03 am

Post by LetterRip » Wed Nov 16, 2005 3:57 am

joeri,
Zbrush handles one object and then freezes a finished object.
That is not a neccessary limitation though, it just happens to be how they implemented it. If you us a bunch of objects you can virtualize them, use proxys etc.
Maybe nobody is talking about that, but lets not get the "works on my cube" syndrome. Displacement map is to avoid high poly models.
Displacement maps are to avoid high amount of 'physical' geometry by creating virtual and on demand geometry. This is not much different by zrs subdivision method. You only create the geometry as you are rendering it to screen.
Zbrush also uses some smart subdivision of a model, much polys where they are needed on high detail, and less polys on parts where they are not needed. And again (as far as I know) only on one object at a time.
I don't believe that is the case actually regarding their methodology...
Having it as a modifier would give the user the choice on which object(s) they want it to show, and (as matt says I think) by adding subdivision modifiers in front of the displacement modifier the user can choose how fine (detailed) the displacement preview should be.
Yes multiresolution mesh is desireable with the displacement based on the sudivided surface resolution.
Sounds like an excellent addition to me. So as matt says: who is going to programm this? Zuster?
Zr would be the most capable choice and most likely of success if he were iterested and if he could find the free time.

xenophear,
I guess what i'm trying to say is that it wouldn't seem to matter wether or not you had it diplayed in real-time, because all the polys are already there.
When you use the subsurf modifier, the polygons calculated on demand based on the the base geometry.

Compare the memory storage of memorizing a multiplication table of all numbers up to 1,000 times 1,000 versus calculating the answer of multiplying two numbers together when ever you need to.

Similarly, you trade the memory cost of storing a large number of polygons, versus the processor cost of calculating the virtual polygons and then drawing the result, and having to recalculate some of the virtual polygons for each time you make a change to the drawing.

LetterRip

LetterRip
Posts: 0
Joined: Thu Mar 25, 2004 7:03 am

Post by LetterRip » Wed Nov 16, 2005 4:03 am

As an example - my computer is handling 1.5 million polygons ok for virtual subsurf based, but with real polygons at .4 million my computer begins to crawl.

LetterRip

xenophear
Posts: 0
Joined: Tue Nov 15, 2005 3:21 am
Location: USA, Utah

Oh my

Post by xenophear » Wed Nov 16, 2005 4:08 am

I didn't realize that it affected every poly of a sub-surf seperately, but that aside, It would still be great to have a preview of a manualy subdivided mesh in realtime.

This might be overstepping the bounds of this discussion, but an option to have the diplacement map affect, or not affect the subsurf would be handy. like if i had a diplacement map that created really sharp edges with the option on, but with it off have the subsurf smooth the edges.
Everytime my brother shows me something max can do I discover blender does it too, and in many cases much, much better. (not to mention the fact that it is free!)

Zarf
Posts: 46
Joined: Mon Oct 14, 2002 3:54 am

Post by Zarf » Fri Nov 18, 2005 4:45 am

LetterRip wrote:
Maybe nobody is talking about that, but lets not get the "works on my cube" syndrome. Displacement map is to avoid high poly models.
Displacement maps are to avoid high amount of 'physical' geometry by creating virtual and on demand geometry. This is not much different by zrs subdivision method. You only create the geometry as you are rendering it to screen.
Which is one of the reasons that proper displacment mapping can be so memory effecient, you dont have to store a zillion poly's resident in memory.
LetterRip wrote:
Zbrush also uses some smart subdivision of a model, much polys where they are needed on high detail, and less polys on parts where they are not needed. And again (as far as I know) only on one object at a time.
I don't believe that is the case actually regarding their methodology...

From having used Zbrush2 pretty heavily I can see no indication that there is any adaptive subdivision going on for the realtime displacment mapping. It sure would be nice, but its just not there.

As far as blender is concerned I would love to see this possible in the realtime viewport, but I think a bigger issue is fixing the pre-rendered displacment mapping which is not at a really useable state at the moment.

Cheers,
Xarf

osxrules
Posts: 0
Joined: Wed Jun 02, 2004 6:34 pm

Post by osxrules » Sat Nov 19, 2005 3:36 pm

Maya has this functionality too. It's very useful. The preview would show in object mode and disappear in edit mode. It doesn't really slow things down as much as you might expect. Just lower the subdivs and turn off wires.

However, I think Blender's displacements could do with being made more efficient first with say micropolygon displacements. The problem just now is that the surface is subdivided evenly. But if the surface was subdivided more near a crease then you wouldn't need to use as high a subdiv level.

Maybe if it set a crease factor automatically based on the surface angles. So if two faces are flat then they get a crease of 0. If they are at 90 degrees then they get a crease of 0.5 and 180 degrees gets a crease of 1.

I still think the varied levels of subdivision are better because it's more efficient at doing small details on a surface that might have large undetailed areas.

Post Reply