Houdini Copernicus Ultimate Guide 튜토리얼 정리 · 8편
UV·왜곡·좌표
UV Sample / Texture Sample, Distort 계열, Slope Direction, Derivative, Position Map, Extrapolate Boundaries, Prefix Sum 등 UV 좌표를 만들고 샘플링하고 왜곡하는 노드들을 다룸.
[SOURCE] SideFX · The Ultimate Copernicus Guide | Every COP Node Explained
카테고리 houdini
UV 좌표를 만들고, 샘플링하고, 왜곡하는 노드들을 정리함. COP의 좌표 공간은 UV의 0~1이 아니라 **(-1,-1) ~ (1,1), 중심 (0,0)**이라는 점이 모든 것의 출발점임(핵심 개념 참조) — 기대하는 공간이 다르면 샘플링·왜곡 결과가 전부 틀어지므로, 노드마다 어떤 공간을 기대하는지 반드시 확인해야 함. 좌표를 다루는 노드는 왜곡(Distort), 미분(Derivative/Slope Direction), 누적(Prefix Sum) 같은 값 연산과 조합될 때 진가가 드러남.
관련 노드 링크: 극좌표 변환(Polar to UV / UV to Polar)과 ID 기반 UV 생성(UV Map by ID)은 ID·세그먼트에서 다룸.
이 문서는 SideFX 공식 튜토리얼 The Ultimate Copernicus Guide | Every COP Node Explained를 학습하며 정리한 기록임 — 오리지널 창작물이 아니라 원본 강의 내용을 주제별로 재구성한 자료임.
요약
- UV Sample / Texture Sample: 사실상 같은 노드 — 기대 좌표 공간만 다름. UV Sample = 이미지 공간(-1~1), Texture Sample = 텍스처 공간(0~1). Remap으로 상호 변환.
- Distort: direction 입력(UV) 또는 angle로 레이어 왜곡. 노이즈를 direction으로 쓸 땐 center를 0으로 내려야 양방향 왜곡됨. Streak 옵션은 내부적으로 Streak Blur 사용.
- Distort by Slope: 단일 노드가 아니라 Slope Direction + Distort의 묶음. 높이 맵 경사 방향으로 왜곡함.
- Slope Direction: 높이(흰색=높음)에서 경사 방향 계산. Kernel Size가 아티팩트 제거의 핵심 파라미터.
- Derivative: 값 변화량(미분) 계산 — X/Y 변화량 두 값을 출력. 균일 그라디언트는 균일 회색, 상수 입력은 항상 검정.
- Position Map: 노이즈의 기본 좌표 공간을 출력. Vector Transform 등으로 변형해 노이즈 position에 넣으면 왜곡을 상속함 — 소용돌이·만화경·버블 효과의 기반.
- Extrapolate Boundaries: 채워진 영역 값을 빈 영역으로 확장. UV 아일랜드 seam 제거의 표준 해결책(source=텍스처, fill area=알파).
- Prefix Sum: 방향(+X/−X/+Y/−Y) 누적 연산(Add/Minimum/Maximum). 4방향 Minimum 조합 + Function(삼각함수) + Blur로 유사 SDF 등고선 패턴 생성 가능.
UV 샘플 / 텍스처 샘플 (UV Sample / Texture Sample)
UV/텍스처 공간 좌표를 받아 텍스처를 샘플링하는 노드임. 두 노드는 사실상 같은 노드이고 기대하는 좌표 공간만 다름.
주요 파라미터
- 첫 입력: UV 좌표. 텍스처 입력: 샘플링할 이미지.
- 공간 정의(핵심):
- UV Sample = 이미지 공간(image space): (-1, -1) ~ (1, 1).
- Texture Sample = 텍스처 공간(texture space): (0, 0) ~ (1, 1).
팁 / 워크플로
- 동작 확인:
UV Map(기본 -1~1 범위) → UV Sample에 연결 + 텍스처(File) 샘플 → 기본 UV라 변화 없음(정상). 같은 UV Map을 Texture Sample에 꽂으면 공간이 틀려 결과가 잘못됨. - 공간 변환:
Remap으로 상호 변환 가능 — (-1~1) → (0~1)로 리맵하면 Texture Sample용, 반대로 (0~1) → (-1~1)이면 UV Sample용(값 리맵 참조). - 커스텀 UV 예제:
Ramp Mono(concentric) +Ramp Mono(radial) →Channel Join(X, Y) → 램프는 0~1 범위이므로 그대로 Texture Sample에 적합함. UV Sample을 쓰려면 remap(0~1 → -1~1) 후 연결. 이후Tile Pattern등을 texture 입력으로 샘플링함. remap 유무만 맞으면 두 방식 결과가 동일함. 이때Channel Join의 signature를 UV로 맞춰야 작동함(색·채널 참조). - 암기 포인트: UV Sample = -1~1, Texture Sample = 0~1.
- 활용처가 매우 넓음: Tile Pattern의 타일별 UV, Stamp Points의 스탬프별 UV, Fill의 색 샘플링 hack, UV grid 이미지(
$HFS/houdini/pic)로 UV 변형 결과 시각화 등.
디스토트 (Distort)
들어오는 레이어를 특정 방향으로 왜곡(distort)하는 노드임. 탭 메뉴의 Distort by Slope는 단일 노드가 아니라 **여러 노드의 묶음(collection)**임(아래 참조).
주요 파라미터
- Direction 입력(UV): 방향 지정용. 입력을 연결하면 angle 옵션이 회색 처리됨.
Direction Type/Angle: direction 입력을 안 꽂으면 angle이 활성화되어 원하는 각도 방향으로 왜곡 가능함.Scale: 낮으면 거의 변화가 없고, 올리면 왜곡이 강해짐. 음수면 반대 방향으로 끌어당김.Border Type: 기본이 Wrap이라 이미지가 반복되어 나타남. Mirror로 바꾸면 바깥 영역이 미러링됨. Clamp는 엣지 값으로 고정, Constant는 해당 영역에 값이 적용되지 않음.Streak옵션: 방향으로 블러를 적용함 — 내부적으로 Streak Blur 노드를 사용하며 그 노드와 동일한 설정 다수가 있음. 모션 블러 용도로 쓸 수 있음.
팁 / 워크플로
- 예제:
uvgrid_grey이미지를 입력. 다른 입력 없이 사용하면 단순히 UV가 시프트됨. - 노이즈 왜곡 예제:
Fractal Noise를 UV 시그니처(vector2/uv 요구)로 설정하고 amplitude를 올려 direction 입력에 연결.- 왜곡이 우상단으로 쏠리면 노이즈의 center가 0.5라서 값이 0.5에서 위로만 움직이기 때문임. center를 0으로 설정하면 양방향으로 왜곡됨.
- roughness를 줄이고 element size를 키우고, 3D 노이즈로 만들면 시간에 따라 왜곡이 변함.
디스토트 바이 슬로프 (Distort by Slope)
Slope Direction + Distort 조합의 노드 묶음임. 높이 맵의 경사 방향으로 이미지를 왜곡함.
팁 / 워크플로
- Slope Direction의 결과를 Distort의 direction으로 쓰고 scale을 올리면 높은 영역에서 밀려나듯(흘러내리듯) 왜곡됨. 음수 scale이면 반대로 끌어당김.
- 물결(ripple) 예제: Prefix Sum으로 만든 유사 SDF 등고선 패턴으로 원본 이미지를 Distort by Slope 왜곡시키면 물결 효과가 됨.
슬로프 디렉션 (Slope Direction)
높이(height)를 받아 흰 영역 = 높은 곳, 검은 영역 = 낮은 곳으로 취급하여 경사 방향(slope direction)을 계산하는 노드임. 단독 노드로도 존재함. 그 결과로 왜곡 방향을 만듦.
주요 파라미터
Angle: 계산 방식이 바뀜.Kernel Size: 미분(그라디언트 변화) 계산 시 탐색하는 버퍼 영역 크기. 키우면 옆으로 퍼지는 느낌이 있지만, 특히 노이즈 패턴에서는 약간 키우는 것이 스무딩에 도움됨. 줄이면 날카로운 UV와 이상한 아티팩트가 생김. 아티팩트 제거에 매우 유용한 파라미터임.
팁 / 워크플로
- 예제:
SDF Shape(star) →SDF to Mono→ 스무딩 →Slope Direction. 그레이(그라디언트) 영역을 이용해 슬로프를 생성함. 입력이 없으면 에러가 남. - Streak Blur의 direction 입력으로 연결하면 노이즈/높이 기반의 방향성 블러가 됨.
데리버티브 (Derivative)
값의 변화량(미분)을 찾는 노드임. Fractal Noise를 연결하면 마치 광원이 적용된 것처럼 보이는 흑백 이미지가 나옴.
주요 파라미터
Angle: 변화를 계산하는 각도(광원 방향처럼 보임).Scale: 결과 곱 배율.Kernel Size: Slope Direction과 동일 — 미분 계산 시 더 넓은 영역을 샘플링함.
팁 / 워크플로
- 동작 원리: 한 픽셀 집합과 인접 픽셀들 간의 값 차이를 비교함.
Ramp Mono(완벽한 그라디언트)를 넣으면 변화가 균일하므로 결과가 균일한 회색이 됨.- 램프에 중간 키를 추가해 급격한 값 점프를 만들면 그 지점에서 변화가 뚜렷하게 나타남.
- 이미지 전체가 같은 값(상수 입력)이면 변화가 전혀 없으므로 결과는 항상 검정임.
- 값 변화의 경사가 가파를수록 결과의 흰 영역이 더 밝아짐.
- 출력 특이사항: 두 개의 값을 출력함 — X 변화량과 Y 변화량. 이 둘을 더하면 총 변화량이 됨.
- Edge Detect도 이와 같은 이웃 픽셀 비교 방식으로 동작함.
포지션 맵 (Position Map)
위치(position)를 RGB로 표현한 맵을 생성하는 노드임. 노이즈 패턴들의 기본 좌표 공간(default space) 역할을 함.
주요 파라미터
- 기본 상태의 출력이 곧 노이즈의 기본 공간임 —
Fractal Noise 3D에 Position Map을 그대로 꽂으면 아무 변화 없음.
팁 / 워크플로
- 핵심 활용 — 좌표 왜곡: Position Map을 변형한 뒤 노이즈의 position 입력에 넣으면 노이즈가 그 왜곡을 따라감.
Vector Transform으로 회전 → 노이즈 자체가 회전함. Z축이 노이즈 중심을 관통하는 축이라 Z 회전 시 시계처럼 돎(지오메트리·3D의 Vector Transform 참조).- Pivot Transform을 (-1, -1)로 설정하면 좌하단 코너 기준으로 회전함.
@Time * 값으로 회전을 걸면 그 지점을 축으로 계속 돌게 됨.
- 마스크 결합 예제 (소용돌이):
Ramp(mono, Concentric)를 Vector Transform의 마스크로 연결. 램프 중심을 pivot과 같은 위치로 맞춤(파라미터 복사 → Paste Relative References). 사이클을 줄여 바깥으로 퍼지게 하면 바깥쪽일수록 회전량이 커지는 소용돌이 효과가 됨.- 회전 대신 Uniform Scale을 마스크와 함께 쓰면 pivot에서 멀어질수록 노이즈가 축소되는 효과가 됨.
- 버블/만화경/디스플레이스먼트 응용 예제:
- 노이즈를
Worley(보로노이) Cellular(roughness 제거, Manhattan distance, 사이즈 업) →Remap(type: Steps)으로 값 구간을 조여 셀 패턴 생성. - Pivot translate를 키프레임(좌하단 → 우상단 1,1)하면 시간에 따라 왜곡이 이동하는 버블 같은 효과가 됨.
- Transform position에 mirror(해당 축 미러, 90도/−90도 미러)를 걸면 만화경(kaleidoscope) 효과가 가능함.
Feather(circle blur 약하게) →Preview Material의 height로 연결,Ramp RGB를 base color로 → 시간에 따라 진화하는 디스플레이스먼트 결과물이 완성됨(필터, 지오메트리·3D 참조).
- 노이즈를
익스트라폴레이트 바운더리 (Extrapolate Boundaries)
텍스처 맵의 UV 아일랜드 경계(seam) 아티팩트를 피하기 위해, 채워진 영역의 값을 빈 영역으로 **바깥쪽으로 확장(extrapolate)**하는 노드임. SOP Import 워크플로와 연관됨(지오메트리·3D 참조).
주요 파라미터
- Source 입력: 확장할 텍스처. Fill Area 입력: 흰색 = 이미 채워진 영역, 검은색 = 확장해 들어갈 영역(알파가 정확히 이 형태임).
Threshold: 흑백이 아니라 중간값이 있을 때 어느 값부터 "채워진 것"으로 볼지 결정. 순수 흑백이면 0 초과 아무 값이나 동일하게 작동함.Edge Padding: 엣지를 얼마나 멀리 확장할지. 0으로 두면 스무스하게 확장됨.Edge Offset: 확장할 값을 엣지에서 얼마나 안쪽에서 가져올지. 엣지 색이 이미 정확하다면 줄여도 됨.
팁 / 워크플로
- UV seam 제거 예제 워크플로:
- SOP Import(rubber toy) →
Rasterize Setup(UV space) →Rasterize Geometry에서 origP(월드 위치)와 Alpha를 래스터라이즈. - origP로
Fractal Noise 3D(worley 셀 노이즈, amplitude 증가) 생성 →Preview Materialbase color로 지오메트리에 적용하면 UV 아일랜드 경계를 따라 seam 라인이 보임(스무스 셰이딩에서 더 잘 보임). 원인은 UV 아일랜드 가장자리가 거칠게 끝나기 때문임. - 노이즈를 source에, 알파를 Fill Area 입력에 연결.
- 값이 경계 밖으로 확장되어 seam이 감소함. 파라미터를 조정해 seam이 안 보일 때까지 다듬음(모두 0으로 놓고 하나씩 확인하면 각 파라미터의 역할이 잘 보임).
- SOP Import(rubber toy) →
- seamless해야 할 텍스처에 seam이 보일 때의 표준 해결책임.
프리픽스 섬 (Prefix Sum)
지정한 방향으로 픽셀 값을 누적(cumulative) 연산하는 노드임. 각 픽셀 = 자기 값 + 진행 방향상 이전 모든 픽셀의 값(또는 min/max).
주요 파라미터
Direction: +X, −X, +Y, −Y.Operation: Add(기본 누적합) / Minimum / Maximum.- Minimum: 진행 방향으로 각 행(열)의 최솟값을 추적함. Concentric 램프(원형)를 넣으면 중심으로 갈수록 낮은 값을 계속 물고 감.
- Maximum: 각 행의 최댓값 추적. 원이 가장자리까지 닿으면 중앙부 행들엔 0보다 높은 값이 없어 특유의 형태가 나옴.
팁 / 워크플로
- 동작 이해 (수직 램프 예제): 기본 방향은 +X. 왼쪽부터 진행하며 각 픽셀에 이전 픽셀들의 합이 누적됨. 결과가 흰 덩어리처럼 보이므로
Equalize를 걸어 0~1 범위로 보면 이해가 쉬움(값 리맵 참조). 맨 위 행(전부 1)은 계속 1이 더해져 끝에서 1024(가로 해상도만큼)에 도달 — 우상단이 최댓값. 맨 아래 행(전부 0)은 0만 더해져 그대로 검정임. - 실전 예제 — 4방향 Minimum으로 유사 SDF 패턴 생성:
File로 butterfly 이미지($F로 프레임 선택 가능) 로드.- Prefix Sum을 +X, −X 두 개 만들고 둘의 Minimum을 취함. +Y, −Y도 동일하게 만들어 Minimum, 마지막으로 X 결과와 Y 결과의 Minimum → 값이 작업 영역 안으로 국소화(localize)됨.
Function(Trigonometry)을 걸면 지저분한 줄무늬가 생기는데, 그 앞에Multiply Constant로 밝기를 줄이면 큰 패턴, 키우면 작은 패턴이 됨.Blur로 부드럽게 하면 SDF처럼 보이는 등고선 패턴이 완성됨.Channel Extract로 채널 하나만 취하고, alpha도 추출해 곱하면 실루엣 안에만 패턴이 남음.- Multiply Constant에
@Time * 0.5등을 넣으면 등고선이 흐르는 애니메이션이 됨. Blur ↑ = 더 부드러움, Multiply ↑ = 패턴 밀도 ↑. - 마무리로 Distort by Slope에 원본을 이 결과로 왜곡시키면 물결(ripple) 효과가 됨.
- 요약: 행/열 단위로 누적합·최소·최대를 구하는 노드이고, 밝은 영역 기준의 유사 SDF 패턴 생성 같은 창의적 활용이 가능함. 진짜 SDF가 필요하면 SDF 계열 노드를 참조.
관련 노드 (다른 섹션 담당)
Houdini Copernicus Ultimate Guide 튜토리얼 정리 · 전체 12편
- 00 Houdini Copernicus Ultimate Guide 튜토리얼 정리 index
- 01 핵심 개념
- 02 생성·패턴 노드
- 03 값 조정과 리매핑
- 04 블렌딩과 합성
- 05 색 보정
- 06 필터와 이펙트
- 07 SDF와 거리장
- 08 UV·왜곡·좌표
- 09 지오메트리·3D 연동
- 10 ID·세그먼트·변환 유틸리티
- 11 파일 입출력과 렌더 파이프라인
- 12 프로그래밍과 고급 기능