ZBrushCentral

XSI displacement complete mess

I followed the instructions here:
http://www.pixologic.com/docs/index.php/ZBrush_To_Softimage_XSI_16-Bit_Displacement_Guide#Detailing_the_Model

to create a displacement map for a model of a robe to use in XSI. Nothing extreme here, just some wrinkles and the like. Uv map is fine, geometry is fine. I did the alpha depth factor exactly as described along with everything else. See my pics below as to what i got. The first is an OGL view of the robe as it is modeled (displacement not visible but applied). The second is an initial render (which takes WAY too long, btw, compared to the same subdivision level without the displacement map), using a displacement map exported with Dexporter, just as the link describes. The third uses a displacement map exported using the export button in the alpha section. Please help! The results are so bad i don't know where to begin to solve this. I have ZB 3.1

Thanks,
NJ

Attachments

robe.jpg

worse.jpg

bad2.jpg

looks like something might be up with your UV’s… can you verify that your texture isn’t upside down? in the guide you followed, on one of the images they have v-flip set to “false”, which would export an upside-down displacement map.

also- what are your displacement options set to in XSI? i haven’t read the full guides on the wiki, but it was written for version 5, since then Softimage added Fine displacement instead of parametric or L/D/A.

First, create your displacement with the displacement exporter3, and use DE-LCEK-EAEAEA-R32 az quick code. It will export perfect displacement map.
Second, in XSI, set your displacement following this:

  1. Set your displacement settings to FINE, and View Dependent to ON
  2. Connect your displ. map into displacement port via a change range node. Depending on your model scale, use -2.2 as a new start and 2.2 as new end values respectively. Set the max displacement (and geo approx ppg) to the same as your new end value. It’s a good idea to connect your new start into the max dispalcement, and the new end into new start multiplied by -1 to have an automatic response tio your adjustment.
  3. Render, voila!

All in all, I learned that XSI prefers the R32 type output. It’s floating point, therefore if the Scale is in auto mode in ZBRUSH it will be very precise (32 bit floating point can represent ANYTHING you displaced). Experiment, and post your results here, I’m curious if I helped

the problem though, is that you end up with enormous displacement maps. a 4k 32bit displacement map, for example, is over 150mb. if you’re just rendering out a character on a turntable, this is fine- but if you’re working on a film where there are a lot of displaced objects in the scene, you can potentially find yourself out of memory very quickly.

Personally, I use 32bit displacement when I’m making turntables or just showing off a model, any other time I use a 16bit and enhance the look of it with a normal map.

Jester, thanks for the code. I tried this one before : DE-LBEK-EAEAEA-R32, which was close but not as good. Yours looks better, but it’s still not good enough, really. Check out the tunic edge by the neck where it covers the chest, and especially the cuffs. This area was not touched for the displacement map, but it’s messed up. Also i had edge crease on so the cuff shape was kept when subdivided. My map is 2048, btw.

Pics:

  1. zbrush model at subd 4
  2. XSI with 32 bit displacement map
  3. the hi-poly obj (subdiv4) imported into XSI, no displacement map.

I have a few questions still:

  1. My imported hi poly object rendered a LOT faster than the low poly with the displacement map. Isn’t it supposed to be slower? If this is the case, what’s the point in even doing a displacement map? Is there something wrong here? Why is is so slow? This will be animated, so definitely a problem.
  2. I noticed your code set scale to auto instead of alpha depth in the Dexporter. Loading the obj + map into XSI it still set the range according to the alpha depth factor, but it came out looking a bit better. What’s the difference?
  3. How do you connect the range parameters to the max displacement in the Geo approx ppg? there’s no node available that i can find, or did you do an expression?

Eldee, I can’t see how you get the 16 bit map to work – clearly you can see how it turns out for me. Plus it’s obvious now that the uvs aren’t to blame, and it was flipped ok.

many thanks for your assistance,
NJ

Attachments

zbrush_robe.jpg

32bit.jpg

hipoly_import.jpg

I forgot to tell one more important setting…you have to set subdivision (render) to 1. No upper, no lower. For some reason, XSI makes bad displacement. If I didn’t mention, you have to use FINE setting for diaplacement, and set your min max levels according to your ZBrush level. If you used 4 level of subdivision in ZBrush, it’s completely unnecessary to use 5 or 6 as maximum levels.

I use Auto only, because A,D factor kills somehow the details (at least that was my experience). With Auto it will use what is needed as distance encoded in the image. With Auto I had lot more details in the map. I never used 16 bit displacement, because I had banding all over the surface, but if someone knows a good quick code, I will appreciate it :slight_smile:

As for the speed, it depends on lot of things. It is possible, that reading your map takes a lot of time. Generating the displaced geometry can take time. And XSI is good in managing high polycounts. I myself suggest you to use a relatively high poly object for static rendering enhanced with bump maps. :slight_smile: