confusion about reference in USD/Solaris

   915   2   1
User Avatar
Member
3 posts
Joined: April 2025
Offline
I was following a simple USD tutorial and i ran into a weird issue that i dont understand.

here is the node grah i build






on the left side i create several meshes and use a stage manager to put them all under /set
so i have a prim structure like this
-set
    -cube
    -grid
    -rubberytoy
after that, i use a USD Rop to save it to "$HIP/geo/set.usd"

then in the middle part of the graph, i use a reference node to reference from "$HIP/geo/set.usd", and i set prim path to /shot/set, and reference prim as /set. this reference node works well, then a add a cam and some transform.
now the stage looks like this:
-shot
    -cam
    -set
        -cube
        -grid
        -rubbertoy
lastly, i use another USD ROP to save it to "$HIP/geo/shot.usd". and i set default prim to /shot.

then i was trying to reference "$HIP/geo/shot.usd" again in a new reference node. the node prompts error with






"In : Could not open asset @_Projects/asset_pipeline/geo/set.usd@ for reference introduced by @c:/Software/Houdini_Projects/asset_pipeline/geo/shot.usd@. (recomposing stage on stage @anon:000000005E76A000:LOP:rootlayer@ )
In : Could not open asset @_Projects/asset_pipeline/geo/set.usd@ for reference introduced by @c:/Software/Houdini_Projects/asset_pipeline/geo/shot.usd@. (instantiating stage on stage @c:/Software/Houdini_Projects/asset_pipeline/geo/shot.usd@ )
Targeted missing explicit primitive: /root/shot"

I am so confused why it's not working. i am basically doing the same reference as i did in the middle of the graph.

here is the houdini file
Edited by richardbao - May 22, 2025 05:19:40

Attachments:
asset_pipeline.hiplc (264.5 KB)
Screenshot 2025-05-22 170432.png (81.3 KB)
Screenshot 2025-05-22 170808.png (126.9 KB)

User Avatar
Member
38 posts
Joined: Sept. 2014
Offline
ok.

so what you have here is a multi root level prims.
a reference is designed to bring in one root and bring it into a path.
a sublayer will allow you to bring in multiple root prims, but you cant change the prim path.

i would suggest for your set , that you make sure all your assets live behind /set, so grid3 lop's primpath should have `/set/grid3` etc.
so ideally in your scenegraph tree, you want to see that you only have one root level prim called `/set`.
once you save this usd out , you can reference in the set usd and nest its prim/primpath under `/shot/set`.


hope that helps.

edit: i added a test scene to show the setup im trying to explain.
Edited by Kym Watts - May 22, 2025 15:43:24

Attachments:
test_shot.hiplc (252.2 KB)

User Avatar
Member
3 posts
Joined: April 2025
Offline
Kym Watts
ok.

so what you have here is a multi root level prims.
a reference is designed to bring in one root and bring it into a path.
a sublayer will allow you to bring in multiple root prims, but you cant change the prim path.

i would suggest for your set , that you make sure all your assets live behind /set, so grid3 lop's primpath should have `/set/grid3` etc.
so ideally in your scenegraph tree, you want to see that you only have one root level prim called `/set`.
once you save this usd out , you can reference in the set usd and nest its prim/primpath under `/shot/set`.


hope that helps.

edit: i added a test scene to show the setup im trying to explain.


Thanks for helping, but i might have some wrong concept about root. i did not really get what you said about multi-root here. in my scene grah/stage graph. there is only one root, which is ”/shot“, i tried to compare your hip file with mine and even try to make them llok the same but still got the same error, that really confuse me. do you min help elaborate it bit more? thank you~
  • Quick Links