fxjungla Posted October 29, 2019 Share Posted October 29, 2019 I am exporting some geometry from maya as alembic, these are several individual pieces each with unique names and transforms. In Houdini the alembic importer brings all of them together, I wanna find an efficient way to use each one of these pieces into a copy to points as individual pieces.... I was looking into the path string to set it up but I must admit I have been working in other CG packages more than Houdini for the past few years, so any pointers would help. Thanks! Quote Link to comment Share on other sites More sharing options...
Feather Posted October 30, 2019 Share Posted October 30, 2019 Have you tried using alembic archive? Quote Link to comment Share on other sites More sharing options...
fxjungla Posted October 30, 2019 Author Share Posted October 30, 2019 thanks for answering, I think I explained my issue a bit incorrectly,... I am looking at using the path of these objects to set an index value on the side of the particles so I can instance them without relying in a copy Stamp which is what I currently have... I have say 200 objects and they all are named piece(insert#) I wanna be able to set a rand value on the particle that would get added to the string piece and thus determining the instance that should go to that particle. the alembic archive doesn't really do this it just spreads all these pieces into their own object within the archive which isn't really what I am after... Quote Link to comment Share on other sites More sharing options...
toadstorm Posted October 30, 2019 Share Posted October 30, 2019 A hacky way to do this would be to load up your packed Alembics so you have 200 packed Alembic primitives or whatever, then blast all but piece`$F` over the course of 200 frames, then unpack and write this out as a sequence, so that you have 200 frames written out with a single piece in each frame. Then load this back in as a packed disk sequence. You could then copy that packed disk sequence to each instance point, and then use `setprimintrinsic()` to set the `index` primitive intrinsic of each copy to be whatever frame/piece you want. 2 Quote Link to comment Share on other sites More sharing options...
Skybar Posted October 31, 2019 Share Posted October 31, 2019 Something like this? Kinda straightforward: copystuff.hip 1 Quote Link to comment Share on other sites More sharing options...
fxjungla Posted October 31, 2019 Author Share Posted October 31, 2019 thanks guys! these 2 are great ideas to go off from. toadstorm I am building the sequence one right now just to see how it feels in workflow. Skybar the scene is awesome, thank you, I have 2 questions, 1) what is the blast node inside the loop doing? it has the spare input connection also that I wonder what it is for... 2) this is more a Houdini overall question, I haven't gotten into the compile nodes, do they help in performance? Thank you all for being so helpful Quote Link to comment Share on other sites More sharing options...
Skybar Posted October 31, 2019 Share Posted October 31, 2019 (edited) 3 hours ago, fxjungla said: thanks guys! these 2 are great ideas to go off from. toadstorm I am building the sequence one right now just to see how it feels in workflow. Skybar the scene is awesome, thank you, I have 2 questions, 1) what is the blast node inside the loop doing? it has the spare input connection also that I wonder what it is for... 2) this is more a Houdini overall question, I haven't gotten into the compile nodes, do they help in performance? Thank you all for being so helpful 1. The blast node is just grabbing a point attribute and blasting away all points that doesnt have that number. So if my point has choose = 1, it will keep the packed geo that has ptnum =1. The spare input is necessary when you need to reference another node in a compiled block. You cant reference other nodes through expressions like you normally would, but a spare input acts like another input to the node. So in this case I can fetch a point attribute from another node without breaking the compile. 2. Compiled blocks especially helps with foreach blocks, because on the last node of the foreach you can check the checkbox ”multithread when compiled” - which makes the whole thing multithreaded. Not all nodes are able to be compiled, and sometimes you have to do things like the spare input-thing. But especially for cases like this its blazing fast for copystamping stuff. Theres a masterclass for compiled blocks that explains it pretty good i think if you search for it! Sorry im on the phone but hopefully it makes sense! Edited October 31, 2019 by Skybar Quote Link to comment Share on other sites More sharing options...
fxjungla Posted October 31, 2019 Author Share Posted October 31, 2019 Thank you for the info! it all made complete sense, looking for the compile masterclass now. Quote Link to comment Share on other sites More sharing options...
nuki Posted November 2, 2019 Share Posted November 2, 2019 On 10/31/2019 at 11:01 PM, fxjungla said: Thank you for the info! it all made complete sense, looking for the compile masterclass now. I think its this one: Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.