개요
후디니에서 프로시주얼하게 메시를 다룰 때, 자주 사용하게 되는 프리미티브 샘플링 함수에 대해 알아본다.
알아볼 것은, primuv와 uvsample 함수 두 가지다.
개념을 정확히 하지 않으면, uv라는 용어 때문에 헷갈리므로 정리를 한 것이다.
결론적으로, 두 함수에서 지칭하는 uv는 각각 다른 것이다.
방법 1 : primuv()
바리센트릭 좌표를 이용해, 어트리뷰트를 샘플링하는 함수다.
- 바리센트릭 좌표란?
한 면마다 고유하게 존재하는 좌표다.
3개 이상의 버텍스들 사이의 면에 형성된 좌표를 의미한다.
이것은 일반적인 uv를 의미하는 것이 아니다.
따라서 primuv는 v@uv로 샘플링하면 올바른 결과가 나오지 않는다.
- 인자에 uvw라고 적혀있는 이유는?
바리센트릭 좌표를 뜻하는 것이다.
uv 값을 넣으라는 뜻이 아니다.
- 결론
intersect나 xyzdist를 이용해 바리센트릭 좌표를 얻어왔을 때 사용한다.
- 예시
int prim;
vector uvw;
int hit = xyzdist(0, v@P, prim, uvw);
vector near_pos = primuv(0, "P", prim, uvw);
방법2 : uvsample()
일반적인 (텍스처를 입히는 용도) uv 좌표를 이용해, 어트리뷰트를 샘플링하는 함수다.
- 결론
v@uv로 샘플링할 때 유용하다.
또는, 다른 어트리뷰트를 uv처럼 사용해 샘플링할 때 유용하다.
- 예시
uv값을 이용한 포지션 샘플링
v@P = uvsample(1, "P", "uv", v@uv);
다른 어트리뷰트값 활용
// 현재 지오메트리, 대상 지오메트리 둘 다 어트리뷰트를 uv처럼 할당해주어야함
v@road_u_uv = set(f@road_u, 0, 0);
// 할당한 어트리뷰트로 위치값 샘플링
v@road_curve_pos = uvsample(1, "P", "road_u_uv", v@road_u_uv);
추가정보
'이펙트 (FX) > 이펙트 팁 : Houdini' 카테고리의 다른 글
[Houdini] 후디니에서 서브스턴스 디자이너 노드 쓰는 법 (파일 포함) (0) | 2024.10.02 |
---|---|
[Houdini/Tip] 후디니 뷰포트에서 본 끄기 (0) | 2024.09.30 |
[Houdini/Python] 노드 색 변경 (원하는 색을 기본값으로) (0) | 2024.03.11 |
[Houdini/VEX] 후디니 External Editor 설정법 (소스 코드 편집기로 VEX 작성하기) (0) | 2024.01.23 |
[Houdini] 후디니 파라미터 레퍼런스, 키프레임 모두 삭제 (0) | 2024.01.23 |
댓글