It's the angle threshold where normals are broken between faces, but that only works for vertex normals. Since only one point normal can exist at a single point you can only have smooth normals.
On Dec 6, 2011, at 8:51 AM, Ivan Busquets wrote: > Oh, I forgot to ask... > > In GeoInfo::construct_normals(), what is the threshold argument for? > > > On Tue, Dec 6, 2011 at 8:48 AM, Ivan Busquets <ivanbusqu...@gmail.com> wrote: > Thanks Jonathan. > I'll have another look at construct_normals. I think I gave that a try as > well, but was probably not doing the right thing. > > With regards to some of those Primitive methods being designed for a Mesh > primitive, I did try to use them with a Card, and was still getting nothing > out of them. :( > > Thanks again. I'll give construct_normals a shot and see how it goes. > > Cheers, > Ivan > > > On Tue, Dec 6, 2011 at 8:31 AM, Jonathan Egstad <jegs...@earthlink.net> wrote: > There's an existing method to do this which is pretty fast: > GeoInfo::construct_normals(). I think you need to pre-create the 'N' > attribute and specify the group the attribute is owned by (Group_Points for > your question.) > > The drawback to this method is that is doesn't use any existing normals it > just creates brand new ones. > > Those primitive methods your trying to use likely won't work very well except > for a Mesh primitive as that's the only DDImage Primitive that uses faces > properly. I don't think the Polygon does the right thing. Many of those > methods were created very early on and were not well debugged since Mesh was > the only one to really stress them. > If the Foundry would release a PolyMesh primitive in DDImage that would > likely work much better (hint, hint.) > > -jonathan > > > > My first attempt has been to average the normal vector of all > > faces/primitives of which a point is part of. This is what I'm doing (in > > pseudo-code): > > > > > > for each point { > > N = (0,0,0) > > for each primitive { > > for each vertex in this primitive { > > prim->build_indices(...) > > check if point index == current point > > if it does: add this primitive's normal to N > > } > > } > > divide N by number of primitives that use this point > > normalize N > > } > > > > > > Now, this works, but it's extremely slow, mainly becauseof the rather > > redundant set of loops (looping through all primitives for each point). > > > > In trying to optimize this, I've seen some methods in the Primitive class > > that look like they could help, but I haven't been able to get anything out > > of them. Particularly: > > > > > > Primitive::get_geometric_normal() > > Primitive::get_face_normal() > > > > Can't get anything out of neither of them. They both return a (0,0,0) > > vector. They both take a PointList*. Am I right in assuming I should feed > > them the full PointList* for my object as returned by GeoInfo::point_list() > > ? > > > > Also tried with: > > > > Primitive::get_vertex_faces() > > > > which is supposed to fill in an std::vector of face indices, but I'm always > > getting 0 out of it. > > > > > > Any help on the best approach to compute per point normals would be greatly > > appreciated. Also, how are the Primitive methods mentioned above meant to > > work? It looks like they could be extremely useful in this case, but I must > > be missing a step somewhere. > > > > Thanks, > > Ivan > > _______________________________________________ > > Nuke-dev mailing list > > Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ > > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev > > _______________________________________________ > Nuke-dev mailing list > Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev > > > _______________________________________________ > Nuke-dev mailing list > Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev
_______________________________________________ Nuke-dev mailing list Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev