Jump to content

Unofficial Displacement Rendering Challenge


eetu

Recommended Posts

hi

thanks for nice feedback

shader is the same as in eetu's file

iam shifting normal direction with point sop expression , you can also comb them if u want

for base displacement-hexagons I am using custom map i made quickly in PS.

It is blended with noise function

As for renders my big inspiration is at the moment stop motion animation from quay brothers

something like this i would like to do in 3d/2d houdini project

z

Link to comment
Share on other sites

Aliasing! You are actually seeing the pixels in your displacement shader plus the discrete displacement steps in the 8bits of info you are working with. You can see this very clearly in the large image. It looks like lots of little building blocks.

You need to increase the resolution of your displacement map.

As well, at these scales and resolution, you will want to make sure that your displacement map is at least 16 bit and that the color range spans the full image range.

Link to comment
Share on other sites

hi

great renders georg

for displacement it is better to use 16bit images and then convert them to rat.

for subtle displ. effects most of the time 8bit is not enough.

but as marc said it is cool like this also

maybe if you manage to get them to twist around axis upward it might look like real crystal growth- remember crystal cave in superman?

z

Link to comment
Share on other sites

great renders

your's look like even smaller structures - very organized - cool.

I guess twisting displacements is not trivial task.

I changed the shader to blend between two normalsets: [0,1,0] for the floor and a noise where the crystals grow.

It's no twisting and the noise needs to be chosen carefully ;)

twist_01_od.jpg

I also rewired the noise mask of the shader, so the noise just affects the ground. I am not sure if this was really necessary.

If I got it right the noise mask originally scales after the noise is added to the displacement.

I tried to recreate the last images with scale in mind - almost impossible - guess it was luck.

Last time even a 10000x10000 map had aliasing artifacts - rat or no rat did made no difference.

The new scale made it almost impossible to get the lovely bricks - thank god there is a quantizeCOP.

rdg_displaced_cleanup_3.hip.tar.gz

Georg

Link to comment
Share on other sites

I tried 4096x4096 but it didn't make much difference - if any

It's not so much the resolution but the bit depth of the image as I mentioned in the previous post. I bet if you inspect the image it will be an 8 bit float image. If it is 16 or 32 bit then inspect closer to see that the color values aren't in 8 bit steps. I bet they are.

Pushing pixels around to such great extents means purposely carving it with values in image maps. Working with 8 bits is like having a transform sop without any floating point values. Very discrete. If it's purposeful and understood, then you can control it even more. Clamping values in to 4 bit steps should get even chunkier with more discrete steps. :) Run the image through a lossy converter. Heavy Jpeg compression followed by heavy posterization filter at 8 bits should do wonders as well. ;)

These images are stunning btw.

Link to comment
Share on other sites

hey

here's one of my attempts, i'm using the AXIS_SSS shader :) i did some CC in photoshop.

displacedsssallko8.th.jpg

i'll upload the hip tmrw if anyone wants to look at it

jason

That looks damn nice! Well done. How are you scattering/displacing the point cloud for the SSS? Do you know about pcwrite() and Mantra's capability to disable hiding? (vm_hidden). Using these two things, you can scatter points on highly displaced surfaces and get the results you expect.

Link to comment
Share on other sites

That looks damn nice! Well done. How are you scattering/displacing the point cloud for the SSS? Do you know about pcwrite() and Mantra's capability to disable hiding? (vm_hidden). Using these two things, you can scatter points on highly displaced surfaces and get the results you expect.

I don't know about them... explain yourself. Or post to a link wherein it is explained :).

P.S. Very nice Jason....er other Jason.

Link to comment
Share on other sites

Jason this is some real cool work man I feel like I am in a salt Mine Thanks for taking me there M waiting for your hip file b.c i want to study how did u make use of that AXIS SSS shader as I have not been able to get it to work properly let see what I learn from you file.

regards,

Zohaib Ahsan

Link to comment
Share on other sites

hey

thx guys!

jason I: i'm not generating point cloud (pcwrite)at all :), it seems to work without one, well as far as my needs go..

i picked up a problem in the shadow map, it seems to be creating a square(the darker area around the sphere in the first renders). for now i'm not worried about it, it kinda makes the image look more interesting!

i've attached the hip, it's a fairly simple scene, prob a bit messy :)

cam angle 2, original rendered colour with a bit of levels in photoshop, bright SESI orange!!

displacedsssv2dz3.th.jpg

jason

displaced_sss.rar

Link to comment
Share on other sites

I don't know about them... explain yourself. Or post to a link wherein it is explained :).

The VEX function pcwrite() lets you write out a point cloud file from inside a shader. This means that you can save out a dense cloud (up to all the shading points if you wish) complete with displacements and any other attributes (like area, irradiance, etc) in a separate shading pass, then use this cloud as input to, say, an SSS shader. This is a GoodThing because you then no longer need to generate these clouds in SOPs, where you'd have to go to some trouble to account for displacements, and where you can't gather irradiance and other shader-time-only quantities.

Search the on-line docs for "pcwrite" -- there's even an example shader to show usage. It can also be found here.

When writing the cloud you want to write one for the entire object, not just the chunk facing camera, so you want to make sure Mantra doesn't hide any back-facing or non-visible parts of your object -- i.e: you want to run your pcwrite() pass for the whole surface. That's what the vm_hidden (or renderer:hidden in the IFD) option is for: if set to "true" (the default), mantra will not compute geometry that's not visible from camera, whereas if set to "false", it will run everywhere. So, when doing a pcwrite() pass on some object, you want to set this option to "false".

Brief documentation on vm_hidden can be found in the "Mantra 9.1 rendering properties" page of the on-line help, or here.

HTH.

P.S: The management takes no responsibility for damages caused from using AXYZ:SSS in Houdini 9.0 and above, as it was written for Houdini8.0 and has not been adapted for v9.x. :) Instead, we recommend you use the H9.x versions of the same functions, which are now bundled in the distribution (they've been reincarnated as the VOPs "SSS Single" and "SSS Multi").

P.P.S: Using AXYZ:SSS (or the H9-bundled equivalent) without a pointcloud, results in single-scattering only, which in some cases (such as in Jason's image) can be just-fine-thank-you-very-much. :)

The H9 equivalent would be using the "SSS Single" VOP, and ignoring the "SSS Multi" VOP.

P.P.P.S: er... that's "AXYZ", not "AXIS" :lol:

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...