Felix Ronnholm
InternetFelix
About Me
INDUSTRY
Gamedev
Connect
LOCATION
Stockholm,
Not Specified
WEBSITE
Houdini Skills
Availability
Not Specified
Recent Forum Posts
How to fix tree scatter bug in Houdini Engine 6.2.0 March 18, 2024, 10:21 a.m.
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.
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.
Edit Primitive Attributes in Heightfields with vex July 28, 2021, 5:59 a.m.
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.
TOPs and Python who should be responsible for what? June 10, 2021, 5:05 a.m.
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