Instance Alembics/Geo by referencing/sublayering

   3555   8   1
User Avatar
Member
101 posts
Joined: Dec. 2012
Offline
I have a pointcloud and bunch of alembic files on disc, which I'm instancing to write an usd file. However I'm using a "sopimport" node to get all the chunks and then feeding that to a instance node which has the pointcloud with all the positions.

How would I go with a more organized and "usd" way of things, by say importing the chunks as a reference? In my mind, that should be a feature already there, but I just didn't figure out how put it together



Attachments:
output.png (21.6 KB)

User Avatar
Staff
4199 posts
Joined: Sept. 2007
Online
The Alembic file format plugin for USD ships with Solaris; try using a sublayer or reference lop, point it at your .abc file, and use those primitives as prototypes.
I'm o.d.d.
User Avatar
Member
101 posts
Joined: Dec. 2012
Offline
Hi goldleaf, but you are talking about dropping a reference lop to bring in one alembic. but I want to bring in a gazillion alembic files and assign it to instance points.
User Avatar
Member
8041 posts
Joined: Sept. 2011
Offline
schiho
Hi goldleaf, but you are talking about dropping a reference lop to bring in one alembic. but I want to bring in a gazillion alembic files and assign it to instance points.

use a gazillion reference lops to bring in a gazillion alembics. If each alembic has one root and is referenced to a unique prim, then they can be used as prototypes with the instancer.
User Avatar
Member
128 posts
Joined: Feb. 2021
Offline
Instancing aside, if you want to bring in a gazillion files with minimal effort, you can always drag drop them into a stagemanager node. Then you have a parent prim with the gazillion abc's to instance or do whatever you want with.
Andreas Weidman
VFX Supervisor - Dupe VFX
www.dupevfx.com
User Avatar
Member
101 posts
Joined: Dec. 2012
Offline
@jsmack can you provide an example? If I place two times the same reference, it is going to store the two same alembics two times in memory right? But I would like to use the same reference just with multiple transforms (instancing).

@AndreasWeidman
Thanks for the StageManager tip! Do you mind sharing an example of how to go after the stagemanager? Like how would you pass that to an instancer node as prototypes? Wouldn't you need a name attribute?


Where I'm going with this, is similarly to the obj node "instancer" where you can specify an "@instancepath" attribute.

Attachments:
pigheadsHou.png (22.8 KB)
pigheadsUsd.png (81.2 KB)

User Avatar
Member
8041 posts
Joined: Sept. 2011
Offline
schiho
@jsmack can you provide an example? If I place two times the same reference, it is going to store the two same alembics two times in memory right? But I would like to use the same reference just with multiple transforms (instancing).

Like Andreas said, you do the instancing with an instancer. Only reference each alembic file once, either with a reference lop, or with the stage manager or other device. These are your prototypes. Feed them into the second input of the instancer LOP and set it to Instance primitives. The prototype can be selected randomly or from attributes on the instance points.

Attachments:
instancer_ref.png (62.1 KB)
point_instancer_proto_example.hip (310.1 KB)

User Avatar
Member
101 posts
Joined: Dec. 2012
Offline
@jsmack Thanks a lot! That's really useful! One last question regarding that, is there an easy way of instancing a single reference and merging it? Basically If an artist was to take a chair and place it multiple times?
User Avatar
Member
8041 posts
Joined: Sept. 2011
Offline
On the reference lop, there's a checkbox for 'instanceable'. This lets you reference in the same asset multiple times and it will share the memory (theoretically)
  • Quick Links