Obeida Zakzak
ObeidaZakzak
About Me
Houdini Pipeline Supervisor @ TAT Studio
専門知識
Technical Director
業界:
Film/TV
Connect
LOCATION
Toulouse,
France
ウェブサイト
Houdini Engine
ADVANCED
Digital Assets | Hair & Fur | VEX | Python
INTERMEDIATE
Cloth | Solaris | PDG
Availability
I am currently employed at TAT Studio
Recent Forum Posts
How to export Viewport GL visualizer PyroFX output into PNG? 2024年11月15日17:59
Looks like a use case for the OpenGL ROP node [www.sidefx.com].
Just needs to setup a camera with the orientation you are looking for, then render scene using OpenGL node to PNG sequence.
Just needs to setup a camera with the orientation you are looking for, then render scene using OpenGL node to PNG sequence.
Is there any way to import SOP Volumes into Copernicus? 2024年11月9日12:29
aschneider
Thanks for this. Does this support 3d volumes as well? I'm specifically looking at a way to write 3d texture slices from a SOP volume that doesnt involve old school single threaded COPS. Thanks.
Hello,
Not sure if this is exactly what you are looking for, but the Volume Slice SOP can output a 2D volume from a 3D volume, and since Copernicus supports 2D volumes via Geometry to Layer COP, this could a possible way to export volume slices.
VEX : array question. 2024年10月4日2:24
All right I took a closer look at your script.
Are you running this over Points or Detail ?
If it's over Points, then you will get a long array on every point, due to the fact you are looping over points inside a Point Wrangle. Also when working with a huge data set you might encounter performance issues due to the for loop.
If it's over Detail, then it should not work at all because @ptnum does not have sense in a Detail Wrangle, it's only usefull when running over elements like Points/Vertices/Prims.
Now if I understand the problem you are trying to solve, you want to build an array of point IDs where they have more than 2 neighbours, right ? If it's so, I can suggest a couple of methods here, and you could adapt them to your problem :
1. Build everything with a Detail Wrangle :
2. Assign point attributes with a Point Wrangle then build the list in a second time with a Detail Wrangle :
2a. Point Wrangle
2b. Detail wrangle
3. Same as 2. but instead of Detail Wrangle remove points where intersectionid == 0 and promote their ID to an array using Attribute Promote SOP (see in the hip file)
Are you running this over Points or Detail ?
If it's over Points, then you will get a long array on every point, due to the fact you are looping over points inside a Point Wrangle. Also when working with a huge data set you might encounter performance issues due to the for loop.
If it's over Detail, then it should not work at all because @ptnum does not have sense in a Detail Wrangle, it's only usefull when running over elements like Points/Vertices/Prims.
Now if I understand the problem you are trying to solve, you want to build an array of point IDs where they have more than 2 neighbours, right ? If it's so, I can suggest a couple of methods here, and you could adapt them to your problem :
1. Build everything with a Detail Wrangle :
i[]@intersectionList = array(); for (int pt = 0; pt < @numpt; pt++) { int nc = neighbourcount(0, pt); int intersectionid = nc > 2; setpointattrib(0, "nc", pt, nc); setpointattrib(0, "intersectionid", pt, intersectionid); if (intersectionid) { append(i[]@intersectionList, pt); } }
2. Assign point attributes with a Point Wrangle then build the list in a second time with a Detail Wrangle :
2a. Point Wrangle
i@ptid = @ptnum; int nc = neighbourcount(0, @ptnum); i@nc = nc; i@intersectionid = nc > 2;
2b. Detail wrangle
i[]@intersectionList = array(); for (int pt = 0; pt < @numpt; pt++) { int intersectionid = point(0, "intersectionid", pt); if (intersectionid) { append(i[]@intersectionList, pt); } }
3. Same as 2. but instead of Detail Wrangle remove points where intersectionid == 0 and promote their ID to an array using Attribute Promote SOP (see in the hip file)