Cycles new microdisplacement testing, discussion and blend sharing

Microdisplacement animation tests:



Youtube compression introduced a lot of flickering artifacts that are NOT there, also the videos are rendered in 720p. The third video (dolly) shows that there are some dicing flickers, but not as extreme as youtube compression shows.

What i have found out so far is:
Always use Both (Bump and True), to get smooth faces of the original. True only will get the original faces of the object flat and will not smooth (even if you smooth the object). I think this is a bug ?

Besides of this as long as the object is smooth (in its shape, or organic), or stationary to the camera, or far away (a mountain) and the displacement features are ABOVE the square value of the micropolygon resolution (VERY IMPORTANT!), you can use even low (above 1) dice rates, although i dont recommend (see animations) something beyond 4.0 (but i have to say i am pleased).

Never displace even with high dice rates (way under 0.5) extreme 90 degree angles to the normal of the face or very sharp edges.
This image is the worst case scenario. Rather try to model such edges, as they WILL flicker a lot even at the lowest dices.

Also if the displacement map has not enough features, it wil NOT subdivide the object faces (like the subdivision modifier with catmull clark), they are smooth shaded, but they remain geometrically flat, see the profile of the sphere. (Would this be a feature to implement ? A checkbox for catmull-clark face interpolation at displacement level ?)

Also an idea would be to face-reorient the micropolys to an interpolated Z normal of the displacement map.
This would do away with the edge flickering and i thing it would solve a lot of higher flickering problems too.

Attachments


dont use MASTER got it? dont use master for testing - it isnt ā€œcompleteā€ yet

use the MICRODISP branch theres already support for catmull-clark and more awesome stuff

Dude, i already told you, 1. i am on osx, and i dont compile, and 2. i always take what is in the master.

Ok, now i see the catmull-clark is in the temp branch with adaptive smoothing, this is the only thing that i got wrong ?
I understand, but i cannot care as long as i dont see it in master, especially under OSX. I have to be subjective only on what i can use.
That it is not complete, is very clear to me (duh). :stuck_out_tongue:

@enilnacs you can not ignore that it isnt ready and it isnt as up to date what is in master.
Doesnt mind if you use a Mac, Apple Android, Linux or Windows device, its just not ready, so its to soon to makeup your mind now of what is available in the current master. So the videoā€™s are nice, but they are not well what it is suposed to be.

On a second note.
Iā€™d be glad if
A) buildbot could get smarther so one could select a branch, requist a compile.
-or-
B) a youtube of how to compile a branch on each OS so that anyone could do it (the wiki article is pretty dated).
Afterall compiling is just instructing a program to build another program based upon readable code.

Also from master it does not support UV map yet.
I have not been able to compile ā€œmicrodisplacementā€ branch on Linux, I get error at 100% with something related to OpenSubdiv.
Yes, builds for Linux and Mac would be nice.

I dont. I only tested what is available for me and put my thoughts into it. Where is the problem ? Also, even if there is a temp branch and i would use it, we are talking about still a WIP. I guess i make some temporary conclusions on what i got. Also i will test the more and more it gets ready. Nothing else.

BTW, yes, it would be nice to get the buildbot to compile important branches. Cause i donā€™t have the time and resources (my machine is used heavily) to do it with each update (this is why the buildbot was made in the first place).

Did you enable OpenSubdiv in the compile options? Afaik, a few people already had that problem when OSD was disabled.

Hi.
The same error occurs when compiling with or without opensubdiv (Really I do not know if Iā€™m doing well from CMake GUI)
I think something similar happened to me when trying to compile with OpenSubdiv from master. (that is, I have not been able to compile with OpenSubdiv in master too)
I have installed opensubdiv from here:

Then Iā€™ll see if I can ask about OpenSubdiv on IRC or the mailing list

yafu you could try the install_deps script (?)

Yes, it is how I installed the dependencies. But for some time now. Since that time Iā€™ve had to manually update only python. Anyway I can compile from ā€œmasterā€ but without opensubdiv.

Here you can grab my Linux build: www.jensverwiebe.de/Blender/blender_microdisplacement_linux64_f357c9d.tar.bz2
Although i still find that feature a bit instable.

Cheers

Thanks jensverwiebe! Itā€™s working on Kubuntu 14.04

double ā€¦

heres a simple test file (ten24 head) for the microdisp branch! :slight_smile:

https://drive.google.com/open?id=0B1mc80hFkBqcUFJpVTJNSU1YOFE

Attachments


I would like to ask you something about the workflow with that displacementā€¦

I recently stumbled upon the fact that displacement textures were available in the texture tab of the Properties panel, but at the same time NOT accessible in the node editor (whereas brush, line, material and world textures are). That means I canā€™t play with nodes and setup a nice texture for my displacement, used in conjunction with the displace modifier. That annoyed me A LOT.

Butā€¦

Thatā€™s only if you use the displacement modifier. Now we can use the displacement socket to have true displacement.
But how is that supposed to work together ?
I mean, we now have the possibility to displaced at object/geometry level with the displacement modifier, AND at material level with the displacement socket (and still the tuning for that is in the geometry tabā€¦)

What is the preferred workflow here ?
What do you think will happen in 2.8x ?
Get rid of the modifier and only use displacement socket ? But what if 2 object should have the same material, but not the same displacement ?

the mesh info pointiness is that suposed to work with this too ? (in the end)

also, i kinda wonder that head how do you get a high detail bump map that fits your geometry ?

Im am speaking here generally: Of course it will work, like in Renderman for ex, or Mantra. Well, we need to separate here 2 things. 1st MicropolyDisplacement ist not ModifierSubdivision. Although both work on the same algo (Catmull-Klark).
Once you subdivide it with the operator this is the base mesh, then the displacement socket is entirely a rendertime subdivision which adds another LOD and divides further. There is no reason why they should not work together (like all other microsubd pipelines work).

Out of experience while working in Renderman or Mantra, the best method is to subdivide as less as possible with the modifier, then add as much detail as you can with micropolys, depending on the LOD you need. Here is the same, will be, once it is ready.

PS: Is there a mac build ? Anyone ? Or expectations when it goes fully to master ?

OK, so in the end, weā€™ll have both modifier and displacement node.
And yet I find it strange to have displacement being done at material levelā€¦ That goes against my intuition somehow.

NudelZ: Cannot use your file: as soon as press F12: crash.

This is for texture style displacement. Very high res. that you cannot do in RAM or with a modifier. BILLIONS of polys. Imagine like Bump textures, only with true displacement (you never model bumps also anyway).

Ok, free time so I hooked into compiling, but the thing wont compile on mac.

Cloned the temp microdisp branch, but it wont make.
xcode (clang), svn and git are up-to-date, cmake default settings, and no gpu, OSX 10.11

[ 19%] Building CXX object intern/cycles/render/CMakeFiles/cycles_render.dir/mesh_subdivision.cpp.o
/Users/master/blender-build/blender/intern/cycles/render/mesh_subdivision.cpp:24:10: fatal error: ā€˜opensubdiv/far/topologyDescriptor.hā€™ file not found
#include <opensubdiv/far/topologyDescriptor.h>

Any tips for Cmake options ? Or is there a .diff that i need to apply, it seems its the OSD system.
The master compiles ok (tested).