Sub-Poly Displacement: What Am I Missing?


#1

Maybe I’m just being dense, but is C4D R9’s sub-poly displacement different in any real world way from displacing a HyperNURBS-subdivided model? I mean, as far as I can determine, “sub-poly displacement” seems like nothing more than a HyperNURBS subdivision list box that has been moved to the Material Editor. What is the difference, in practical terms, between putting a displacement map on a low-poly object with Sub-Poly displacement set to 4, and placing that same low-poly object in a HyperNURBS with render subdivisions set to 4?

I was curious, so I loaded up my standard Zbrush displacement test (Pixolator’s funky head) scene and tried rendering it in the R9 demo both ways. The first image places the low-poly object into a HyperNURBS with 4 subdivisions. The second image has no HyperNURBS, but uses sub-poly displacement in the material, with 4 subdivisions.

Visually, the difference between the renders is negligible. The sub-poly method seems to produce more noise and artifacts, but is also slightly more accurate in certain portions of the object geometry (the top of the ear, for instance). But both differences are so slight that you’d be hard pressed to notice them at all short of pasting one image on top of the other in Photoshop and switching back and forth between the two layers. The difference that DOES matter, at least to me, is render time: the sub-poly method took 23% longer to render than the HyperNURBS method.

So what am I missing? What is the advantage to using sub-poly displacement?

The images:


#2

Oh, one thing that IS a nice addition is the ability to use displacement maps with 50% gray as the base value. That’s handy for folks using Zbrush and C4D together, as it eliminates all the nonesense with filtering seperate positive and negative displacement materials for each object. That’s a very good thing. I’m not sold on sub-poly displacement, though, which seems like little more than a alternate (but not better or easier) way to do something that C4D can already do, at the expense of render time.


#3

In theory there is no big difference in praxis there is. SPD allows for far higher subdivisions then any current PC or Mac would allow with real geometry displacement. With SPD you can use the equivalent of dozens of millions of polygons for displacement which would choke every system with geometry. Also it is much faster in rendering then such highly subdivided geometries.
Cheers
Srek


#4

The main difference is that it’s much less memory-intensive and it’s generally faster. Sure, for the most part you can achieve the same result by subdividing the hell out of a mesh and applying displacement. After that’s (almost) all that SPD is doing.

But R9 also has a couple of SPD modes that are not possible in R8, like the Red/Green and RGB displacement methods. These allow you to displace in different directions according to the color of the map.

R9 also supports Intensity displacement (50% gray is center) which makes it much easier to use with standard displacement maps such as those from ZBrush. In R8 you have to jump through some hoops to get the right result (clamping two maps in opposite directions).

Finally, R9 also supports 16 bit displacement maps which eliminate most of the nasty banding you get with R8’s displacement.

And of course there’s the convenience factor of not having to switch on/off you HN objects depending upon whether you want to render or be able to navigate in the editor.


#5

In my test renders, however, it’s neither faster nor less memory-intensive. RAM useage for both renders was approximately the same. Render time seems to be about 20-25% longer using sub-poly displacement with an equal number of subdivisions.

Yeah–that stuff is all great. But those features seem to be seperate things, in that you can use those options without using sub-poly displacement for rendering. Don’t get me wrong–I’m not knocking all of R9’s new displacement features. Most of them seem very useful, but sub-poly displacement doesn’t.

SPD allows for far higher subdivisions then any current PC or Mac would allow with real geometry displacement.

There’s a big difference between “allowing” a user to do something and making that thing practical to do, though. Render times seem to increase almost exponentially once you get beyond 4 subdivisions in sub-poly displacement. I can’t imagine that I would ever set it higher than 6, even if C4D allows me to do that, because even a simple image like the one above would take a lifetime to render (for reference, I tried a render set at 6, but cancelled it out after 45 minutes had passed and the renderer was only 3/4 done with the prepass).


#6

In the preferences you can set how much memory SPD should use. If you increase the setting SPD will use more memory and become faster and vice versa.
Subdivisons always increase exponentialy so no wonder that you can make it slow. It all depends on how many polys are there to begin with and how much you subdivide them with SPD.
A sure way to endless rendertimes is using HNs with high SPD settings. The resulting calculated subpolys will most likely end up beeing way smaller then a single pixel of the rendered image. Have you by any chance tried to subdivide the mesh you were using with SPD in the same way using HNs? Was it faster or usable at all?
In the end it comes down to enabeling you to achieve what you are looking for and SPD stretches the borders much wider then real subdivisons can.
Cheers
Srek


#7

While you’re checking it out, enable the cel renderer and lines to see how many polys SPD is creating.

Was there anything you were expecting from SPD that R9 isn’t doing, or do you just generally not see the point in SPD?


#8

Cool, I didn’t realize it supported that. Nice!

R9 also supports Intensity displacement (50% gray is center) which makes it much easier to use with standard displacement maps such as those from ZBrush. In R8 you have to jump through some hoops to get the right result (clamping two maps in opposite directions).

I’ll have to tell my art director about that one, I think he will be quite pleased. :slight_smile:


#9

