Jump to content

using arnold ass archive, procedural. ass in copy sop?


Recommended Posts

Hi guys!

I thought that arnold.asstoc will read ass in GEO SOP, but its aint working ("Takes an .ass file and looks for an associated .asstoc file. If found it will read the .asstoc and generate 2 points"). Looks like arnold procedural is reading ass arhive.

But I cant use arnold procedural  in copy sop  :(

Any Ideas?

Edited by Anatol
Link to comment
Share on other sites

Anatol you can write python function that will get transformation from your nodes and generate on the obj level series of arnold procedural.

 

I think it is single solution that we have now HTOA.

Link to comment
Share on other sites

oh. I see. Looking forward for improoved arnold. even maya allows to use standinds as instance, and simple as 123, or mantra point procidural, for example.

now it's not convinient, not like ))

Edited by Anatol
Link to comment
Share on other sites

  • 2 months later...

Hi,

Arnold can use Houdini's Instance OBJ node. At first you have to render Arnold Scene Source (ASS) with Arnold ROP node. Don't forget to include dimensions information (.asstoc) and shaders.

 

Then in Instance node import points which will represent instances position, scale and orientation (P, orient, pscale attributes). In instance object turn on point instancing and as Instance Object set Arnold Procedural OBJ node which will point to ASS rendered to disk. In Procedural parameters check Load At Init checkbox.

  • Like 3
Link to comment
Share on other sites

Hi,

I'm using it actually, you have to use your scatter in an Instancer, then instanciate Arnold Procedurals on the points. Then the bounding box will appears in the viewport and the geometry in the Render View.

If you really want to use a Copy Sop, use an Alembic version for a visual with a "instance" attribut corresponding to the Arnold Procedural path of the same object.
(for example, use "toy.abc" to scatter on a plane with a Copy Sop to see the result, with an attribut instance="/obj/arnoldProceduralToy")

Hope it will help.

Alkyum


EDIT : Same than Juraj Tomori ! :)

Edited by Alkyum
  • Like 2
Link to comment
Share on other sites

  • 9 months later...

Hi all, just wanted to bump this thread in case there was any new information about HtoA instancing. Here's everything I've discovered so far in terms of instancing workflows, but it's lacking a lot of the lightness and flexibility of Mantra instancing workflows. I'll just bullet point out everything I know, hopefully it helps someone out and hopefully someone can point me to maybe doing this better.

* First of all no matter what, you'll need to add Instance attributes to your /obj/ level node containing your instance points. Note that making an Instance object is no different than making a Geometry object and later adding Instance attributes in the Edit Parameter Interface window.

* Must be set to Fast Point Instancing. Full Point works but will break your shading calculations in fun ways that you might not at first assume were issues with the instancing itself. I had a scene where I'd accidentally used Full Point and it took me 2hrs to figure out what was going wrong with the look of my trees.

* Inside that Geo/Instance node, you can use all of your standard instance attributes. pscale, orient (or N and up), or even getting more specific into your scale by using matrix xforms and all of those techniques.

* Once you have your points, it's much more flexible to go the s@instance attribute path instead of assigning a single thing to your instancer on the top level. [s@instance = "/obj/Thing_" + @var;] for example.

* s@instance can point to either SOP geometry objects, or Arnold Procedural objects. Make sure when generating your .ass archives that you are writing out the .asstoc files or else you will be missing crucial bounding box information.

* Sometimes Arnold Procedural objects will just act funny on you and I can't explain why yet, but setting their bbox to "Load at Init" will generally solve that. So far no real issues with that workflow, but firstly I haven't been rendering anything totally insane where I'd want objects to be popping and dropping based on frustrum visibility, and secondly I don't really know yet how that even all works out in a bounce light pathtracer...so I just haven't concerned myself with it. I'll load the .ass at render time and whatever penalty I might be paying for that, I'm happy to just take for now to avoid any headaches.

* Arnold Procedural nodes will NOT evaluate instance point attributes at render time. If you build some kind of hsv jitter into your shader and rely on some point attribute to drive it, it will not work. It WILL work if your s@instance points to SOP Geometry though and not an Arnold archive.

* From what I can tell, s@instancepath tragically does NOT work. Someone please correct me on this one. Please for the love of god correct me.

* Copy SOPs and all of those workflows do not work at all with Arnold unless you want to unpack after the Copy. That's not much of an "instancing" workflow though now is it, but admittedly I use this out of laziness sometimes. My foliage library is enormous at this point, I have 70 unique geometries for moss alone. Right now in Arnold, that means in order for me to instance all of my moss variants, I need either 70 SOP Geo containers, or 70 Arnold Procedural containers live in my .hip file that I can s@instance to. Even though I now have a giant .hda file that has everything set up, it's still often just easier and simpler for me to run a standard Copy Stamp setup to a single SOP Geometry with all my 70 pieces of moss, and render the goddam thing uninstanced as a 1GB .ass archive.

* Bump and displacement scales correctly with your f@pscale! You will not break your setups. This is true for both SOP Geo instancing AND Arnold Procedural instancing.

* SSS radius sadly does not. If you are instancing SOP Geometry, you will want to be scaling any SSS radius in your shader by bringing in a User Float Attribute for your pscale and multiplying whatever you currently had there. This will NOT work of course if you're instancing Arnold Procedural nodes, as they have no visibility of instance point attributes...though now that I write this I have to wonder if maybe you CAN use the standard instancing attributes in your shaders like pscale and have them evaluate. I'll have to test that some day!

 

I think that's everything I know for now.

I'd love to see this thread stay active among all HtoA users if possible. Please contribute if you know any info!

Edited by Kardonn
  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Hi, there is a little more info about htoa instancing.

https://arnoldsupport.com/2015/06/09/htoa-about-instancing/

As for s@instancepath attribute - it is not implemented by default, but according to this presentation it should be doable.

Another drawback of instancing - it is not possible to export a scene to ASS (for rendering in another DCC / kick) and to preserve instancing, it will all be baked in. Expect huge and unmanagable files :/

Link to comment
Share on other sites

  • 7 months later...

use point wrangle and add attributes to points

s@instancefile = "O:/projects/alt_ResearchDevelopment_2016_2051/shots/rnd/setups/houdini/cache/ass/_03.ass";

 

add instance attributes to GEO container, set it to Fast Point instancing, and leave Instance object blank

 

Edited by martinkindl83
Link to comment
Share on other sites

Thank you for your reply.

Don't know if I am dumb or what..

So I have put this in a PointWrangler: 

inst_1.PNG

I obtain a good result in the Geo speadsheet:

 inst_2.PNG

As said, i add instance to my geo and set "Fast point instancing"

inst_3.PNG

but nothing appears at render time, and the console sent me a weird message:

inst_5.PNG

I don't know where the "/obj/wall/foo/" part of the instance path string came from.

I use H16.0.557 and htoa 1.14.3

 


 

 

Edited by JoQ
Link to comment
Share on other sites

Thank you very much for your file, its working!
I don't know why it is not rendering with mine, but I will investigate.

I tried to instanciate directly on rbd packed sim file, but I may convert this to a pointcloud.

 

 

 

Edited by JoQ
Link to comment
Share on other sites

  • 6 months later...

Hello, 

I'm trying to instance several different .ass files (foliage) for ground cover.  I can't seem to find any resources to guide me to the correct vex code to randomize the objects based off file name.  For instance, I have file names tree_(species)_(variant).ass  all ass files are saved in same folder.

Thank you for any and all help.  

Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...