[Sidefx-houdini-list] new points at center of poly faces

Ivan DeWolf ivan at martian-labs.com
Wed Mar 30 20:12:34 EDT 2011


if it's polys, and you don't need normals or scale, I still like  
divide SOP set to compute dual...


Quoting "Rangi Sutton" <rangi at kanuka.com.au>:

> Convert to circle.. That'd be the ticket! scale and normals for free is nice
> touch. Well... works for polys. It seems to make a prim circle per point for
> nurbs primitives, and doesn't touch volume primitives.
>
> I'd stand by my original add/copy sop pair as simple, works for most stuff
> setup. I know there's a copy sop geometry creation overhead... it's a single
> point being copied though, which maybe isn't such a big bit of stuff
> compared to the unavoidable overhead of calculating the centroid of a prim?
>
> Anyway... tests would show how effective various optimisations are. I've
> been using that technique to create the points to hold the matrix to avoid
> geometry regeneration on the high poly stuff.. that's the difference between
> sluggishly dragging play-bar around and quicker-en-real-time playback.
>
> See... sidefx could make the sop, but then we wouldn't have anything to chat
> about!
>
> Now.. any other cat's to skin?
>
> r.
>
>
>
> On 31 March 2011 06:02, Robert Kelly <isstuff at gmail.com> wrote:
>
>> I think it may be the best trick ether way. I had used some of the
>> other methods in the past so when i stumbled onto it I knew it was a
>> winner.
>>
>> On 30 March 2011 09:32, Alvaro Castaneda <varomix at gmail.com> wrote:
>> > great trick Robert, that works great, also the centroid SOP Sebastian
>> posted
>> > works great but it looses the normals, so If you want normals Robert's
>> trick
>> > is the best right now
>> >
>> > Thanks
>> >
>> >
>> >  *.:varomix:.*
>> > MIX Studio
>> > 3D Artist/Generalist TD
>> > www.varomix.net
>> >
>> >
>> > On Wed, Mar 30, 2011 at 9:02 AM, Robert Kelly <isstuff at gmail.com> wrote:
>> >
>> >> Correct me if this doesn't  work for you but the best trick I know is
>> the
>> >> convert sop And convert to circles! You get a point per primitive with a
>> >> normal and some scale data if you dig in to the circles with python.
>> >>
>> >> Sent from my tiny puter.
>> >>
>> >> On 2011-03-30, at 2:16 AM, Szymon Kapeniak <szymon.kapeniak at gmail.com>
>> >> wrote:
>> >>
>> >> > Also prim_attribute() evaluating "P" at s=t=.5 will return centroid of
>> a
>> >> quad primitive, so this can be handled in pure vex. The only catch is
>> that
>> >> centroid for a triangle is at 0.3 not 0.5, and for ngons > 4 is at
>> t=1.0...
>> >> ;)
>> >> >
>> >> > skk.
>> >> >
>> >> > Dnia 30 mar 2011 o godz. 09:20 sgustafso at gmail.com napisał(a):
>> >> >
>> >> >>
>> >> >> One approach that's reasonably efficient:
>> >> >>
>> >> >> Create a vector primitive attribute called 'center' with values
>> >> $CEX,$CEY,$CEZ. When creating primitive attribs, the $CE[XYZ] vars refer
>> to
>> >> the primitive centroid.
>> >> >> Use a line sop with npoints set to nprims() to create your points,
>> then
>> >> delete the line prim but keep the points. This can be slightly more
>> >> efficient that going through a copy sop (especially a copy sop with
>> >> transforms!) for high point counts if you just need to create a bunch of
>> >> points and move them later. ymmv.
>> >> >> Use a primattrib vop inside of a vopsop to apply the 'center'
>> attribute
>> >> to the points. primattrib expects a geometry file, but you can feed it
>> an op
>> >> path. I usually set the oppath with an expression like:
>> >> "op:`oppwf()`/../SOURCE_GEOM[$FF]"
>> >> >>
>> >> >> That should do it. So brief recap: attribcreate to get an attrib
>> holding
>> >> the centroid, whatever method you want to instantiate a bunch of points
>> to
>> >> move, then vopsop to set the positions.
>> >> >>
>> >> >> Another trick for getting the centroids is to use attrib promotions.
>> >> I.e,. create point attrib 'pos' set to $T[XYZ], then promote to a
>> primitive
>> >> attrib with the mode set to average, leaving you with an attrib holding
>> the
>> >> centroids. I've used this in the past before I realized that $CE[XYZ]
>> would
>> >> work, and it seemed to scale pretty well.
>> >> >>
>> >> >> At Wed, 30 Mar 2011 17:33:36 +1000,
>> >> >> Rangi Sutton wrote:
>> >> >>>
>> >> >>> add sop.. copy sop with nprims("../PRIM_SRC") in the num copies, and
>> in
>> >> >>> translates use prim("../PRIM_SRC", $CY, "P", 0).
>> >> >>>
>> >> >>> Make an asset. Forget about it. Maybe python does this better.
>> >> >>>
>> >> >>> Actually, I think there's an asset in that toolbox that was posted
>> the
>> >> other
>> >> >>> day that does this.
>> >> >>>
>> >> >>> scaling prims to zero does work though.. can be a problem if you
>> have
>> >> >>> identical prims.. since they'll fuse.
>> >> >>>
>> >> >>> Beers,
>> >> >>> r.
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>> On 30 March 2011 17:24, Miles Green <Miles.Green at al.com.au> wrote:
>> >> >>>
>> >> >>>> Hi,
>> >> >>>> I need to efficiently get a new point at the center of all my
>> current
>> >> poly
>> >> >>>> faces..
>> >> >>>>
>> >> >>>> i'm sure there are multiple ways to do this, but my current method
>> of
>> >> :
>> >> >>>>
>> >> >>>> [input polygons]-->[facet(uniquepoints]->[primitive (scale to
>> >> 0.001)]->
>> >> >>>> [fuse]
>> >> >>>>
>> >> >>>> is a little slow..
>> >> >>>>
>> >> >>>> any other suggestions appreciated
>>
>
> --
> _______________________________________________
> Sidefx-houdini-list mailing list
> Sidefx-houdini-list at sidefx.com
> https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list
>



_______________________________________________________
Perfection is achieved when nothing else can be removed
-Yvon Chouinard

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.



More information about the Sidefx-houdini-list mailing list