Some thoughts to add to this thread, in case it helps .
If you don't mind bringing the alembic in via a sop context like a sop create, you can specify on the alembic sop to keep transform/shape hierarchy.
AD products are notorious for saving attributes out side of the abc spec locations.
We found that using the python module _alembic_hom_extensions that comes with houdini we could get these attributes and put them in the correct locations.
If you have some ownership or control of what is getting exported, ie a pipeline of sorts. On the exporter,, they usually have a way to promote attributes from your mesh to the top alembic primitive. I would highly recommend writing any of these attributes to json and reading them back in on the hou side.
Hope this helps.
Found 36 posts.
Search results Show results as topic list.
Solaris and Karma » Referenced Alembic cache collapsing transforms
-
- Kym Watts
- 36 posts
- Offline
Solaris and Karma » USD Frustum across the frame range
-
- Kym Watts
- 36 posts
- Offline
If you want to do this in python, start with the example here on the usd survival guide.
https://lucascheller.github.io/VFX-UsdSurvivalGuide/dcc/houdini/fx/frustumCulling.html [lucascheller.github.io]
Its nice because it shows how to get the frustum, and just does bounding box intersections against it.
Its not too hard then to change it to target prim kinds like components. Etc.
I recommend using the average method, this way the python code will give you the prims in frustum for the whole camera move.
The whole usd survival guide is a great entry point to openusd python.
Hope this helps.
https://lucascheller.github.io/VFX-UsdSurvivalGuide/dcc/houdini/fx/frustumCulling.html [lucascheller.github.io]
Its nice because it shows how to get the frustum, and just does bounding box intersections against it.
Its not too hard then to change it to target prim kinds like components. Etc.
I recommend using the average method, this way the python code will give you the prims in frustum for the whole camera move.
The whole usd survival guide is a great entry point to openusd python.
Hope this helps.
Technical Discussion » point order of a sop box
-
- Kym Watts
- 36 posts
- Offline
Technical Discussion » point order of a sop box
-
- Kym Watts
- 36 posts
- Offline
Hi there,
im trying to make a visulization for the frustum of the usd camera, for debugging, I have found I can get the points that make up the camera frustum from : https://openusd.org/release/api/class_gf_frustum.html#a982cc1593684c0746fc929d6f544902d [openusd.org]
What im failing to figure out is what the point order is of the sop node for the box that im tryign to update the point order of.
It might also be a draw issue that im seeing.
im trying to make a visulization for the frustum of the usd camera, for debugging, I have found I can get the points that make up the camera frustum from : https://openusd.org/release/api/class_gf_frustum.html#a982cc1593684c0746fc929d6f544902d [openusd.org]
What im failing to figure out is what the point order is of the sop node for the box that im tryign to update the point order of.
It might also be a draw issue that im seeing.
Solaris and Karma » Stage getting prim "Local to World Transform" with Python
-
- Kym Watts
- 36 posts
- Offline
I recommend this example from nvidia; https://docs.omniverse.nvidia.com/dev-guide/latest/programmer_ref/usd/transforms/get-world-transforms.html [docs.omniverse.nvidia.com]
You need to get an xformable object, then you can get the 'ComputeLocalToWorldTransform(time)' method. This example will also show you what else you can pull out of the xformable.
Cheers
Kym.
You need to get an xformable object, then you can get the 'ComputeLocalToWorldTransform(time)' method. This example will also show you what else you can pull out of the xformable.
Cheers
Kym.
Houdini Indie and Apprentice » Python and USD Stage
-
- Kym Watts
- 36 posts
- Offline
Every node in solaris outputs a usd stage.
The folks over at Nvidia-Omniverse have this great resource, which has clear examples and well as easy explanations to follow here: https://github.com/NVIDIA-Omniverse/USD-Tutorials-And-Examples [github.com]
If you follow along with these, you can pretty much copy/paste the example code directly into a python script lop, just make sure to comment out the line that declares the stage variable, as you want to take the stage variable the python script lop has already provided to you.
You can also remove the Export at the end, as Solaris will keep the stage that you have created or modified in the python script lop and make it available to any of the downstream nodes.
This then makes it easier to use the usd api docs in practice in houdini.
Further learning if you want to see how some of houdini uses the python usd api directly, then taking a look at the usdaddassetstogallery hda in a topnet, shows some of the awesome utilities the devs have written to utilize the api and make our workflows more efficient.
My entry point for learning the python usd api was because i wanted to understand why our studio assets wouldn't work with the usdaddassetstogallery hda, i realized that we could tweak our asset publishing workflow and have them render the thumbnail and update the asset gallery directly.
Hope this helps.
Cheers
Kym
The folks over at Nvidia-Omniverse have this great resource, which has clear examples and well as easy explanations to follow here: https://github.com/NVIDIA-Omniverse/USD-Tutorials-And-Examples [github.com]
If you follow along with these, you can pretty much copy/paste the example code directly into a python script lop, just make sure to comment out the line that declares the stage variable, as you want to take the stage variable the python script lop has already provided to you.
You can also remove the Export at the end, as Solaris will keep the stage that you have created or modified in the python script lop and make it available to any of the downstream nodes.
This then makes it easier to use the usd api docs in practice in houdini.
Further learning if you want to see how some of houdini uses the python usd api directly, then taking a look at the usdaddassetstogallery hda in a topnet, shows some of the awesome utilities the devs have written to utilize the api and make our workflows more efficient.
My entry point for learning the python usd api was because i wanted to understand why our studio assets wouldn't work with the usdaddassetstogallery hda, i realized that we could tweak our asset publishing workflow and have them render the thumbnail and update the asset gallery directly.
Hope this helps.
Cheers
Kym
PDG/TOPs » half complete on a single work item
-
- Kym Watts
- 36 posts
- Offline
Hey folks,
I'm not sure what this icon means.
right now I'm testing with a Single work item , its running through a python script that pulls from our environment class and populates a environment edit node.
Running the code out side of houdini runs with out an exist code so I'm a bit stumped.
after running the python script node , i get some known verbosity/stdout that works fine in a shell, but im not sure i understand the reason as to why its failing on 1 thing ,but completing one 1 other thing ?
i have no errors in the console or in the %houdini_temp%, so like i said im stumped.
cheers
kym
I'm not sure what this icon means.
right now I'm testing with a Single work item , its running through a python script that pulls from our environment class and populates a environment edit node.
Running the code out side of houdini runs with out an exist code so I'm a bit stumped.
after running the python script node , i get some known verbosity/stdout that works fine in a shell, but im not sure i understand the reason as to why its failing on 1 thing ,but completing one 1 other thing ?
i have no errors in the console or in the %houdini_temp%, so like i said im stumped.
cheers
kym
Houdini Lounge » Houdini 19 doesn't load AT ALL on Ubuntu 21.10
-
- Kym Watts
- 36 posts
- Offline
chrism
Apparently some users had luck installing some linux missing libraries:
sudo apt install libopengl0 freeglut3 freeglut3-dev
Using Pop_os 21.04, this fixed houdini 19.0.383 not showing anything in the sceneview and crashing when switching to a render engine such as karma in a solaris view.
Solaris and Karma » Can't find Hydra Plugin 'HdRedshiftRendererPlugin'
-
- Kym Watts
- 36 posts
- Offline
From our environment builder , which will replace the path delimiters, this is what the minimum redshift paths required to have husk find the redshift hydra plugin.
(I have edited the paths to reflect the default location redshift installs to on windows.)
(I have edited the paths to reflect the default location redshift installs to on windows.)
set PATH = C:/ProgramData/Redshift/bin;%PATH%
set HOUDINI_PATH = C:/ProgramData/Redshift/Plugins/Houdini/%HOUDINI_VERSION%;%HOUDINI_PATH%;&
set PXR_PLUGINPATH_NAME=C:/ProgramData/Redshift/Plugins/Solaris/%HOUDINI_VERSION%;&
Solaris and Karma » Can't find Hydra Plugin 'HdRedshiftRendererPlugin'
-
- Kym Watts
- 36 posts
- Offline
Hello,
This can occur when there is something wrong with the way the redshift paths are added to to the HOUDINI_PATH .
I would check that all the paths I the houdini_path exist and use the correct path delimited for the operating system.
Cheers
Kym
This can occur when there is something wrong with the way the redshift paths are added to to the HOUDINI_PATH .
I would check that all the paths I the houdini_path exist and use the correct path delimited for the operating system.
Cheers
Kym
Technical Discussion » no effect when using 456.py
-
- Kym Watts
- 36 posts
- Offline
Also check you $HOUDINI_PATH, if there is a folder in there that adding to it will use the first instance there as well.
/scripts/456.py
Houdini Lounge » Crash on Linux
-
- Kym Watts
- 36 posts
- Offline
Since upgrading my laptop earlier this year to a dell g7, with an intel/nvidia combo card. , i have been getting a signal 11 error very similar to your reply here [www.sidefx.com] when ever i jump into a solaris context.
Every so often i would give this another try, thanks for making this thread, i have hit it a bunch of times trying to solve this.
So i kind of gave up on using linux for the last few months on my laptop with houdini.
This morning it occurred to me that most of the time on my linux machine it was opening all of my applications with the primary gpu, which is the intel card, running glx info confirms this, that its using the mesa drivers with the intel card i have.
So i started looking for how to force an application to use a particular gpu and i came across this [github.com].
I figured why not try:
This returns now that glxinfo is using my nvidia card, which is great news.
So i then ran:
This allows houdini to load, i can open a solaris context build out networks and render stuff with karma no issues.
I tried opening the file browser in a file cop, and it doesn't crash, so hopefully this will work for you to.
Cheers
kym
Every so often i would give this another try, thanks for making this thread, i have hit it a bunch of times trying to solve this.
So i kind of gave up on using linux for the last few months on my laptop with houdini.
This morning it occurred to me that most of the time on my linux machine it was opening all of my applications with the primary gpu, which is the intel card, running glx info confirms this, that its using the mesa drivers with the intel card i have.
So i started looking for how to force an application to use a particular gpu and i came across this [github.com].
I figured why not try:
__GLX_VENDOR_LIBRARY_NAME=nvidia __NV_PRIME_RENDER_OFFLOAD=1 glxinfo
This returns now that glxinfo is using my nvidia card, which is great news.
So i then ran:
__GLX_VENDOR_LIBRARY_NAME=nvidia __NV_PRIME_RENDER_OFFLOAD=1 houdini
This allows houdini to load, i can open a solaris context build out networks and render stuff with karma no issues.
I tried opening the file browser in a file cop, and it doesn't crash, so hopefully this will work for you to.
Cheers
kym
Technical Discussion » Has anyone Containerized Houdini
-
- Kym Watts
- 36 posts
- Offline
I haven't tried it myself yet , but if you check the downloads section, sidefx provides docker files for windows and ubuntu. Looks like a good place to start.
Solaris and Karma » Updating references in Stage Manager
-
- Kym Watts
- 36 posts
- Offline
You could do this with opchange from a textport.
This should check all the string parms on all the nodes in the graph and do a search and replace.
You can also provide -p with the path to a specific node, if you have other places you want to keep the original path.
Docs:
https://www.sidefx.com/docs/houdini/commands/opchange.html [www.sidefx.com]
Hope this helps.
Kym
opchange -p /stage <current path> <new path>
This should check all the string parms on all the nodes in the graph and do a search and replace.
You can also provide -p with the path to a specific node, if you have other places you want to keep the original path.
Docs:
https://www.sidefx.com/docs/houdini/commands/opchange.html [www.sidefx.com]
Hope this helps.
Kym
Technical Discussion » Husk command line multiple frame error
-
- Kym Watts
- 36 posts
- Offline
Not sure if this is the same issue that i was experiencing, but i was getting something like this a while back, where it would either not write out an image or it would overwrite the same image.
Turned out that i had a Render Product node with no Product Name set.
Once i had an output path there set there, it worked out, the only extra thing i added to said file path was this: `padzero(4,$F)` so houdini would set the paths up correctly with zero padding.
Since you have a Usda file already, you should beable to lookup the render Product in there , there should be a line "token productName.timeSamples", this should have a path for each file. if not, then i think you will need to specify it on the commandline.
Hope this helps.
Kym
Turned out that i had a Render Product node with no Product Name set.
Once i had an output path there set there, it worked out, the only extra thing i added to said file path was this: `padzero(4,$F)` so houdini would set the paths up correctly with zero padding.
Since you have a Usda file already, you should beable to lookup the render Product in there , there should be a line "token productName.timeSamples", this should have a path for each file. if not, then i think you will need to specify it on the commandline.
Hope this helps.
Kym
Solaris and Karma » USD: understanding changing the animated character caches
-
- Kym Watts
- 36 posts
- Offline
Hey Mark,
Hopefully this example helps, took me a bit to wrap my head around it too.
Essentially you are overriding a portion of the prim path with an new opinion of the geometry.
In my green subnet, i have grabbed the rubber toy and reorganized him so that all his geometry lives under:
/asset/geo
And his materials under:
/asset/materials
In my purple subnet i have also reorganized the rubber toy to have the geometry in the same prim path, but i have broken all the surfacing, so that we are only saving out a usd with a prim path of:
/geo
So above give me 2 usd files, one my surfacing asset, the second file is geometry.
In my grey box, Im essentially making a shot layer/stage. I have tried to break this down simply, i would usually use a stagemanager to bring in all the assets and setup there asset prim path, in this case node "surfacing_in", i have referenced in my surfacing file, i have also brought it into a asset or namespace primpath of:
/my_awesome_asset
if i do not give it a prim path when i bring it in, it will default back to /asset , which is good if i only have one rubber toy in my scene and bad if i have more than one.
so in order to bring our surfaced asset asset and our animated geometry in we need to layer the geometry in as a higher opinion, we do this by having another reference node "updated_geometry", in this node, im providing the usd path to the animated geometry and im bringing it into the prim path of:
/my_awesome_asset/geo
By doing this im changing just the opinion of what the geometry will be in this layer.
Doing this keeps the material bindings that exist in the surfacing asset.
I have provided the hip so that you can see how these layer together.
Hope this helps.
Kym
Edit: updated the hipfile so the mesh is saved out with animation....
Hopefully this example helps, took me a bit to wrap my head around it too.
Essentially you are overriding a portion of the prim path with an new opinion of the geometry.
In my green subnet, i have grabbed the rubber toy and reorganized him so that all his geometry lives under:
/asset/geo
And his materials under:
/asset/materials
In my purple subnet i have also reorganized the rubber toy to have the geometry in the same prim path, but i have broken all the surfacing, so that we are only saving out a usd with a prim path of:
/geo
So above give me 2 usd files, one my surfacing asset, the second file is geometry.
In my grey box, Im essentially making a shot layer/stage. I have tried to break this down simply, i would usually use a stagemanager to bring in all the assets and setup there asset prim path, in this case node "surfacing_in", i have referenced in my surfacing file, i have also brought it into a asset or namespace primpath of:
/my_awesome_asset
if i do not give it a prim path when i bring it in, it will default back to /asset , which is good if i only have one rubber toy in my scene and bad if i have more than one.
so in order to bring our surfaced asset asset and our animated geometry in we need to layer the geometry in as a higher opinion, we do this by having another reference node "updated_geometry", in this node, im providing the usd path to the animated geometry and im bringing it into the prim path of:
/my_awesome_asset/geo
By doing this im changing just the opinion of what the geometry will be in this layer.
Doing this keeps the material bindings that exist in the surfacing asset.
I have provided the hip so that you can see how these layer together.
Hope this helps.
Kym
Edit: updated the hipfile so the mesh is saved out with animation....
Edited by Kym Watts - May 17, 2021 17:30:03
MARDINI Daily Challenge 2021 » Day 12 Image | Nature | Valley
-
- Kym Watts
- 36 posts
- Offline
still cant quite get my head around how hieght field make there way into solaris, but here's my valley attempt
MARDINI Daily Challenge 2021 » Day 11 Animation | Nature | Wave
-
- Kym Watts
- 36 posts
- Offline
MARDINI Daily Challenge 2021 » Day 10 Image | Nature | River
-
- Kym Watts
- 36 posts
- Offline
MARDINI Daily Challenge 2021 » Day 9 Animation | Nature | Beach
-
- Kym Watts
- 36 posts
- Offline
Day 9 beach.
had a ton of fun playing with grains today, trying to relive my childhood of making sand castles.
had a ton of fun playing with grains today, trying to relive my childhood of making sand castles.
-
- Quick Links