가끔 Wrangle이나 VOP의 Run Over에 감사해도 좋다고 생각합니다!

3538 단어 WrangleHOUDINIVOP
오늘은 Houdini Apperintice Advent Calendar 10 일째입니다.

가끔 Wrangle이나 VOP의 RunOver에 감사해도 좋다고 생각합니다!



라는 제목으로 진행합니다.
한마디로 Wrangle이나 VOP의 Run Over란 무엇입니까? 라는 짧은 이야기가 됩니다.

Wrangle에서 말하면이 빨간색 프레임

VOP에서 말하면이 빨간색 프레임

됩니다.

여기가 Point라면 Point 하나하나에 대해 처리를 하겠습니다, 라는 의미입니다.
RunOver의 처리 대상은 모두 5 개가 있습니다.
  • Detail( Only Once )
  • Primitives
  • Points
  • Vertices
  • Numbers

  • 됩니다.
    각각 처리 대상이 달라 클래스이거나 숫자로 처리를 루프 시킵니다.
    SOP 기반의 ForEach도 있습니다만, 그쪽은 SOP를 조합하거나 할 때 편리합니다.

    Run Over입니다.

    Wrangle의 경우



    우선 Wrangle에서 이런 식으로 한 줄 써 보겠습니다.

    @Cd = relpointbbox(0,@P);
    

    이것은 바운딩 박스의 어느 정도의 위치에 지금 처리하고 있는 점의 좌표가 있는지를 Point의 색으로 해 주세요라는 의미입니다.
    @P 는 현재 처리하고 있는 점의 좌표, @Cd 는 현재 처리하고 있는 점의 색이라고 하는 의미가 됩니다.
    Run Over가 Point이므로 고유하게 @P나 @Cd이 포인트의 속성이라고 인식할 수 있습니다.
    1행으로 간단하게 쓸 수 있어 이것만의 일이 생겨 버립니다.

    그런데 이 Run Over가 Detail이 되면 순간에 귀찮게 됩니다.
    int npt = npoints(0);
    for(int i=0;i<npt;i++){
        vector pos = point(0,"P",i);
        setpointattrib(0,"Cd",i,relpointbbox( 0,pos ));
    }
    

    같은 일을 하는데 1행 25문자로 끝나고 있던 곳이 단번에 5행 133문자로 늘었습니다.
    5배나 타입하지 않으면 안 되는 것입니다.
    Run Over가 Detail인 경우 처리할 Point 수를 확인하고 Forum에서 해당 숫자로 반복해야 합니다.@P 로 끝난 곳이 명시적으로 point(0,"P",i)@Cd = 로 끝난 곳이 setpointattrib(0,"Cd",i,relpointbbox( 0,pos ));써야 합니다.
    이것은 매우 귀찮습니다.

    VOP의 경우



    이제 VOP의 경우 어떻게 될지 살펴 보겠습니다.
    같은 것을 AttributeVOP로 해 보겠습니다.

    Relative to Bounding Box라는 노드 하나로 끝나네요.

    Tab 메뉴에서 rel만들어 입력의 P(좌표)와 출력의 Cd(색)에 연결해 주는 것만으로 OK입니다.
    간단하고 락틴이군요.

    AttributeVOP의 Run Over를 Detail로 해봅시다.

    같은 결과를 얻기 위해서는 노드가 5개 필요로 7회 접속하지 않으면 안됩니다.
    모든 정점을 For로 돌려 각 점에 대해 Import Point Attribute로 좌표를 가져옵니다.
    Relative to Bounding Box 노드에서 경계 상자의 상대 위치를 가져옵니다.
    Set Attribute 노드에서 색을 설정한다는 것을 하는 것입니다만 Detail이라면 귀찮다는 것을 알 수 있습니다.
    Point나 Primitive등의 RunOver가 준비되어 있다는 것은 매우 훌륭한 일입니다.
    평소 아무렇지도 않게 만들고 있는 Wrangle이나 VOP가 짧고 간편하게 되어 있는 것은 RunOver의 덕분이라고 말할 수 있을지도 모릅니다.

    좋은 웹페이지 즐겨찾기