Jump to content

Real displacement in Houdini


Recommended Posts

Does anyone have experience in doing real displacement in Houdini like that:

 

https://www.artstation.com/artwork/real-displacement-textures

 

In a certain Sidefx video about displacement they recommend you to build all your details into the model and just use bump or normal maps for finer details in order to get a good performance on render time and avoid memory overhead, but there are some cases that most of the model like a rock or a rocky floor could be a low poly object and all it's details defined in a real displacement map, I wonder what would be the pros and cons when modeling or not a surface with those displacements according to people experiences.

It would be really nice to hear some thoughts or again, experiences with it can anyone share?

 

Thanks.

Edited by Mzigaib
Link to comment
Share on other sites

Guest mantragora

Ahhh, displacements...

 

My first topic on this forum was about displacement.

4.jpg

 

 

In a certain Sidefx video about displacement they recommend you to build all your details into the model and just use bump or normal maps for finer details in order to get a good performance on render time and avoid memory overhead, but there are some cases that most of the model like a rock or a rocky floor could be a low poly object and all it's details defined in a real displacement map, I wonder what would be the pros and cons when modeling or not a surface with those displacements according to people experiences.

 

That's pretty standard way of adding detail to real-time models. Below is a low poly model without:

dsytlsvprw91xbpzg.jpg

 

and with normal map added:

r72h58nacupma47fg.jpg?size_id=a

5y9uxs6dlhh5op7fg.jpg?size_id=a

Edited by fântastîque Mântragorîè
Link to comment
Share on other sites

When we talk about normal maps. What program you used to create these? I tried with 3dCoat and I always have some seams that I can not rid of. Are these tangent normal maps? 

Or this is MODO render?

 

ONTOPIC

 

Well I prefer combination of displacement maps and bump/normal maps. There is no need to have fine details in displacement map, that definitely can save you a lot RAM, as sometimes you need to subdivide like crazy to have these small details displayed nicely with displacement maps.

Edited by SreckoM
Link to comment
Share on other sites

that's just normal displacement that mantra renders out of the box, for example in Mantra Surface, you just need to have nice displacement map to get such detail

 

I am aware of regular displacement that you can use with mantra but what I meant by real displacement is when you can model most of your geometry details, like in the example that I've posted only with displacement maps and not only black/white up/down displacement but with something more complex like 3D displacement which it seems what they are using in the linked example and it works really well but what are the cost of it in terms of memory, efficiency and render time? I would like to hear opinions about it.

 

And yes Mantragora, that was the kind example that I was referring to but let's expand this let's say that you entire model is a gigantic cave that you are going to see all the details up close in most shots, what would be more efficient? Use a low poly mesh and sculpt all the rocky and fine details through displacement or bake most of the visible details in the geometry and use bump maps just on the finer details? When let the heavy lifting in render time and when do it before? each one has it's pros and cons, that is what I would like to hear about.

 

Sorry to repeat myself but I hope that I could make sense.

Link to comment
Share on other sites

Guest mantragora

When we talk about normal maps. What program you used to create these? I tried with 3dCoat and I always have some seams that I can not rid of. Are these tangent normal maps? 

Or this is MODO render?

...

1. Tangent.

2. Zbrush + NDO.

3. Marmoset Toolbag. 

 

And yes Mantragora, that was the kind example that I was referring to but let's expand this let's say that you entire model is a gigantic cave that you are going to see all the details up close in most shots, what would be more efficient? Use a low poly mesh and sculpt all the rocky and fine details through displacement or bake most of the visible details in the geometry and use bump maps just on the finer details? When let the heavy lifting in render time and when do it before? each one has it's pros and cons, that is what I would like to hear about.

 

Sorry to repeat myself but I hope that I could make sense.

For me advantages of modeling full silhouette and using normals to small details are pretty clear. If you model your model right, you can reuse it in realtime engine too. And since you have silhouette of the model, you will not notice that something is not sticking out in those places where you used normals maps. But I also tend to deform geometry a little if small detail deformation is in places like bending (you can see it on this door handle example where the geometry is waving a little). To find difference between displaced and normal mapped model is pretty hard that way.

There is a trend that started with Alien Isolation, that instead of using normals maps to modify normals of the whole model, you use vertex normals and more geometry to actually have the geometry there, and then fill in small parts.

Oh, and there is VR, and it broke normal maps, so you need to add more geometry otherwise it will look like shit.

I would go full displacement only for fractals.

BTW.

YAY, 1000 posts! Are there any awards for spaming so many posts and not getting caught by admins? :D

Edited by fântastîque Mântragorîè
  • Like 1
Link to comment
Share on other sites

...

I am aware of regular displacement that you can use with mantra but what I meant by real displacement is when you can model most of your geometry details, like in the example that I've posted only with displacement maps and not only black/white up/down displacement but with something more complex like 3D displacement which it seems what they are using in the linked example and it works really well but what are the cost of it in terms of memory, efficiency and render time? I would like to hear opinions about it.

...

if you are talking about vector displacement, then you would need to make your own in the shader or search the forums, I bet there is a few of them there

but the link you posted looks like just normal displacement, if you look closely, you see stretching in the areas where the overhangs would be and the illusion of overhangs is created thanks to diffuse which has shadowing baked in

