ABOUT ME

매일매일 공부할게요

Today
Yesterday
Total
  • VEX 에 대해
    houdini/공부 2020. 1. 7. 22:29

    VEX(Vector Expression Language) : 후디니의 프로그래밍 언어

    언어를 다루는것은 재밌다. 두군두군 (c++과 비슷하다)

     

    결론적으로 VEX는 VOP 이다...☆(VEX가 코드라면 VOP는 스크래치라 할수있다)

     

    Expression과는 별개의 영역이라 혼동되지않게 잘 배워두자.

     

    Attribute Wrangle == Attrubute VOP

    기능은 같지만, 코드로 표현한다는 점이 다르다.

     

     Attribute Wrangel 노드

    기능: 어트리뷰트 불러오기 - 가공하기 - 내보내기

    수정하려는 GEO를 입력 1에 연결한 후 VEX에서 작업한다.

    예시)

    vector addcolor = set(0, 0, 1); // 벡터 생성 set()은 형태를 맞춰주는 역할을 한다.

    @Cd = @Cd + addcolor; // 입력1의 색상변수를 가공한다.

    (Ctrl + Enter누르면 코드 결과를 바로 확인 가능하다)

     

    여기서 어트리뷰트 Cd는 @를 앞에 붙여서 변수임을 나타낸다는것을 알수 있다.

     

    Attribute 만들기 

    타입@이름 으로 선언이 가능하다 (f@move =  실수, v@co = 벡터)

    Spreadsheet 에서 확인 가능하다.

     

    Run Over 속성으로 어트리뷰트 클래스를 바꿀수 있다.

     

    기본 Attribute

    @ptnum : 점 번호

    @numpt : 점 개수

    @primnum : 면 번호

    @Cd : 색상

    @v : 속력

    @P : 점의 좌표

    @TX : x좌표

    @pscale : 크기

    @Frame : 프레임 번호

     

    Variable 만들기

    타입은 기본적으로 네 가지다.(float, int, vector, string)

    float val = 1;

     

    변수와 어트리뷰트는 GEO요소가 가지느냐 안가지느냐 차이다.

    변수는 그냥 값을 계산할때 쓰는것.(임시적으로)

    그러므로 데이터 처리시간 고려해서 변수와 어트리뷰트중 선택을 해야한다.(당연히 변수가 메모리가 작음)

     

    랜덤(Rand)

    rand(a) 함수는 인자에 따라 랜덤한 0과 1 사이의 실수를 리턴한다.

    rand(@ptnum) -> 0~1의 실수 리턴

     

    최소(Min), 최대(Max)

    min(a, b)는 두개의 인자중 더 작은 수를 리턴한다.

    max(a, b)는 두개의 인자중 더 큰 수를 리턴한다.

     

    f@pscale = min(0.5, rand(@ptnum)); // 0.5와 난수중 더 작은 수를 크기로 지정한다.

    (여기서 pscale은 copy할때 영향을 받는 크기 어트리뷰트다.)

    위처럼 min(), max()를 통해 간단한 클램핑(Clamping)작업을 수행할수 있다.

     

    맞추기(Fit)

    fit(a, b, c, d, e)는 어떤 범위에 있는 특정한 수를 새로운 범위의 해당하는 값으로 돌려준다.

    Float, Integer, Vector 타입만 가능하다.

     

    인자는 a: 타겟 / b: old 최소 / c: old 최대 / d: new 최소/ e: new 최대

    즉, 타겟을 (old최소 최대)에서 (new 최소 최대)로 매핑 하는것.

     

    만약 fit(45, 30, 60, 0, 1)이라면,

    30~60(old)에서 45는 중간쯤 -> 0~1(new)에서 중간은 0.5

    결론적으로 0.5를 반환한다.

    쉽게 말하면 30~60까지를 0~1의 값으로 위치에 맞게 매핑하는것.

     

    포인트 데이터값(Point)

    point(a, b, c)는 해당하는 점의 특정 어트리뷰트의 데이터값을 돌려준다.

    인자는 a: 인풋번호(연결1이면 1) / b: 어트리뷰트 이름 / c: 포인트 번호

     

    point(1, "P", 0); // 연결1의 GEO에서, 위치값인데, 0번째 포인트의 것을 가져온다.

     = 연결1의 GEO에서 ptnum이 0인 point의 위치값

     

    공부해 나가며 하나씩 추가중..

     

    참고

    https://www.dokak.net

    'houdini > 공부' 카테고리의 다른 글

    VOL에 대해  (0) 2020.01.09
    POP 에 대해  (0) 2020.01.09
    DOP 에 대해  (0) 2020.01.09
    VOP 에 대해  (0) 2020.01.07
    SOP 에 대해  (0) 2020.01.07
Designed by Tistory.