BUG: PRMan subdivs

   6568   7   2
User Avatar
Member
398 posts
Joined: July 2005
Offline
I suppose there is a bug in the rib exporter:
make a polygonal grid, leave all by default (10x10), then delete it's central primitive (40) and set geometry to “polygons as subdivision surfaces”.
then, render it twice - once in mantra and in prman. You'll find that in prman result looks like primitives near all the edges were removed.
f = conserve . diffuse . advect . add

fx td @ the mill
User Avatar
Staff
2592 posts
Joined: July 2005
Offline
hoknamahn
I suppose there is a bug in the rib exporter:
make a polygonal grid, leave all by default (10x10), then delete it's central primitive (40) and set geometry to “polygons as subdivision surfaces”.
then, render it twice - once in mantra and in prman. You'll find that in prman result looks like primitives near all the edges were removed.

You probably want to add the “INTEGER” attribute named “interpolateboundary” to your primitives and set the value to 1.

This is probably a guess though.

You can do this with an Attribute Create SOP.
Name: interpolateboundary
Class: Primitive (detail might work)
Type: Integer (NOT FLOAT)
Size: 1
Default: 1
Value: 1
User Avatar
Member
398 posts
Joined: July 2005
Offline
Thanks Mark!
f = conserve . diffuse . advect . add

fx td @ the mill
User Avatar
Member
212 posts
Joined: July 2005
Offline
what you have found is not so much as a bug, rather it is how the geometry is being defined as it is being sent to formated in RIB.

Just be aware that crease weights will do the same thing as the interoplate boundary, however the two attributes will not play well together if declared on the same mesh. Also, if you have mulitple primitive shading groups on one mesh and the entire mesh has the interpolateboundary attribute on it to lock down the open edges you will get an undesired shading result on the seams of the shading groups, that bound in the interior of the mesh. That's a tought one to describe. Basically each primitive group you define is being sent to renderman as its own piece of geometry so with the interpolateboundary being declared everywhere will result in the edges not to be created with any consideration of the boundary primitives.

so, a different way to do the same thing (thanks Mark) is to append a groupSOP, turn on enable for Edges, turn the geometry to be points, turn on unsharded edges. This will give you a point group for all the open edges in the model. Append a attriCreateSOP, assign a point attribute called creaseweight, and set it to something high (100), then append a attribPromoteSOP, now promote the pointAttrib you just made to the proper vertex class.

Now, the “real” boundary edges of your model will be locked down and any internal grouping boudnaries will be rendered “smooth”.
Just be warned that depending on how you modeled around that “edge pt group” the result on the subD edges from the creaseweight style and the interpolateboundary method could result in differently from each other. Not always.. just depends on how lazy you were

neat huh,

Really this would be a lot easier if the viewport allowed you to visualize the subD surface before you start rendering.
User Avatar
Member
99 posts
Joined: Sept. 2006
Offline
hi
is there any way to output renderman subds as geometry file?
thanks
z
User Avatar
Member
4262 posts
Joined: July 2005
Offline
If you are talking about saving out a rib file which just has the SubD geometry in it then you need to use the Archive Generator ROP.
if(coffees<2,round(float),float)
User Avatar
Member
99 posts
Joined: Sept. 2006
Offline
yes thats ok
but I would like to have mesh outside rib with the same tesselation as its done at render time, you know like convert to subs in maya but better with actual rm algorithm
z
User Avatar
Member
4262 posts
Joined: July 2005
Offline
The geometry is only stored within Houdini as polygons (your SOP network). So in Houdini's eyes the base SubD mesh and the polygon mesh are the same thing. All the subdividing happens in the renderer.
if(coffees<2,round(float),float)
  • Quick Links