transforming static alembic geometry from matrix

   1869   4   1
User Avatar
Member
22 posts
Joined: Dec. 2016
Offline
Morning,

Im fairly new to houdini, so please forgive the narrow nomenclature used to explain the issue.

We have a set dressing workflow that im trying to get working in houdini, so we do not need to save out per shot alembic for static geometry.
The data set is saved into a json file, with each asset, its pipe meta data, more importantly, the path to the static alembic, and a maya (Y-up) worldspace translation matrix. We also store the bbox, if that is useful to know.

What im not sure about is the best way to convert this matrix across and what node/ network i need to setup to translate the transform via this data set.

If some one can point me in the right direction would be great.


Cheers
Kym
User Avatar
Member
22 posts
Joined: Dec. 2016
Offline
So i figured this out.
The geometry folder can take the worldspace transform.

Next question, On an efficiency side, if i have 1 alembic , that needs to be in 6 different locations.
in stead of making a geometry group per alembic, to transform it, do i gain better performance from converting the 6 ws locations to points and instancing the alembic file to it, Is there another way that i could attack the problem?

IS there an example or document that would point me the correct direction i would want to use in turns of set/ location dressing workflow?

Cheers
Kym
User Avatar
Member
8768 posts
Joined: July 2007
Offline
If you store your layout transform data in .csv file you can directly use Table Import SOP to import them as points with all necessary attributes convert them to instancing attribs and just copy your alembics onto them

Otherwise you can use custom Python SOP to import your .json as points with attribs and do the same

Or you can also export locators from Maya, bring them to Houdini as points using Alembic SOP, convert transforms to instancing attribs and cooy on those

I wouldn't use transform parameters in Geo Objects, it's not scalable, procedural not efficient
Edited by tamte - Feb. 3, 2020 21:45:16
Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Member
36 posts
Joined: Sept. 2014
Offline
Hi Tomas,

Thanks for your help,

I ended out going down the python sop path to create a point cloud with information.
I created a parm per point with an interger that i could map the alembic with switch and copy stamp.
But reading about this now ill probably refactor to use a foreach node.

Cheers
Kym
User Avatar
Member
17 posts
Joined: Aug. 2012
Offline
Hey Kym,

I just did something quite similar (and also got awesome help from Tomas - thanks again ).
I also used the Python SOP method and put my final transform matrix into the “transform” point attribute.

One more way you can go about spreading your instances is using a CopyToPoints SOP, enabling pack and instance (optional) and using a piece attribute as an asset identifier.
You can set a piece attribute in your Python SOP when creating the point cloud and also add it to your loaded Alembics.
Then you merge all loaded assets into one stream and connect all points and all assets to one CopyToPoints SOP.

Take care,
Dziga
Edited by dzigakaiser - Feb. 19, 2020 06:48:41
freelance matte painter & environment concept artist
  • Quick Links