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.

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 :

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)