The latter. Or, to put it another way, I don’t see why it’s any better to use SPD than it is to use HyperNURBS to do the same thing, because SPD seems slower, but doesn’t produce an end result that looks any better (or even different). I haven’t tried changing the memory settings in preferences, but since SPD already uses as much RAM as the HyperNURBS method at the default settings, I’m not sure that’s a trade-off I’d want to make, anyway.

Have you by any chance tried to subdivide the mesh you were using with SPD in the same way using HNs? Was it faster or usable at all?
Yes, that’s what my two examples above demonstrate. Both use the exact same mesh. The first one has the mesh in a HyperNURBS with 4 subdivisions, the second one is just the base mesh (no HyperNURBS) with SPD turned on and set to 4 subdivisions. As I said, the HyperNURBS render was faster (13 minutes, vs. 16 minutes), and looks nearly identical.

I haven’t tried putting a SPD material on aa mesh that is already being subdivided by a HyperNURBS.


#10

You could make very accurate maps in Illustrator and/or PhotoShop as well as using real photos. For a complex building you only have to model one window or door etc then make a normalmap of it and apply it hundreds of times on you model. You´ll have a superfast editor that way. Even if there are a lot of buidings involved. To top it of you might bake the hole thing and then apply damage and tear just by painting.
Or have it animated…
I do find SPD fantastic and it opens up for many new ways of modeling.

Cheers
Lennart


#11

because SPD seems slower, but doesn’t produce an end result that looks any better (or even different).

you’re using a displacement map that has a limited resolution, if you get the best result possible with hypernurbs you won’t get a better result with spd

try doing this with hypernurbs


#12

Also, as I understand it, SPD subdivides polygons in a more “intelligent” way than HN does…
I mean, SPD will subdivide more where it is most needed. That’s what I understood, but I may be wrong…


#13

I’m still not understanding the difference. The displacement map in my test is very detailed–it’s about 2070x2070. The only way you could get more displacement detail out of SPD than you could out of a HyperNURBS is if you push the subdivisions higher than a HyperNURBS can handle (i.e. past 6). But that leads to really slow renders–I mean, a 6 subdivision HyperNURBS would be slow enough, and SPD renders even slower. I would never create a displacement object that required that much subdivision detail, because I’d be old and gray before it finished rendering.

try doing this with hypernurbs
Okay. Here’s a plane primitive in a HyperNURBS with 4 subdivisions; the material has Cell Noise in the Displacement channel. It’s not exactly the same texture that you are using, but in terms of displacement quality, it seems pretty much the same to me…

Also, as I understand it, SPD subdivides polygons in a more “intelligent” way than HN does…
I mean, SPD will subdivide more where it is most needed. That’s what I understood, but I may be wrong…
That’s how sub-pixel displacement works, but I was under the impression that R9’s displacement was a straight-up subdivision. Either way, I still can’t understand why it renders slower than HyperNURBS subdivision, or why you’d use it in place of a HyperNURBS given the slower render times.


#14

the r9 spd is for me at least faster than hn, it’s also considerably more memory efficient, i think the memory efficiency is enough (just have a look in the preferences, set it however you want). more than that it has several controls for subdividing. you don’t have to use the rounded mode (which makes it act like hn subdividing). you can control the distribution (try this on a cube to see which direction the subdivision goes in).

 then there are the new controls for displacement in r9.  rgb local, rgb global, grey balanced, red green interpretation.

[edit] 

just as an addition, here’s a little render showing you these settings. a single cube without any subdivisions on itself (this is important as when dealing with editor performance, especially animating where close folds or subdivisions simply get in the way and additional geometry slows you down you want to achieve a result with teh minimum possible) on the left is hn, next to that is spd with round geometry on. then variations of spd without round geometry off.

feel free to try and make the others without spd and without plugins.

if your'e expecting anything more than this, then you'll be dissapointed.

[img]http://www.peranders.com/c4d8/samples/jpg/spd01.jpg[/img]

[/edit]

#15

Mdme_sadie, since you are familiar with XSI and Cinema, just wondering how you rate the SPD from Cinema compared to the SPD of Mental Ray in XSI…speed and quality wise?

Cheers…


#16

hard to say. it really depends on the scene and type of displacement, xsi has a few more options than cinema, both apps quality is good, they both suffer from some artifacting, though i generally find cinema slightly less so, cinema also often seems sharper and in many situations faster than xsi on equivalent mesh densities. the one thing cinema is, is much easier to set up.


#17

Cheers for the quick reply. Intending on getting R9 and Foundations at some stage, so this is good to know…


#18

I’m kind of with you on this Ben. I find that SPD is sometimes faster, but not stop the presses faster. Of course if you find it’s taking longer then perhaps your values are a bit higher than necessary. I generally find SPD a bit faster. Unfortunately displacement in general, either with SPD or divided mesh, is terribly slow when used with hard or area shadows. I’m talking show stoppingly slow here, so you’re pretty much stuck with having to relay on soft shadows which unfortunately produce results which aren’t very accurate. One doesn’t always need accuracy but if you’re going for realism in the shadows then it can be quite a problem. I ran a lot of my displacement heavy files through SPD and never found any compelling advantage in it. There is though the advantage of not having to subdivide your mesh or set up HN hierarchies.


#19

That unfortunately is a myth.


#20

Here is a pic of the SPD feature using the zbrush file on zbrush forums. I captured the viewport with “print screen” on windows xp.