Found 4 posts.
Search results Show results as topic list.
Houdini Engine for Unreal » Asset interaction is slow
- craboom
- 4 posts
- Offline
Houdini Indie and Apprentice » Select Point A, select another point, PontB above Point A. If no point found, select another PointA and repeat
- craboom
- 4 posts
- Offline
Houdini Indie and Apprentice » Select Point A, select another point, PontB above Point A. If no point found, select another PointA and repeat
- craboom
- 4 posts
- Offline
I´ve talked to a programmer who´s not familiar with houdini but with C. He gave me a possible solution.
My question here is, is it nessecary that i have to create a random algorythm for this particluar thing or is there an even better / easier approach?
Here´s what he made for me:
I know this is not the best solution but it works and i have to figure out whatßs going on here and honestly, i also have to figure out how i can approach this, cause, like i said, i´m very new to coding, but i´m happy that i have something to work with
Still wondering if it´s the correct way doing it, thought there would be a nicer / easier solution
My question here is, is it nessecary that i have to create a random algorythm for this particluar thing or is there an even better / easier approach?
Here´s what he made for me:
int pts[]; vector posi[]; int takenPositions[]; int height; vector pos; float seed; int findTopPoint; @rand; ///////////////////// pts = expandpointgroup(0, "*"); pos = point(0, "P", @ptnum); height = chi("height")-1; findTopPoint = 0; // random algorythm seed = ch("seed"); @rand = floor(rand(seed)*@numpt); if(@ptnum > 10){ while(@rand < @ptnum && find(takenPositions, @rand)<0){ push(takenPositions, @rand); seed +=1; @rand = floor(rand(seed)*@numpt); } } if(@ptnum == @rand){ findTopPoint = 1; } // select point > y float range = 0.001; if(findTopPoint == 1){ foreach(int pt; pts) { vector currentPos = point(0,"P", pt); if( currentPos.x <= @P.x + range && currentPos.x >= @P.x - range && currentPos.z <= @P.z + range && currentPos.z >= @P.z - range && currentPos.y > @P.y && point(0,"selected", @ptnum) != 1 ) { setpointattrib(0, "selected", pt, 1, "set"); @selected = 1; height--; if(height<=0){ break; } } } }
I know this is not the best solution but it works and i have to figure out whatßs going on here and honestly, i also have to figure out how i can approach this, cause, like i said, i´m very new to coding, but i´m happy that i have something to work with
Still wondering if it´s the correct way doing it, thought there would be a nicer / easier solution
Houdini Indie and Apprentice » Select Point A, select another point, PontB above Point A. If no point found, select another PointA and repeat
- craboom
- 4 posts
- Offline
Hi there, what i´m trying to accomplish is to generate random pattern of different sizes for a corridor.
Let´s say, i have a grid.
I generate a point in the center of every primitive.
After that, i want to select a random PointA and imidiatly select another PointB wich is above PointA.
If there is no PointB above PointA then search for another random PointA and try again.
What i tried:
All the things that are commented out where my first approaches, nothing of them worked.
My Wrangle Node runs over points, but letting it run over Detail didn´t work either.
I also tried to pts instead of @p0 into the foreach loopm but this does set teh @selected attribute to 1 on every point and not just in a single point.
I am very new to coding at all and i´m a bit stuck on this.
It seems that i misunderstand loops in Houdini in general.
If possible, please send me the longer way and easier to understand first so i can figure out what is happening, again, i am very new to coding and maybe i don´t understand everything at first, but i´ll try
Thanks a lot for every answer from you guys!!!
Let´s say, i have a grid.
I generate a point in the center of every primitive.
After that, i want to select a random PointA and imidiatly select another PointB wich is above PointA.
If there is no PointB above PointA then search for another random PointA and try again.
What i tried:
int pts[]; float seed; @rand; ///////////////////// pts = expandpointgroup(0, "*"); pos = point(0, "P", @ptnum); seed = ch("seed"); @rand = floor(rand(seed)*@numpt); ////////////////////// //s@pointName = "pointA"; @p0 = @ptnum; @p1 = @ptnum+1; @selected = 0; //////////////////////// // for loop for(int i=0; i <= len(pts); i++) { if(@p0 == @rand) { //setpointattrib(0, "selected", @rand, 1); i@selected = 1; s@pointName = "pointA"; } else if(@p1 == @rand) { i@selected = 1; s@pointName = "pointB"; } else { i@selected = 0; s@pointName = "none"; } } ////////////// // foreach // foreach(int pt; pts) { // if(@p0 == rand) { // @selected = 1; // s@pointName = "pointA"; // } else if(@p1 == rand) { // @selected = 1; // s@pointName = "pointB"; // } // } /////////////////// // if (first approach // if(@p0 == rand) { // @selected = 1; // }else { // @selected = 0; // } @pts = len(pts); ////////////////////// // out messages // printf("Length %d", len(pts)); // printf("Rand %d", rand); // printf("CurrentP %d", @p0); // printf("Test %d", rand);
All the things that are commented out where my first approaches, nothing of them worked.
My Wrangle Node runs over points, but letting it run over Detail didn´t work either.
I also tried to pts instead of @p0 into the foreach loopm but this does set teh @selected attribute to 1 on every point and not just in a single point.
I am very new to coding at all and i´m a bit stuck on this.
It seems that i misunderstand loops in Houdini in general.
If possible, please send me the longer way and easier to understand first so i can figure out what is happening, again, i am very new to coding and maybe i don´t understand everything at first, but i´ll try
Thanks a lot for every answer from you guys!!!
-
- Quick Links