Home Technical Talk

Transferring position/scale/rotation data from Houdini to Maya for instancing

Hey all! I have about 1000+ points with transform data in Houdini which I would like to use for instancing objects in Maya, does anyone know how to go about transferring that information over and using it for instancing in Maya?

Ideally a solution which doesnt involve the Houdini engine plugin. I've read that Alembic may be an option but I haven't had any success with that.

Any help or links to information on the process would be greatly appreciated.

Replies

  • oglu
    Options
    Offline / Send Message
    oglu polycount lvl 666

    What about saving the final instances to USD. And render that in Maya?

  • oglu
    Options
    Offline / Send Message
    oglu polycount lvl 666

    Or use Bifrost to import the data.

    https://youtu.be/MVnaE9LnLQc

  • cushing001
    Options
    Offline / Send Message

    Hey Oglu, thanks so much for the reply! I haven't used USD or Bifrost before, I will definitely give that a try.

    I tried exporting the data as an Alembic but didn't have any luck accessing it in Maya, but I wasnt using Bifrost so perhaps that's where I was going wrong.

    For instancing between Houdini and Maya using USD most of the information I've found references multiverse https://j-cube.jp/solutions/multiverse/docs/usage/point-instancing-solaris.html#writing-the-sources-as-usd-from-maya. Is that necessary or can it be done without it?

    I am very new to all this so any other information or links to resources would be very helpful.

    Thanks again!


    edit: tried alembic with bifrost. I exported it from Houdini with rop_alembic and read_Alembic. Connecting to the output makes the points appear in the viewport but using "add watchpoint" just shows "size 1" and passing the points from read_Alembic into create_instances gives an error. So clearly that was wrong.

    Using File_cache instead of read_Alembic like in the video appears to be working though. I see they are using get and set geo for the attributes, so I guess now I just have to find the correct naming convention for the rotation and other attributes I need.

  • oglu
    Options
    Offline / Send Message
    oglu polycount lvl 666

    You can read USD data with maya and Bifrost. No need for Multiverse.

  • cushing001
    Options
    Offline / Send Message

    Alright I was able to get it working (sort of) I did a simple test with 20 points with different scales.

    Originally I had the point_scale property named just "scale" from houdini. In the video and the documentation here https://knowledge.autodesk.com/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2019/ENU/Bifrost-Common/files/create-instances-of-geometric-objects/Bifrost-Common-create-instances-of-geometric-objects-instance-pose-html-html.html It says to rename attributes with get_geo_property and set_geo_property, however the set_geo_property outputs "out_geometry" rather than points and doesnt work when passed into set_instance_geometry, so its not clear to me how to rename the properties within bifrost. For now I can just name them correctly in Houdini, but it would be nice to be able to change them to correct name within Bifrost.


    also translating the instances in the viewport moves them at different rates, it would be nice to be able to reposition all of it together. If you know anything about how to do either of those I would really appreciate the help. Thanks again for pointing me in the right direction!

  • oglu
    Options
    Offline / Send Message
    oglu polycount lvl 666

    It would be easier to ask on the Bifrost Discord.

    https://discord.gg/bifrost-addicts

  • cushing001
    Options
    Offline / Send Message

    Sounds good, I will try out that discord and the Bifrost forums.

  • cushing001
    Options
    Offline / Send Message

    If anyone stumbles on this post and is wondering about renaming properties before instancing, get_geo_property and set_geo_property works it was just user error on my part.

    For translating all the instances rather than doing it in the viewport you need to put a "translate_points" node between the cache and the "set_instance_geometry" node. To specify the desired translation you pass a float3 value node (not array float 3) into the translation port of the "translate_points" node. Also you need to uncheck local space on the translate_points node.

  • oglu
    Options
    Offline / Send Message
    oglu polycount lvl 666

    Great that its working now.

    But why do you need to bring in the data from houdini? You could just render there or do the instancing direct in Bifrost.

    Just curious.

  • cushing001
    Options
    Offline / Send Message

    Oh Im just working on an environment which has alot of different types of moss growing on various objects.

    I have a system setup in Houdini already which densely packs the moss scan atlas cards with some variation in scale and orientation and culls the ones which are too close or intersecting. Im sure It could be done in Bifrost as well but im already comfortable with Houdinis nodes and vex.

    I dont have a very compelling reason for not rendering it right in Houdini aside from having most of the scene setup in Maya using Arnold lights and material nodes (and I dont have Arnold for Houdini).

    I just like the flexability of being able to use solutions I already have implemented in Houdini over in other softwares.

    Im just a student with limited experience though, im sure alot of what I do is less than ideal haha.

Sign In or Register to comment.