Jump to content
richnosworthy

packed geo confusion

Recommended Posts

Hey guys,

sorry this is a basic question, just wanted to understand this bit more clearly.  If i convert say a voronoi fracture - or even just a 'copy to points' to packed geo, what i love is i can then manipulate each piece like a single point.  Say grab a few pieces and move them across or run a noise through the positions to offset the pieces.  But I'm getting confused as to whether this packed geo is represented as a point or a primitive at this level.

When looking at the attributes in attribute spreadsheet it feels like you are dealing with points as the position values are still on points.  Also i can run noise through a point vop to randomise the position (trying the same on a primitive vop doesn't work).  But if i try and select and move some of the pieces i have to be in primitive mode to select them. 

I've been able to work with this fine so far, but just wanted to know more about whats going on under the hood

Heres an attached example though probably not needed

 

packedprims.hiplc

Share this post


Link to post
Share on other sites

I think that makes sense when you think of how Houdini does structure geometry : primitives are made of vertices that refers to points. The "position" of a primitive is the barycentre of its components (and is calculated like that under the hood, in a Prim Wrangle for example, when you use @P for a prim).

A packed primitive is a "fictitious" primitive that contains only one point. So it makes sense that moving the point position moves the prim. And if I remember correctly, the orientation of the primitive is an "intrinsic" attribute of the prim, not the point. That explains why you need to be in Primitive mode for the select tool to orient it, move it etc....

I think you can read more about that here :

But that is just my guess, I don't really have info about the philosophy the dev used when coding that :-) I hope it helps you a bit...

 

Edited by StepbyStepVFX

Share this post


Link to post
Share on other sites

ah that makes sense in terms of what i was seeing happen.  I've only just started looking at intrinsic attributes for packed geometry but thats good to go on.  Seems like packed geo almost has two hierarchies of being moveable - the original packed geo 'points' which you could translate around and then also the intrinsic transform which can do the full orientation and scale aswell.  Still slightly confused but much less confused! :)  Definitely gotta read up on that stuff some more, but i can see why the selection thing was happening now.  Thanks

Share this post


Link to post
Share on other sites

By the way, I read also that intrinsic are attributes that are computed on the fly, not stored on the primitive. Not sure if that’s true for all intrinsic for packed prim : it is clear for position, it can be computed from the unique point of the packed prim, but don’t know how to calculate orientation from just a point without other point attributes.

That’s still obscure for me :-) But it does not prevent to manipulate them and do cool stuff ;-)

Share this post


Link to post
Share on other sites
19 hours ago, StepbyStepVFX said:

By the way, I read also that intrinsic are attributes that are computed on the fly, not stored on the primitive. Not sure if that’s true for all intrinsic for packed prim : it is clear for position, it can be computed from the unique point of the packed prim, but don’t know how to calculate orientation from just a point without other point attributes.

That’s still obscure for me :-) But it does not prevent to manipulate them and do cool stuff ;-)

it's not true for all intrinsics for common ones like bounds, measured(area, perimeter, volume) it's probably true

but definitely not for transform, pivot, unexpandedfilename, geometryid, viewportlod, ... and many others that you simply can't just derive from other data, they need to be stored and passed with the prim, like when you have class in programming, some getter functions return member variable values directly, but some will compute the values on the fly from others

while you can't compute orientation from just a point, there are also no point intrinsics so it's not like Houdini can either, unless you extract it from transform intrinsics of attached primitive for example if it has it

Edited by anim
  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×