(on top of that it would be tricky to create vector diaplacement from scan as for that you usually have to have matching topology or matching UV low res and hi res geo, which you don't from scans)

Link to comment
Share on other sites

danylyon, shared some tangent vector displacement code for zbrush.
http://www.sidefx.com/index.php?option=com_forum&Itemid=172&page=viewtopic&t=26623&highlight=&sid=2653ea8919dca43945896551cdeb6657

 

i have no idea how it works i just put his code on the shader, seems to be faster than the regular scalar displacement.
one thing to notice is scale of the object is important, same as in maya.

Link to comment
Share on other sites

Not only can you do vector displacement, but you can "redice" to get non-linear/curved displacements.  You could displace a plane into a mushroom, for example.

 

haha

I thought at first you meant plane as in an AIRplane...

no more forums for me tonight....

Link to comment
Share on other sites

Why would you bake it if you can use displacement map? As I said I do not see what is problem with using both, displacement for larger and mid details and bump/normal maps for smaller fine details?

I am aware of that but there are specific cases, imagine that are going to be shots from closeups to medium camera distances and imagine also that you have a huge real world measured geometry when you use displacements as far as I know mantra will generate all those extra geometry in render time which is awesome but it can be very memory and time consuming comparing sometimes to geometry with baked displacement.

Being said that having displacements to model details in geometry is not always an option IMHO, so yeah you can use it for most of the visible details and bump for finer details but that doesn't always work so I think there are cases where to bake all or most of the details on the geometry is a better option either way I think that it is really nice to hear other people experiences with this kind of issue.

 

yes, mantra can do complex displacement beyond just "pushing along normals", tho i don't think the standard materials support vector displacement.

There is an option for a XYZ displacement but I couldn't make it work correctly I couldn't figure out if the problem was in the shader or the maps.

 

What can I say.... THIS IS TOO AWESOME FOR MY OWN BRAIN! :D

Link to comment
Share on other sites

Geometry is geometry. Whether modelled or displaced. Same thing to Mantra when it needs to shade the geometry.

 

If you model the geometry to high detail or you use displacement maps to capture that detail and apply at render time, Mantra is rendering geometry.

 

Displaced geometry by Mantra has an overhead in time and memory when it is constructing and coving the additional geometry for every frame it renders. For hero objects or those near the camera, this is more than acceptable and Mantra needs no additional babysitting like other render engines. Shading Quality <shadingquality> determines how fine to dice the geometry during the displacement geometry generation. That's it. There's also displace space but that is to handle the classic displaced ocean surface to the horizon.

 

You can use Houdini15's Bake ROP to now procedurally generate several texture maps from high res to lo res geometry so add that to the list from the earlier post. Only missing the curvature map in the bake. Everything else is there.

Modelled high res geometry carries a persistent overhead on disk and when loading in to Mantra. These days with gigabytes or terabytes of geometry on disk for shots, many are opting for baking displacements in to high res 4k^2 up to 12k^2 or higher maps instead of modelling super-high res geometry (directly rendering Z-Brush sculpts for example). Houdini15 has the Bake SOP so you again choose how you want things to be set up. Look Dev has never had so many pipeline friendly options in Houdini.

 

Use the render property true displace set to 0 to switch from displacements to bumping for efficiency.

When the objects are further away from the camera, you can still have your shader set displacements on but you can add a render property "True Displace" <truedisplace> set to 0 in the Material Style Sheet (H15) to the objects/primitives further away without touching any of the geometry directly with a shop_material override. This will automatically disable displacements and use bumping as well. Since Style sheets can target groups, intrinsic data, any attributes (detail, primitive, point, vertex) then you can set these up on the packed primitives or on the geometry directly and set it automatically. Actually you could create a CVEX shader that takes the position from camera and sets truedisplace based on P.z (distance from camera) and bind that as a material override from SHOP in the Material Style Sheet (H15).

 

H15 has native support for tangent space (local/world) and normal space displace/bump maps along with support for UDIM's. You choose. Houdini15's new shaders support displacements beyond the push along normals now.

 

Polygon size in the camera view does matter.

Ultimately to get things as efficient as possible, a rough guide is to have evenly sized polygons from camera to horizon that roughly approximates the size of the buckets set in the Mantra ROP. If you can get Mantra to render your polygons without any refinement and remove/disable subdivisions and displacements for mid to background geometry then you will be rendering as efficiently as possible. This goes for most of the main render engines actually.

 

Geometry refinement in Mantra is critical. If the faces are too large, Mantra needs to cut it up to a renderable size. If the polygons are too small, then mantra just has to deal with more geometry to sample against arguably for little effect. Especially if much of that detail can be captured in MIPMAP texture maps. Again almost all render engines benefit from this sort of optimized workflow. Or just crap in crap out is fine too and live with the memory overhead.

 

 

Jason is quite knowledgable on this subject: optimize Mantra for rendering large scenes.

  • Like 4
Link to comment
Share on other sites

And now to wind all the way back to the very first post.

 

Yes.

 

Houdini15 has several improvements to help the Look Dev artists. To create interesting looks, we have created many tillable textures that are Principled Shader friendly to do tangent space displacements that support concave and convex detail. Here's a couple renders showing this out of box with principled shader:

 

post-371-0-93577500-1445003586_thumb.jpg
 
post-371-0-08314000-1445003602_thumb.jpg
 
We have material packs available here for download:
Edited by old school
Link to comment
Share on other sites

Ok, I think I found the topic that explains that technique, if anyone is interested in knowing more=> http://www.polycount.com/forum/showthread.php?t=154664

Other software limited in terms of normals editing; Houdini limited in terms of beveling edges. That's how I explain myself about this neoteric Custom Normals thing and why houdinists used it so sparingly. To overpower insane beveling, for example. I didn't know that it can be so nice on hard surface models, comparable with normals exported from good nurbs meshers.

 

It is very doable in Houdini procedurally, with any model, using ancient nodes. The main limitation, in my opinion, is beveling, creating actual chamfers between two surfaces. Smooth SOP can help to reduce amount of hand work required, but I believe no one will just leave all this triangles and strange spikes produced by beveling. Updated scene with simple and procedural edge collapsing step, although still depends on bevel quality.

 

M9wtubK.gif

 

custom_normals.hipnc

Edited by f1480187
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...