So the trees are not scattering anymore when I upgrade Houdini Engine to version 6.2.0
This is because Houdini Engine seem to now assume there are two parts to every tile.
In the insanely long function "GenerateTerrainBuffers()" on line 914:
HEU_TerrainUtility.GetAttributeTile(session, nodeID, scatterInstancerParts.id, out terrainTile);
when the terrain is loaded ales where this function returns the tile number (if the tile has an attribute called "tile" set in the heightfield). But here in GenerateTerrainBuffers it assumes that there is a Part 2 to every tile which there is not. Make the following cnages to make it work again:
// Change this:
HEU_TerrainUtility.GetAttributeTile(session, nodeID, scatterInstancerParts.id, out terrainTile);
//To this:
HEU_TerrainUtility.GetAttributeTile(session, nodeID, 0, out terrainTile);
This change makes it always fetch data regarding the tile number from Part 0 where the data is.
Side FX plz.. Terrains are usually the foundation of a pipeline. Please test before releasing.
Found 5 posts.
Search results Show results as topic list.
Houdini Engine for Unity » How to fix tree scatter bug in Houdini Engine 6.2.0
- InternetFelix
- 5 posts
- Offline
Houdini for Realtime » Edit Primitive Attributes in Heightfields with vex
- InternetFelix
- 5 posts
- Offline
Hello everyone,
I'm at an impasse, I want to write to a heightfields primitive attributes through Vex, but I feel like I can't grasp the concept of primitives, so I was hoping someone can explain how the pieces fit together.
I'm building a terrain, I have a heightfield, I add a erosion node, I can see that the erosion node ads names like "sediment"or "bedrock" under "names" in Primitives if I look at the Geometry Spreadsheet.
I add a COP2 Network and inside of that I add a sop import node and connect it to my erosion node, in there I can see the sediment "mask"(?) all good so far.
now I try to access the values inside of "sediment" through VEX. I can change value of sediment in vex by typing:
@sediment = 0.5f;
but if I rename sediment like so:
setprimattrib(0, "name", 4, "R", "set");
I can't set the variable by its new name after that:
@R = 0.5f;
what primitive types are these "maks" generated by the erosion node?
can one add their own "masks" through vex and have it end up under "name"?
why can't I change the value of a renamed variable?
where can one see the value of these "masks"? apart from having to look in a COP2 network
it looks like I'm just changing a string when I change the name of "sediment" with "setprimattrib" but how do I set the value?
All I can see is a list of strings called "names" and in that list there is a string called "sediment" but somehow there is more data somewhere?
I would like to create my own "mask" like the erode node does it, but set every pixel/voxel in it by vex.
I'm at an impasse, I want to write to a heightfields primitive attributes through Vex, but I feel like I can't grasp the concept of primitives, so I was hoping someone can explain how the pieces fit together.
I'm building a terrain, I have a heightfield, I add a erosion node, I can see that the erosion node ads names like "sediment"or "bedrock" under "names" in Primitives if I look at the Geometry Spreadsheet.
I add a COP2 Network and inside of that I add a sop import node and connect it to my erosion node, in there I can see the sediment "mask"(?) all good so far.
now I try to access the values inside of "sediment" through VEX. I can change value of sediment in vex by typing:
@sediment = 0.5f;
but if I rename sediment like so:
setprimattrib(0, "name", 4, "R", "set");
I can't set the variable by its new name after that:
@R = 0.5f;
what primitive types are these "maks" generated by the erosion node?
can one add their own "masks" through vex and have it end up under "name"?
why can't I change the value of a renamed variable?
where can one see the value of these "masks"? apart from having to look in a COP2 network
it looks like I'm just changing a string when I change the name of "sediment" with "setprimattrib" but how do I set the value?
All I can see is a list of strings called "names" and in that list there is a string called "sediment" but somehow there is more data somewhere?
I would like to create my own "mask" like the erode node does it, but set every pixel/voxel in it by vex.
PDG/TOPs » TOPs and Python who should be responsible for what?
- InternetFelix
- 5 posts
- Offline
So after some digging I have discovered that my python did have some errors due to some paths being faulty when the HDA gets cooked. One can apparently see the result of the cook by clicking the "Save Debug .hip File" and in there, one can see the true python errors. So the path is now solved, the next problem is that the cooked HDA does not allow editing which means that python can't create nodes within the HDA
PDG/TOPs » TOPs and Python who should be responsible for what?
- InternetFelix
- 5 posts
- Offline
Hello everyone, Learner here
I started off building a pipeline in python where one HDA would talk to the next and they would feed each other inputs to complete their tasks.
Now I would like to rebuild it all using TOPs, I think.
The problem that I'm encountering is that I can't execute my python anymore, I have tried "pressing the button" from TOPs and having the python sit in the python module of the HDA, I have tried having a python node, I have tried having a script node pointing towards my python node. But TOPs never seem to want to execute the script
I feel like I might get something fundamental wrong, is this the right way to think about TOPs and python in Houdini? Should the python(which mainly creates and edits nodes)sit inside TOPs itself? or in the HDA? or in a node?
I started off building a pipeline in python where one HDA would talk to the next and they would feed each other inputs to complete their tasks.
Now I would like to rebuild it all using TOPs, I think.
The problem that I'm encountering is that I can't execute my python anymore, I have tried "pressing the button" from TOPs and having the python sit in the python module of the HDA, I have tried having a python node, I have tried having a script node pointing towards my python node. But TOPs never seem to want to execute the script
I feel like I might get something fundamental wrong, is this the right way to think about TOPs and python in Houdini? Should the python(which mainly creates and edits nodes)sit inside TOPs itself? or in the HDA? or in a node?
Edited by InternetFelix - 2021年6月10日 04:11:49
Houdini for Realtime » Quick Material with multiple IDs not updating
- InternetFelix
- 5 posts
- Offline
Hello there,
I'm building a photogrammetry landscape pipeline and I use the baker and quick materials to bake out diffuse color of the landscape.
I import my meshes and setup the materials fine but I have discovered that quick materials don't update immediately after being setup by python. I have to change a material name back and forth to get all the material IDs to show up in the viewport. I have tried to do the same in python but it dose not seem to trigger the same update
I can't seem to find much documentation on the quick material Has anyone ales had the same problem and found a solution?
Is there some api call I can call to force the node to update except from cook in python?
I'm building a photogrammetry landscape pipeline and I use the baker and quick materials to bake out diffuse color of the landscape.
I import my meshes and setup the materials fine but I have discovered that quick materials don't update immediately after being setup by python. I have to change a material name back and forth to get all the material IDs to show up in the viewport. I have tried to do the same in python but it dose not seem to trigger the same update
I can't seem to find much documentation on the quick material Has anyone ales had the same problem and found a solution?
Is there some api call I can call to force the node to update except from cook in python?
-
- Quick Links