Hi!
I came across this thread while looking for a similar solution - i.e select edges by angle.
I didn't really see the solution I expected (but maybe I got confused) so I thought I'd whip one up in vex.
Pop the following into an Attribute Wrangle that's set to loop over primitives.
// These could be promoted to parameters
float edge_angle = 30.0;
string group_name = "seams";
float cos_theta = cos(1.0 - radians(edge_angle));
int hedge = primhedge(0, @elemnum);
int start_hedge = hedge;
int s = 0;
// Loop through all half edges on a face and mark any that
// have a greater angle than edge_angle.
do {
int src_vrt = hedge_srcvertex(0, hedge);
vector src_N = normalize(vertexattrib(0, "N", src_vrt, s));
int dst_vrt = hedge_dstvertex(0, hedge);
vector dst_N = normalize(vertexattrib(0, "N", dst_vrt, s));
int equiv_hedge = hedge_nextequiv(0, hedge);
int equiv_src_vrt = hedge_srcvertex(0, equiv_hedge);
vector equiv_src_N = normalize(vertexattrib(0, "N", equiv_src_vrt, s));
int equiv_dst_vrt = hedge_dstvertex(0, equiv_hedge);
vector equiv_dst_N = normalize(vertexattrib(0, "N", equiv_dst_vrt, s));
if (! (dot(src_N, equiv_src_N) > cos_theta &&
dot(dst_N, equiv_dst_N) > cos_theta))
{
int src_pt = hedge_srcpoint(0, hedge);
int dst_pt = hedge_dstpoint(0, hedge);
setedgegroup(0, group_name, src_pt, dst_pt, 1);
}
hedge = hedge_next(0, hedge);
} while (hedge != start_hedge);
Good for combining with uvautoseam and breaking up hard surface models into islands for auto UV-ing.
Hope this helps!
Dan
Render Supervisor, occasional CG supe and general trouble maker @ DNEG