tamteThank you! I'll look into that.NMVHS
I feel like this involves creating a SOP context in DOP, but now sure how to do that.
processing of any geometry data in DOPs can be handled using SOP Solver DOP node
Found 21 posts.
Search results Show results as topic list.
Technical Discussion » Generate curves (geo) during simulation in DOP
- NMVHS
- 21 posts
- Offline
Technical Discussion » Generate curves (geo) during simulation in DOP
- NMVHS
- 21 posts
- Offline
Hi everyone,
Curious to know if this is possible to do in DOP:
In a particle sim, generate curves (or mesh) based on the result of current frame's simulation, and then feed these generated curves back to simulation as guides so they can affect next frame's sim.
I feel like this involves creating a SOP context in DOP, but now sure how to do that.
Thanks!
Curious to know if this is possible to do in DOP:
In a particle sim, generate curves (or mesh) based on the result of current frame's simulation, and then feed these generated curves back to simulation as guides so they can affect next frame's sim.
I feel like this involves creating a SOP context in DOP, but now sure how to do that.
Thanks!
Edited by NMVHS - Dec. 30, 2023 03:20:47
Solaris and Karma » usd point instancer reading external prototypes
- NMVHS
- 21 posts
- Offline
npetitIs there a way to do this with variants? For example, to have instancer randomly choose variants of a sphere.
Here's an example:
Create a sphere, a cube and a torus, plug a python LOP and set it to use this code:from random import random, randint import hou from hou import hmath from pxr import UsdGeom, Gf node = hou.pwd() stage = node.editableStage() numinstances = 20 prim = stage.DefinePrim("/pointinstancer", 'PointInstancer') pi = UsdGeom.PointInstancer(prim) rel = pi.GetPrototypesRel() rel.AddTarget("/cube1") rel.AddTarget("/sphere1") rel.AddTarget("/torus1") protoindices = pi.GetProtoIndicesAttr() protoindices.Set([randint(0,2) for x in range(numinstances)]) pos = pi.GetPositionsAttr() pos.Set([[float(x * 5), 3.0, 0.0] for x in range(numinstances)]) rot = pi.GetOrientationsAttr() rot.Set([Gf.Quath(*list(hou.Quaternion(hmath.buildRotate(random()*180, random()*360, random()*270)))) for x in range(numinstances)]) scl = pi.GetScalesAttr() scl.Set([[random()*2+0.2]*3 for x in range(numinstances)])
Solaris and Karma » How to utilize Component Builder extra layer
- NMVHS
- 21 posts
- Offline
BryanRayAha, I forgot to check the scene graph. Thanks Bryan!
The extra layer will be expressed in the Scene Graph as another descendant of the asset. For instance, if you had 'light1' in your extra layer, then your component output (assuming otherwise default configuration) should have descendants called 'geo', 'mtl', and 'light1'. You could control the light using a Prune, Light Edit, or Light Mixer, just like any other primitive.
Knowing the standard prim path outputs, you could build a primitive pattern to select the extra layers. For instance:
/componentoutput1/* ^(/componentoutput1/geo /componentoutput1/mtl)
That selects everything under /componentoutput1 except for 'geo' and 'mtl'.
Solaris and Karma » Component Builder Variant troubles
- NMVHS
- 21 posts
- Offline
HeileifNMVHSAhmedHindyI'm exploring a similar setup with for each loop. I wonder how you set up the component output node in the end? I lost all the variants somehow after adding component output node.The solution to this problem is to use one ComponentMaterial node per geometry variant. You need to plug them between the ComponentGeometry nodes and the ComponentGeometryVariants node. You can hook them all to the same materialLibrary node.
this maybe works for this simple setup, but what about a for loop for the component geometry lop that feeds into the componentGeometryVariants lop?
I cant get the materials to apply to each variant except the last variant.
Thanks!
I have the same problem :/
I had a look inside Component Output node, it has its own way to determine where to read geo and materials. It’s quite complex, so I changed the node mode to “input geo” instead of “upstream input” (I might get the name wrong, but it’s the first setting in Component Output node).
It works but you don’t have geo / mat as separate usd after output, only payload, but that’s ok. It’s designed that way to export custom asset setups.
Solaris and Karma » How to utilize Component Builder extra layer
- NMVHS
- 21 posts
- Offline
Hello!
I'm following the component builder tutorial. I can see adding extra stuff as an extra layer can be quite useful.
Let's say we have a lamp asset. I added a light as extra layer. Now in layout, I reference in the lamp asset, how can I control the lamp light on and off? Basically is there way to control this extra layer?
Thanks!
I'm following the component builder tutorial. I can see adding extra stuff as an extra layer can be quite useful.
Let's say we have a lamp asset. I added a light as extra layer. Now in layout, I reference in the lamp asset, how can I control the lamp light on and off? Basically is there way to control this extra layer?
Thanks!
Solaris and Karma » Component Builder Variant troubles
- NMVHS
- 21 posts
- Offline
AhmedHindyI'm exploring a similar setup with for each loop. I wonder how you set up the component output node in the end? I lost all the variants somehow after adding component output node.The solution to this problem is to use one ComponentMaterial node per geometry variant. You need to plug them between the ComponentGeometry nodes and the ComponentGeometryVariants node. You can hook them all to the same materialLibrary node.
this maybe works for this simple setup, but what about a for loop for the component geometry lop that feeds into the componentGeometryVariants lop?
I cant get the materials to apply to each variant except the last variant.
Thanks!
Technical Discussion » Network Share Folder not working
- NMVHS
- 21 posts
- Offline
ghostpro+1 here, have you found out the solution?
I think I have narrowed down that my client cannot seem to access the shared folder through Hqueue client. The client can see the files just fine through windows explorer. Does anyone have experience with the log on options for the Hqueue client service? I am only running a local account on the client machine. In order to map the shared network folder I had to use a username and password which is seperate from the local account.
Solaris and Karma » For each variant?
- NMVHS
- 21 posts
- Offline
goldleafThis is very helpful. Thanks!
The For Each LOP is not actually changing the variant, it's just cycling through the variant set's values (i.e. all of the "model" variants). Similarly, when iterating over primitives or numbers, those are just values filling out the context option values.
To see these values in this case, you could use a Set Variant LOP. Set the prim path to "/model" and variant set name to "model". Then you can use `@VARIANTNAME` set the variant. If you don't want to author the setting of this variant, append a Layer Break after the Set Variant node.
To edit the variants via For Each LOP, you'll also need an Add Variants LOP. You just need to make sure all of your additions/modifications are children of the variant primitive (i.e. "/test" in this case).
This is a workflow we want to improve in future releases. Hopefully this example helps in the meantime.
Solaris and Karma » For each variant?
- NMVHS
- 21 posts
- Offline
Hello!
I'm trying to iterate thru a prim's variants.
I expected it to work the way as SOP for each does. When I display Null1, it would show current variant being iterated. But it does not. What did I get wrong here?
And is it possible to apply different value clip to each variant?
Thanks!
I'm trying to iterate thru a prim's variants.
I expected it to work the way as SOP for each does. When I display Null1, it would show current variant being iterated. But it does not. What did I get wrong here?
And is it possible to apply different value clip to each variant?
Thanks!
Edited by NMVHS - Jan. 11, 2023 12:30:47
Solaris and Karma » Is component builder just for static geometry?
- NMVHS
- 21 posts
- Offline
Is it possible to have a looped animation built in an asset with component builder, e.g. a waving flag or burning tree?
I'm experimenting this with putting value clip in component builder, doesn't seem to work.
I'm experimenting this with putting value clip in component builder, doesn't seem to work.
Technical Discussion » Render farm and karma
- NMVHS
- 21 posts
- Offline
OneBigTreeI got same errors, how did you fix this?
Is there any new information on this?
I have tried using the Fetch in 19.5 but it fails immediately in HQueue.
Same with the new Karma ROP in the Out context. Mantra works fine. Some of the output log below:
.........................
Traceback (most recent call last):
File "/stage/usdrender_rop1/outputprocessors", line 2, in expression
File "D:\SIDEEF~1/HOUDIN~1.303/houdini/python3.9libs\loputils.py", line 11, in <module>
from pxr import Gf, Vt, Tf, Kind, Sdf, Sdr, Pcp
File "D:\SIDEEF~1\HOUDIN~1.303\python39\lib\site-packages\pxr\Gf\__init__.py", line 29, in <module>
from pxr import Tf
File "D:\SIDEEF~1\HOUDIN~1.303\python39\lib\site-packages\pxr\Tf\__init__.py", line 163, in <module>
PreparePythonModule()
File "D:\SIDEEF~1\HOUDIN~1.303\python39\lib\site-packages\pxr\Tf\__init__.py", line 87, in PreparePythonModule
with WindowsImportWrapper():
File "D:\SIDEEF~1\HOUDIN~1.303\python39\lib\contextlib.py", line 119, in __enter__
return next(self.gen)
File "D:\SIDEEF~1\HOUDIN~1.303\python39\lib\site-packages\pxr\Tf\__init__.py", line 47, in WindowsImportWrapper
dirs.append(os.add_dll_directory(path))
File "D:\SIDEEF~1/HOUDIN~1.303/python39\lib\os.py", line 1111, in add_dll_directory
cookie = nt._add_dll_directory(path)
OSError: The parameter is incorrect: '.\\python39'
PROGRESS: 0%
Generating Output File: R:/nettest_karma2/nettest_karma2.karma1.0016.exr
Error running Python menu script in parameter,
Output Processors (/out/karma1/lopnet/rop_usdrender/outputprocessors):
Traceback (most recent call last):
File "/out/karma1/lopnet/rop_usdrender/outputprocessors", line 2, in expression
File "D:\SIDEEF~1/HOUDIN~1.303/houdini/python3.9libs\loputils.py", line 11, in <module>
from pxr import Gf, Vt, Tf, Kind, Sdf, Sdr, Pcp
File "D:\SIDEEF~1\HOUDIN~1.303\python39\lib\site-packages\pxr\Gf\__init__.py", line 29, in <module>
from pxr import Tf
File "D:\SIDEEF~1\HOUDIN~1.303\python39\lib\site-packages\pxr\Tf\__init__.py", line 163, in <module>
PreparePythonModule()
File "D:\SIDEEF~1\HOUDIN~1.303\python39\lib\site-packages\pxr\Tf\__init__.py", line 87, in PreparePythonModule
with WindowsImportWrapper():
File "D:\SIDEEF~1\HOUDIN~1.303\python39\lib\contextlib.py", line 119, in __enter__
return next(self.gen)
File "D:\SIDEEF~1\HOUDIN~1.303\python39\lib\site-packages\pxr\Tf\__init__.py", line 47, in WindowsImportWrapper
dirs.append(os.add_dll_directory(path))
File "D:\SIDEEF~1/HOUDIN~1.303/python39\lib\os.py", line 1111, in add_dll_directory
cookie = nt._add_dll_directory(path)
OSError: The parameter is incorrect: '.\\python39'
------------------------------------------------------------------
Solaris and Karma » How to modify USD hierarchy procedurally
- NMVHS
- 21 posts
- Offline
Ok I see. Thanks. What about comparing attributes and "group"(some kind of identifier) them? Is that possible?
Edited by NMVHS - Sept. 6, 2022 10:32:02
Solaris and Karma » How to modify USD hierarchy procedurally
- NMVHS
- 21 posts
- Offline
Hi all,
Is there a way that I can select a few prims by comparing its attribtues, say "translate", and put the ones higher than X under a new transform. Not sure how to do this procedurally and whether it's achievable with VEX.
Thanks!
Shawn
Is there a way that I can select a few prims by comparing its attribtues, say "translate", and put the ones higher than X under a new transform. Not sure how to do this procedurally and whether it's achievable with VEX.
Thanks!
Shawn
Solaris and Karma » USD workflow Maya anim to Houdini
- NMVHS
- 21 posts
- Offline
Solaris and Karma » USD workflow Maya anim to Houdini
- NMVHS
- 21 posts
- Offline
RichardFrinkiRichardFrI am bit confusing this part.
- the animated geometry gets published as anim.usdc and added as a sublayer in the scene.usd, which can be loaded by downstream departments
"- the animated geometry gets published as anim.usdc and added as a sublayer in the scene.usd, which can be loaded by downstream departments"
what this means?
Should I use traditional way caching out animated geo as usdc? like file>export>
Or is there other way?
Yes you can save out your animated geometry as .usdc from the file->export menu. Then you have a file, which contains only your animated geometry and nothing else (no shaders, no camera, no props...).
This file can be added now as a new layer in the scene.usd file. In my video that happens automatically in a post-export process. If you are exporting it manually from the file menu, you can layer the scene.usd and the anim.usd in Solaris with 2 sublayer nodes.
Hi Richard, thanks for the tutorial video on Prism and I wonder when you export the animation by selecting only geo from the rig, how did you keep the hierarchy the same as asset.usd ? File > Export seems always keeping additional parent transform nodes from the rig. Not sure how to drive the shaded asset.usd with that.
Solaris and Karma » Procedurally move / align objects in Lop
- NMVHS
- 21 posts
- Offline
mestela
AFAIK there's no quick native lops equivalent.
That said here's two alternatives. One is to use a sopmodify, use whatever sops tricks you want, those changes will be propegated back to lops. Here I've used the labs align and distribute to put many boxes and spheres in a row, but you can play with the options to put them in a grid if you want.
The other options is to directly modify the transforms with vex. I've done a very brute force hack in this example, just setting the x position to the prims element number, but it works.
Both methods have pros and cons. Sops is good because you can use all your sops knowledge, but can get slow if need to process lots of things. Lops wrangles use a same-but-different syntax to sops vex, takes some getting used to, but performance scales better.
Hi Matt, thanks for your reply. This is very helpful as I'm reading cgwiki to learn USD and lop.
Much appreciated!
Solaris and Karma » Procedurally move / align objects in Lop
- NMVHS
- 21 posts
- Offline
Hi guys,
I'm learning Solaris and USD at the moment. Let's say I have a sphere and a box at origin. And I'd like to procedurally align the box next to the sphere.
In Sop, I can use transform with bbox expression. So what's the approach in Lop? bbox expression in transform seems no longer working. Thanks!
I'm learning Solaris and USD at the moment. Let's say I have a sphere and a box at origin. And I'd like to procedurally align the box next to the sphere.
In Sop, I can use transform with bbox expression. So what's the approach in Lop? bbox expression in transform seems no longer working. Thanks!
Work in Progress » Procedural World Generation | Overpass Building Traffic Sim
- NMVHS
- 21 posts
- Offline
Hi guys,
I'd like to share my latest personal r&d project of creating procedural assets with houdini and redshift.
Cheers,
Shawn
I'd like to share my latest personal r&d project of creating procedural assets with houdini and redshift.
Cheers,
Shawn
Technical Discussion » Polypath reparametrization
- NMVHS
- 21 posts
- Offline
-
- Quick Links