Igor Churakov
maxpayne
About Me
EXPERTISE
VFX Artist
INDUSTRY
Film/TV
Connect
LOCATION
Canada
WEBSITE
Houdini Skills
Availability
Not Specified
Recent Forum Posts
HDK Multithreading over point groups(one thread - one group) July 14, 2026, 1:21 p.m.
It loos like I've got something working.
class moveUp
{
...
Getting current range from the array of UT_Array<GA_Range>
looping over that range of points and doing something
...
};
groupRangesArray has several UT_Array<GA_Range> made of point groups.
UT_BlockedRange<exint> groupsRange(0, groupRangesArray.entries());
moveUp MoveUpWorker(&groupRangesArray, gdp);
UTparallelForLightItems(groupsRange, MoveUpWorker, true);
UTparallelForHeavyItems is deprecated but UTparallelForEachNumber gives me weird behavior but I didn't look into it yet.
It would be great if someone could confirm that this is the right way of doing it or it doesn't make sense.
class moveUp
{
...
Getting current range from the array of UT_Array<GA_Range>
looping over that range of points and doing something
...
};
groupRangesArray has several UT_Array<GA_Range> made of point groups.
UT_BlockedRange<exint> groupsRange(0, groupRangesArray.entries());
moveUp MoveUpWorker(&groupRangesArray, gdp);
UTparallelForLightItems(groupsRange, MoveUpWorker, true);
UTparallelForHeavyItems is deprecated but UTparallelForEachNumber gives me weird behavior but I didn't look into it yet.
It would be great if someone could confirm that this is the right way of doing it or it doesn't make sense.
HDK Multithreading over point groups(one thread - one group) July 10, 2026, 1:05 p.m.
Hi Umang_Raj. Thank you for the explanation. That is more clear now. I guess that won't work in my case then. I'm now thinking that my initial question was a bit misleading.
I have point groups. pt_group_0 pt_group_1 etc. Each group has mutually exclusive points. I want to run some logic on each group of points but in parallel and so they don't overlap each other. So one thread takes care of one group(as an example).
Creating GA_Range using those groups works but it contains only one range at a time. How to run over all those ranges?
I have point groups. pt_group_0 pt_group_1 etc. Each group has mutually exclusive points. I want to run some logic on each group of points but in parallel and so they don't overlap each other. So one thread takes care of one group(as an example).
Creating GA_Range using those groups works but it contains only one range at a time. How to run over all those ranges?
HDK Logic behind attributeReorient July 9, 2026, 12:50 p.m.
Hi everyone. Does anyone know the logic behind the node "attributeReorient" ?
I'm trying to write same thing in HDK but I get different result.
What I'm doing is getting rotation matrix from Rest position. For that I'm using for:
x_axis - position of point 0 of the primitive - position of point 1 of the primitive.
y_axis - computeNormal(primitive)
z_axis - cross(x_axis ,y_axis );
building rest matrix from those vectors.
Same thing for the animated position.
Transforming point position by those matrices.
Then promoting values to points.
When geometry is moving but not deforming at all looks the same if I would use "attributeReorient"
But once geometry is deforming then values go off.
I assume it has something to do with interpolation.
I would appreciate if someone could give any advice on that.
I'm trying to write same thing in HDK but I get different result.
What I'm doing is getting rotation matrix from Rest position. For that I'm using for:
x_axis - position of point 0 of the primitive - position of point 1 of the primitive.
y_axis - computeNormal(primitive)
z_axis - cross(x_axis ,y_axis );
building rest matrix from those vectors.
Same thing for the animated position.
Transforming point position by those matrices.
Then promoting values to points.
When geometry is moving but not deforming at all looks the same if I would use "attributeReorient"
But once geometry is deforming then values go off.
I assume it has something to do with interpolation.
I would appreciate if someone could give any advice on that.