Houdini Copernicus Ultimate Guide 튜토리얼 정리 · 9편
지오메트리·3D 연동
SOP Import, Rasterize 계열, Stamp Points, Geometry to Layer, Import Fields, Camera 계열, Project on Layer, Light, Height to Normal/AO, Preview Material 등 SOP·볼륨·카메라와 오가는 하이브리드 연동 노드를 정리함.
[SOURCE] SideFX · The Ultimate Copernicus Guide | Every COP Node Explained
카테고리 houdini
Copernicus는 순수 2D 컴포지팅 컨텍스트가 아니라 SOP 지오메트리·볼륨·카메라·렌더 AOV와 자유롭게 오가는 하이브리드 컨텍스트임. 이 섹션은 SOP 지오메트리를 COP 레이어로 가져오는 래스터라이즈 계열, 포인트 기반 스탬핑, 볼륨/하이트필드 연동, 카메라 연동, 노멀·AO 기반 텍스처링, 그리고 노멀/레이 방향 같은 벡터 데이터를 다루는 연산 노드들을 정리함. COP의 이미지는 "픽셀 = 복셀"인 2D 복셀 그리드이며 좌표 공간이 (-1,-1) ~ (1,1) 이라는 점(01-core-concepts.md 참조)이 이 섹션 전체의 전제가 됨.
이 문서는 SideFX 공식 튜토리얼 The Ultimate Copernicus Guide | Every COP Node Explained를 학습하며 정리한 기록임 — 오리지널 창작물이 아니라 원본 강의 내용을 주제별로 재구성한 자료임.
요약
- SOP Import: SOP → COP 관문. 내부 다이브로 직접 지오메트리 생성 가능. COP 공간에 맞추려면 Grid는 XY 평면, 2×2 크기.
- Rasterize Geometry / Layer: 지오메트리 → 레이어 변환. 기본은 Z축 orthographic 투영. Camera Reference 입력으로 카메라 시점 래스터라이즈. Rasterize Geometry를 먼저 거쳐야 Rasterize Layer가 동작함.
- Rasterize Setup: depth와 origP(원본 월드 위치)를 자동 추가. UV space 모드로 UV 아일랜드 출력 — origP + Fractal Noise 3D = seam 없는 텍스처.
- Stamp Points: 포인트 위치마다 이미지 스탬프. 어트리뷰트 지원: pscale(크기), Cd(색, RGB 시그니처 필요), orient(Standard), spriterot(Sprite).
@stamp로 다중 스탬프 배정. 출력: stamp/id/uv. - Geometry to Layer: 볼륨·하이트필드 → 레이어. XY 평면 볼륨만 동작함(XZ 평면 볼륨 불가 — 처음부터 XY로 만들 것).
- Import Fields: DOP 필드(density 등) → COP. 2D 연기 시뮬 파이프라인의 핵심(시뮬도 XY 평면 필수).
- Camera Import / Properties / Match: 카메라 가져오기 / 속성 오버라이드 / 두 카메라 일치.
- Project on Layer: 프로젝터식 투영. Transform 3D와 조합하면 원근 스트레칭 발생(rasterize와의 차이점).
- Light: source + 노멀맵으로 조명 적용. Blend(Screen)로 원본에 얹어 씬 리라이팅.
- Height to Normal: 높이 → 노멀맵. 방향 벡터로 실제 활용 시 기본 Offset이 아니라 Signed 타입 필수. Convert Normal로 인코딩 변환.
- Height to Ambient Occlusion: 높이 → AO 맵. Height Scale / View Radius / Step Scale(0.5~1 근처) 제어.
- Preview Material: COP에서 만든 base color/roughness/height/normal 맵을 지오메트리에 프리뷰. 지오메트리 레벨 COP에서는 머티리얼 경로가 붙은 실제 지오메트리를 출력함.
- 벡터 연산: Vector Transform(픽셀 값을 벡터로 취급해 회전·스케일 — Transform 3D와 다름), Normalize(Function 프리셋), Length(크기), Dot Product(정렬도 -1~1 — 포스트 프레넬), Cross Product(수직 벡터 — 이리데선스). 셰이더 없이 컴포지팅 레벨에서 프레넬/이리데선스 구현 가능.
SOP 임포트 (SOP Import)
SOP 지오메트리를 COP 네트워크로 가져오는 관문 노드임. 노드 자체는 단순하고, 함께 쓰는 래스터라이즈 계열 노드들이 실질적인 핵심임.
주요 파라미터
- External SOP: 외부 SOP 경로를 참조해 지오메트리를 가져오는 방식.
- 내부 다이브: 더블클릭으로 내부에 진입하면 SOP 서브컨텍스트(지오메트리 컨텍스트)로 작동함 — 내부에서 Grid, Scatter 등 직접 지오메트리 생성 가능.
팁 / 워크플로
- SOP Import와 함께 쓰는 주력 4종:
Rasterize Geometry,Rasterize Setup,Geometry to Layer,Stamp Points. - COP 공간에 정확히 맞추려면 Grid를 XY 평면, 2×2 크기로 만들어야 함(COP 공간이 -1~1, 즉 크기 2이기 때문).
- Cryptomatte 워크플로에서는 SOP Import의 Primitive Definition → Path Attributes(
path/name)가 프리미티브 분리 기준이 됨 — 11-render-io.md의 Cryptomatte 섹션 참조.
래스터라이즈 지오메트리 / 래스터라이즈 레이어 (Rasterize Geometry / Rasterize Layer)
지오메트리를 COP 레이어(이미지)로 변환하는 노드임.
주요 파라미터
- Quick Setup: UV 등 지오메트리에 존재하는 어트리뷰트를 무엇이든 레이어로 가져올 수 있음.
- Camera Reference 입력:
Camera Import로 가져온 카메라를 연결하면 그 카메라 시점에서 래스터라이즈함.
팁 / 워크플로
- 지오메트리에서 곧바로
Rasterize Layer로 가면 에러가 남 — 먼저Rasterize Geometry로 지오메트리를 레이어로 변환해야 함. - Rasterize Geometry는 기본적으로 Z축을 따라 XY 평면으로 투영함(정면에서 사진을 찍는 것과 같음).
- 기본 뷰는 원점에서 Z축으로 1만큼 물러난 orthographic 카메라임.
- 카메라 레퍼런스를 활용하면 렌더링 없이 카메라 + COP 네트워크만으로 "렌더링처럼" 쓰는 효과도 가능함.
래스터라이즈 셋업 (Rasterize Setup)
지오메트리를 여러 연산에 통과시켜 래스터라이즈 준비를 해 주는 노드임. 기본으로 depth와 original position(origP) 을 추가함.
주요 파라미터
- Position 모드: 기본 position → UV space로 바꾸면 지오메트리를 UV 공간에 투영해 UV 아일랜드가 출력됨.
팁 / 워크플로 — origP 기반 심리스 3D 노이즈 텍스처링
- Rasterize Setup(UV space) → Rasterize Geometry의 Quick Setup에서 Position을
P대신origP로 가져옴. Fractal Noise 3D(02-generators.md)의 position 입력에 origP를 연결 → UV 아일랜드 위에 3D 공간 기준 노이즈가 그려짐.Preview Material의 base color에 연결해 원본 지오메트리에 투영하면, 원래 지오메트리 위치로 노이즈를 시딩했기 때문에 심(seam) 없는 노이즈가 지오메트리 전체를 덮음.
팁 / 워크플로 — UV 아일랜드 경계 seam 제거 (Extrapolate Boundaries 연계)
- SOP Import(rubber toy) → Rasterize Setup(UV space) → Rasterize Geometry에서 origP와 Alpha를 래스터라이즈.
- origP로
Fractal Noise 3D(voronoi 셀 노이즈) 생성 후 Preview Material base color로 적용하면 UV 아일랜드 경계를 따라 seam 라인이 보일 수 있음(스무스 셰이딩에서 더 잘 보임) — UV 아일랜드 가장자리가 거칠게 끝나기 때문임. - 이때 노이즈를
Extrapolate Boundaries의 source에, 알파를 Fill Area 입력에 연결하면 값이 경계 밖으로 확장되어 seam이 사라짐(08-uv-distort.md 참조).
스탬프 포인트 (Stamp Points)
SOP에서 가져온 포인트 위치마다 이미지를 스탬프(복사)하는 노드임. 활용도가 매우 높음.
주요 파라미터
- Clipping: square / circle — 스탬프의 클리핑 형태.
- Stamp Color: 들어오는 색에 곱해지는 틴트.
- Scale: 스탬프 크기. Angle: 일괄 회전.
- Shape Edge Filter: 모양 가장자리 필터링 — Shape Falloff를 주면 가장자리가 테이퍼되어 효과가 잘 보임.
- 블렌딩 방식: Depth Sorted Over 외에 add, maximum, minimum 등.
- Signature: 기본 mono. RGB로 바꾸면 포인트의
Cd어트리뷰트를 색으로 받음. - Zero Negative IDs: 배경(스탬프가 없는 영역)이 ID를 받지 않게 처리.
포인트 공급 (정석 셋업)
SOP Import내부에서 Grid(XY 평면, 2×2 크기 — COP 그리드와 일치) → Scatter(예: 10개) → 포인트마다 사각형이 스탬프됨.- 좌표계 주의: COP 네트워크는 XY 평면, -1~1 범위(크기 2)로 작동하므로 이 크기를 벗어나면 스탬프가 COP 공간 밖으로 나감.
커스텀 모양
SDF Shape(다이아몬드, 별 등) →SDF to Mono→ stamp 0 입력에 연결하면 모든 포인트에 그 모양이 찍힘(07-sdf.md 참조).
인스턴싱 어트리뷰트 (Instancing Attributes)
- SOP에서 온 어트리뷰트의 해석 방식으로 Standard Instancing(3D 공간의 오브젝트로 취급)과 Sprite Instancing(평면 2D 이미지로 취급) 두 타입이 있음.
- pscale: 크기. Attribute Wrangle 예시:
@pscale = fit01(rand(@ptnum), 0.2, 1); - Cd: 색. 기본 스탬프가 mono라 무시됨 — 노드 시그니처를 RGB로 바꾸면 색을 받음.
- orient(4성분, Attribute Randomize에서 dimensions 4): 3D 회전 — Standard Instancing에서만 동작함.
- spriterot(float): Sprite Instancing일 때의 2D 회전 어트리뷰트.
다중 스탬프
- 스탬프 수를 2로 올리고 두 번째 입력에 다른 모양을 연결 → 포인트의
@stamp정수 어트리뷰트로 어느 스탬프를 쓸지 지정함. - 랜덤 배정 예시:
@stamp = rint(rand(@ptnum) * (스탬프수 - 1));
출력 (다중 출력)
- stamp(RGB): 스탬프 결과 이미지.
- id: 스탬프별 고유 ID —
Random Mono의 seed 입력에 넣으면 개체별 랜덤 값이 나옴(10-id-segment.md 참조). - uv: 스탬프별 UV —
Fractal Noise를Texture Sample로 이 UV에 샘플링하면 스탬프 각각에 텍스처를 입힐 수 있음.
팁 / 워크플로
- Eikonal 거리장 셋업에서는 배경을 흰색, 스탬프를 검정(circle, scale 0.005)으로 두고 mono 변환 후 Eikonal의 initial distance에 연결함 — 검은 픽셀까지의 거리를 계산하기 위함임(07-sdf.md 참조).
- Scatter 개수를 크게 늘리고 Blur·alpha·jitter를 조합하면 구름(cloudy) 패턴 재현에도 활용 가능함.
지오메트리 투 레이어 (Geometry to Layer)
Rasterize Geometry와 유사하지만 지오메트리(볼륨)를 레이어로 취급해 가져오는 노드임. 하이트필드·볼륨 임포트의 핵심임.
팁 / 워크플로 — 하이트필드 가져오기
- SOP에서 HeightField + HeightField Noise 생성 → SOP Import(External SOP) → Geometry to Layer → 하이트맵이 레이어로 들어옴.
- 단 값 범위가 매우 큼(약 0~500 또는 -250~250) →
Remap또는Equalize(03-value-remap.md)를 거쳐야 화면에 보임. Height to Ambient Occlusion같은 가공 →Null("terrain_texture") → SOP의HeightField Quick Shade에서 map 이름에op:경로로 COP의 Null을 참조하면 COP에서 가공한 텍스처를 지형에 직접 적용할 수 있음(op:참조 방식은 01-core-concepts.md 참조).
주의 — XY 평면 요구사항
- 하이트필드는 뷰포트에서 ZX 평면에 보이지만 내부 볼륨 크기는 500×500×1(XY 평면 기준)이라 COP에서 작동함.
- 반면 일반 SOP에서 만든 볼륨이 1000×1×1000(XZ 평면)이면 Geometry to Layer가 작동하지 않음. 볼륨 생성 후 차원을 바꾸기 어려우니 처음부터 XY 평면에서 만들 것.
임포트 필드 (Import Fields) — 2D 연기 시뮬 파이프라인
DOP 시뮬레이션의 필드(density 등)를 COP으로 가져오는 노드임(DOP Import Fields). 2D 시뮬 → COP 후처리 파이프라인의 핵심임.
팁 / 워크플로 — 2D 연기 시뮬레이션 → COP
- SOP 소스: Grid → Scatter →
Pyro Source(density) →Volume Rasterize Attributes(density) →Attribute Noise→ Null("source"). velocity도 rasterize attributes에 추가하면 함께 소싱 가능함. - DOP: Smoke Object + Smoke Solver, 낮은 division size,
Volume Source(initialization: smoke, velocity/temperature 제거, source 연결). Two Dimensional 체크, 크기 10×10. - Import Fields: DOP 네트워크/Smoke Object 선택, smoke 프리셋. 값이 크므로
Volume Wrangle로 감쇠:
→ Null("volume_out").density *= 0.01; - 주의: 2D 시뮬을 ZX 평면으로 만들면 COP의 Geometry to Layer가 실패함 → SOP 소스와 DOP 시뮬 모두 XY 평면(division 10, 10, 1)으로 재구성해야 함.
- COP: SOP Import(volume_out 참조) → Geometry to Layer → 연기 시뮬이 mono 레이어로 들어옴 →
Ramp RGB(magma 등),Remap(0~1 → -1~1) 등 자유롭게 후처리. displacement, smear 등 창의적 활용 가능. - 양방향 가능: COP 결과를 다시 다른 솔버로 피드백할 수 있음 — SOP↔COP를 오가며 작업 가능함.
카메라 임포트 / 카메라 프로퍼티 / 매치 카메라 (Camera Import / Camera Properties / Match Camera)
지오메트리 래스터라이즈용 카메라를 가져오고(Import), 속성을 조정하고(Properties), 두 카메라 속성을 일치시키는(Match) 노드군임.
Camera Import
- 상위 레벨에 카메라를 만들고 Camera Import로 선택 → Rasterize Geometry의 camera reference 입력에 연결하면 그 카메라 시점으로 래스터라이즈됨.
- Import 노드 자체에서 조정 가능한 것은 사실상 near/far clipping distance뿐임.
- 원본 카메라의 focal length 등을 바꾸면 aperture, resolution 등이 함께 갱신됨 — 속성이 카메라에서 fetch되기 때문임.
Camera Properties
- Camera Import 뒤에 연결하면 focal length, aperture 등 카메라 속성을 COP 노드 위에서 직접 오버라이드 가능함.
Match Camera
- 파라미터가 없음. 들어오는 카메라에 다른 레퍼런스 레이어의 카메라 속성 일부를 적용함.
- 테스트:
Switch로 원본 카메라와 Match된 카메라를 전환하면 차이를 확인 가능함. 두 카메라를 일치시켜야 할 때 사용함.
팁 / 워크플로
- 카메라 기준으로 depth 등을 래스터라이즈한 뒤
Equalize나 범위 fit을 걸어 출력 최대값을 일정하게 유지하면 카메라 뎁스 맵을 얻을 수 있음. 단 Equalize는 적응형이라 프레임 간 일관성이 필요하면Remap고정 리맵을 권장함(03-value-remap.md).
프로젝트 온 레이어 (Project on Layer)
입력 레이어를 타깃 레이어 위에 프로젝터처럼 투영하는 노드임.
주요 파라미터 / 입력
- source: 투영할 레이어.
- target: 투영받을 레이어 — 해상도를 키운 Size Reference 등을 연결하면 그 크기의 이미지 위로 투영됨. 기본 상태(타깃 없음)에서는 변화가 없음.
팁 / 워크플로
- 예제:
SDF Shape(star) →SDF to Mono→ source에 연결, target에 고해상도 size reference 연결. Transform 2D(border: clip, 축소)로 소스를 변형해 투영 가능함.Transform 3D와 조합 시 3차원 투영: 소스를 3D 회전시키면 Transform 노드 자체에서는 평범한 회전으로 보이지만, 레이어에 투영될 때 비스듬한 프로젝터처럼 늘어나며(stretch) 왜곡됨.- Rasterize와의 차이: rasterize는 평면 위에 평평하게 유지되어 3D 공간 변형이 반영되지 않지만, Project on Layer는 실제 이미지가 회전한 뒤 평면에 투영되어 스트레칭이 발생함.
- non-seamless 이미지를 tileable로 만드는 수동 워크플로의 첫 단계(정사각형 투영)로도 쓰임 — 08-uv-distort.md의 Hex Tile 전처리 워크플로 참조.
라이트 (Light)
source와 normal AOV를 받아 노멀 기반으로 이미지에 조명을 적용하는 아티스틱 노드임.
주요 파라미터 / 입력
- source: 조명을 받을 이미지.
- N 입력: 노멀맵.
- 광원 방향: 기본 광원 방향은 Z축. Z를 끄면 위에서 비추는 라이트가 됨. 위+정면 조합 등 광원 위치를 자유롭게 제어 가능함. 라이트 색상도 변경 가능함.
팁 / 워크플로 — 프로시저럴 라이팅 (예제 1)
Constant를 source로 연결.Fractal Noise→Height to Normal로 노멀맵 생성 → Light의 N 입력에 연결.- 노이즈 element size를 키우면 효과가 더 명확히 보임.
팁 / 워크플로 — 렌더 이미지 리라이팅 (예제 2, 의도된 사용법)
- 노멀이 저장된 렌더 이미지 사용:
C를 source에,normalAOV를 N에 연결하면 씬의 라이팅을 조정할 수 있음. - 더 나은 방법: C 채널 대신 Constant를 source로 사용(원본 이미지 크기에 맞춤)하면 라이트를 어디에 적용할지 더 직접적으로 제어 가능함.
- 이후
Blend노드에서 원본 이미지의 C 채널을 background, 이 라이트를 foreground로 놓고 Screen 연산을 쓰면 라이트가 이미지에 더해짐(04-blend-composite.md 참조). 원하는 방향에서 조명을 추가하고 마스크로 조정하는 식으로 씬 리라이팅이 가능함.
팁 / 워크플로 — 노멀 회전 라이팅 (Vector Transform 연계)
Fractal Noise(mono) →Height to Normal→Vector Transform→ Light의 N 입력(source는 Constant), 라이트 방향은 위에서.- Vector Transform으로 노멀을 X축 회전하면 표면이 앞/뒤로 기울어 빛을 덜/더 받고, Z축 회전하면 면이 향하는 방향이 바뀜.
하이트 투 노멀 / 컨버트 노멀 (Height to Normal / Convert Normal)
Height to Normal
높이 맵으로부터 노멀맵을 생성하는 노드임.
주요 파라미터
- 타입 옵션: 기본은 Offset 타입(모든 값을 양수로 오프셋). Signed 타입(음수/양수 값 존재)도 선택 가능함.
팁 / 워크플로
- 예제:
Fractal Noise(Worley Cellular, element size 증가 — displacement로 쓰기 좋은 패턴) → Height to Normal → 노멀맵 생성 →Preview Material의 base color와 normals 입력에 연결해 확인. 지오메트리는 평평하지만(displacement가 아니므로) 노멀맵 효과가 보임. Preview Material의 Normal Map Scale로 강도를 조절함. - Offset/Signed 주의: 노멀을 방향 벡터로 실제 활용할 때(예: 클라드니 파티클 시뮬레이터에서 포인트를 노멀 방향으로 이동) 기본값 Offset이면 모든 벡터가 +XY 한 방향만 가리킴 → Signed로 변경해야 사방을 가리킴.
Height to Ambient Occlusion의 결과를 다시 Height to Normal에 넣어 노멀맵으로 만드는 체인도 가능함.
Convert Normal
노멀맵의 인코딩을 변환하는 노드임.
주요 파라미터
- from Signed to Offset / Offset to Signed: 외부 텍스처에서 signed 노멀을 가져왔다면 Offset으로 교정, 반대 상황이면 Signed로 변환 — 양방향 전환 노드임.
- Normalize: 정규화되지 않은 노멀을 이 노드로 normalize할 수도 있음.
하이트 투 앰비언트 오클루전 (Height to Ambient Occlusion)
높이 맵에서 가려진(occluded) 영역을 찾아 AO 맵을 생성하는 노드임.
주요 파라미터
- Height Scale: 노이즈를 꽂으면 처음에는 순백으로 나옴 — 가정된 height scale이 매우 낮아서임. 올리면 디테일이 나타나기 시작함.
- View Radius: 특정 디테일 주변에서 그것을 가릴 수 있는 것을 얼마나 멀리까지 탐색할지. 여기서 "가림"은 높은 값(흰 영역)이 낮은(어두운) 영역을 가리는 것을 뜻함. 키우면 큰 디테일 위주, 줄이면 작은 디테일 위주로 탐색함.
- Step Scale: 버퍼 역할 — 더 넓은 영역을 탐색함. 올리면 스무딩되며 다소 얼룩덜룩(patchy)해짐. 대부분 0.5~1 근처 값으로 정착하게 됨.
- Remap Ramp: 출력 값을 리맵할 수 있음 — 특정 영역만 원할 때 유용함.
- Sample from Hemisphere: occlusion 계산 방식 변경. 끄면 결과를 더 큰 값으로 나누기 때문에 더 어두운 결과가 됨. 켠 쪽(hemisphere 샘플링)이 대체로 더 좋은 결과를 줌.
팁 / 워크플로
- 바위 텍스처링 등 용도가 매우 많음. 결과를 다시
Height to Normal에 넣어 노멀맵으로 만들 수도 있음. - 하이트필드 임포트 결과에 걸어 지형 텍스처를 만드는 워크플로는 위 Geometry to Layer 섹션 참조.
프리뷰 머티리얼 (Preview Material)
텍스처 합성(texture synthesis) 워크플로용 노드 — COP 안에서 만든 diffuse/roughness/specular/normal/displacement 맵들이 지오메트리에 적용된 모습을 미리 보는 노드임.
주요 파라미터 / 입력
- base color / roughness / height / normals 등 맵 입력: 각 채널에 COP 레이어를 직접 연결함. Specular 등은 노드에서 수치 제어도 가능하지만 보통 직접 만든 맵으로 제어함.
- 프리뷰 지오메트리: 기본 그리드 외 Sphere, Box, Tube, Torus, Shader Ball 제공. divisions를 줄이면 더 빨라짐.
- Divisions: 분할 수(displacement용). UV Scale: 텍스처 스케일 프리뷰. 그리드 자체 스케일, Waviness(그리드를 왜곡시켜 확인)도 있음.
- Normal & Displacement → Height Scale: height 입력에 의한 변형량 제어.
- Normal Map Scale: 노멀맵 강도.
- geometry 입력:
SOP Import로 커스텀 지오메트리(예: rubber toy)를 가져와 연결하면 자기 지오메트리 위에서 프리뷰 가능함.
팁 / 워크플로 — 맵별 제어 예제
- Base color: 노이즈 →
Remap(새 범위 -1~1) →Ramp RGB(position 입력, 색 지정) → base color. - Roughness: 같은 노이즈 → 별도
Remap에서 값을 뒤집어(1→0) 어두웠던 영역이 가장 거칠어지게 함. 완전 반사는 원치 않으므로 output max를 0.5 정도로 → roughness 입력에 연결. - Height(디스플레이스): 노이즈를 height 입력에 직접 연결하면 서브디비전을 수행하며 변형함. Divisions를 500 정도로 올리면 렌더 시 모습을 잘 가늠할 수 있음. 프로시저럴이라 일반 principled shader처럼 동작함.
팁 / 워크플로 — 지오메트리 레벨 COP의 출력 특이사항
- 같은 노드들을 지오메트리(SOP) 레벨 COP network에 복사하면, 디스플레이 플래그가 Preview Material에 있을 때 출력이 이미지(그리드 볼륨)가 아니라 머티리얼 경로가 붙은 실제 지오메트리(예: rubber toy)로 바뀜.
팁 / 워크플로 — 실전 머티리얼 연동 (Null + MtlX Image op: 경로)
Null노드를 만들어diffuse,roughness,displacement등으로 이름 지정.- Stage 레벨 Material Library 등에서 머티리얼을 만들 때 MtlX Image 노드를 쓰되, 파일명 대신
op:+ 해당 COP 노드 경로를 입력함(오브젝트 레벨에서 diffuse Null을 Ctrl+C로 경로 복사 → MtlX Image에 붙여넣기). - roughness는 경로 끝을
/roughness, displacement는/displacement로 바꿔 사용함. 이후에는 일반 standard surface 구성과 완전히 동일하게 이미지로 취급됨.
op:접두어가 없으면 동작하지 않음 — 01-core-concepts.md 참조.
벡터 화살표 시각화 셋업 (volumesamplev)
COP의 색상(RGB) 값을 공간상의 방향 벡터 화살표로 시각화하는 SOP 연동 리그임. 벡터 노드들의 동작 원리를 눈으로 확인하는 용도임.
셋업 과정
Constant(RGB 시그니처)를 출력 벡터로 삼고, SOP에서SOP Import/COP Network(copnet)로 COP 출력을 참조함.- SOP에서 원점에 포인트 하나 추가(Add Point) 후
Attribute Wrangle에서 COP 출력 벡터를 샘플링함:v@dir = volumesamplev(1, 0, v@P); // COP 출력이 벡터이므로 volumesamplev 사용 int pt = addpoint(0, v@P + v@dir); // 방향만큼 떨어진 포인트 추가 addprim(0, "polyline", @ptnum, pt); // 두 점 연결 - Resample로
curveu생성 →@width = chramp("thickness", @curveu);로 화살표 모양 두께 램프 →PolyWire(radius를 width 어트리뷰트로)로 화살표 시각화.
결과: COP의 색상 값(RGB)이 공간상의 방향/위치로 시각화됨. R=1이면 X축으로 1만큼 향하는 화살표, (0,1,0)이면 Y축 위쪽 — 색 = 벡터라는 개념을 눈으로 확인 가능함.
확장 — 벡터 필드 시각화
- 리그를 2×2 그리드에 scatter한 여러 포인트로 확장하고,
Fractal Noise(RGB)를 출력 벡터로 사용하면 노이즈 패턴대로 화살표들이 방향을 가짐. - Zero Centered를 켜면 양방향으로 흩어짐. 짧은 벡터들은 normalize로 균일화함.
- 크기는 Length를 다시 곱하거나, 상수(Constant)를 크기로 사용해 전체 벡터 스케일을 일괄 제어 가능함.
- Fractal Noise를 3D 노이즈로 하고 timescale 5 등으로 재생하면 시간에 따라 진화하는 벡터 필드가 됨. roughness를 낮추고 size를 키우면 부드러운 흐름 연출 가능함.
벡터 트랜스폼 (Vector Transform)
색상(RGB) 값을 위치/방향 벡터로 취급해 트랜스폼(회전·스케일·이동)하는 노드임.
주요 파라미터
- 회전 / 스케일(임의 축, Uniform Scale) / 이동 — 픽셀에 담긴 벡터 자체를 변환함.
- Mask 입력: 마스크로 변환량을 공간적으로 제어 가능함.
팁 / 워크플로
Transform 3D와의 차이 (중요): Transform 3D는 레이어(그리드 자체)의 위치를 옮기는 것이라 벡터 데이터의 "방향"에는 아무 영향이 없음. Vector Transform은 픽셀에 담긴 색을 벡터로 보고 그 벡터 자체를 회전/스케일/이동함.- 동작 예: Y축 방향(0,1,0) 벡터를 Z축 기준으로 회전시키면 화살표가 실제로 그 축을 중심으로 도는 것을 시각화 리그에서 확인 가능함.
- 실전 활용: COP에서 노이즈 패턴으로 velocity를 생성한 뒤 스케일 다운하거나 특정 방향으로 회전시키는 용도, 노멀맵을 회전시켜 라이팅을 바꾸는 용도(위 Light 섹션의 노멀 회전 라이팅 예제) 등에 유용함.
- Position Map을 Vector Transform으로 변형해 노이즈 좌표 공간 자체를 왜곡하는 활용은 08-uv-distort.md 참조.
노멀라이즈 (Normalize — Function 노드의 모드)
벡터의 길이(magnitude)를 1로 만들어 방향만 유지하는 연산임.
주요 파라미터
- 독립 노드가 아니라
Function노드를 Normalize로 설정한 프리셋임(03-value-remap.md의 Function 참조).
팁 / 워크플로
- 예: (1.5, 2, 0.3) 벡터를 normalize하면 단위 구(각 축 -1~1에 내접) 안에 들어옴. 길이=1로 고정되고 방향만 보존됨.
- 입력에 스케일·회전을 여러 번 거쳐 값이 지저분해졌을 때, Function(normalize)에 통과시키면 순수한 방향 벡터로 되돌릴 수 있음.
렝스 (Length)
벡터의 크기(magnitude/length)를 스칼라로 구하는 노드임.
팁 / 워크플로 — 방향/크기 분리·재조합
Length(크기) ×Normalize(방향) = 원래 벡터. 즉 벡터를 방향과 크기로 분리한 것임.- 분리해 두면 방향은 유지한 채 크기에만
Multiply Constant를 걸어 벡터 길이만 독립 제어 가능함. - 흰색으로 보여도 1을 초과하는 값일 수 있음(HDR 값) — Inspect로 확인할 것(01-core-concepts.md).
- Cross Product의 결과에 Length를 걸어 프레넬 변형 효과를 만드는 활용은 아래 Cross Product 섹션 참조.
닷 프로덕트 (Dot Product)
두 벡터가 얼마나 정렬되어 있는지(내적)를 스칼라로 구하는 노드임.
값의 의미
- 반대 방향: -1 / 수직: 0 / 같은 방향(평행): 1.
- 정규화된(normalized) 벡터끼리 써야 가장 잘 동작함.
팁 / 워크플로 — 포스트 프로세싱 프레넬(Fresnel)/이리데선스
- Solaris에서 구체 렌더. Physical Sky 비활성화(배경 제거).
Additional Render Vars에 Smooth Normals와 Ray Direction (from camera) 두 AOV 추가. - Karma 렌더 설정에서 Image Output → Import from Second Input, XPU 렌더로 전환. COP network에서 Slap Comp Block으로 마지막 렌더의 AOV들을 가져옴(11-render-io.md의 Slap Comp 워크플로 참조).
- Ray Direction을 normalize(Function) → Dot Product 첫 입력에 N, 둘째 입력에 정규화된 ray direction.
- 결과가 -1~1 범위라 그대로는 안 보임 →
Remap으로 (-1,1) → (0,1) 매핑. - 구 중앙은 노멀과 레이가 정면으로 마주보므로 -1(리맵 후 0=검정), 가장자리(수직)는 0(리맵 후 0.5)이 됨.
Function(Power, exponent 조절)으로 프레넬 폭 제어 — 흰 영역을 조이면 아주 샤프한 엣지 림이 됨.- 알파 처리:
Channel Extract로 C에서 alpha를 뽑아 곱해서 배경 정리. Mono to RGB의 Infrared 프리셋으로 무지개 그라데이션을 입힘 →RGB to RGBA로 알파 결합 → 원본 구와Multiply/Overlay/Soft Light등으로 블렌드.- 뷰포트에서 카메라를 움직여도 실시간으로 동작함. rubber toy 등 다른 지오메트리에도 그대로 적용됨.
- 핵심 가치: 셰이더를 건드리지 않고 컴포지팅(포스트) 레벨에서 이리데선스/프레넬 효과를 구현할 수 있음.
- 보너스: Remap을 repeat 모드로 두고
Multiply Constant를 걸면 반복되는 무지개 밴드 효과도 가능함.
크로스 프로덕트 (Cross Product)
두 벡터에 동시에 수직인 벡터(외적)를 구하는 노드임.
직관: X축 벡터와 Z축 벡터의 외적 = 둘 다에 수직인 Y축 벡터.
팁 / 워크플로 — 시점 반응 노이즈 (예제 1)
- N과 ray direction의 cross product를
Fractal Noise 3D의 좌표(position) 입력으로 사용 →Mono to RGBA+Channel Extract(alpha) +Premult→ 원본과 Multiply/Luminosity 등으로 블렌드. - 카메라를 움직이면 표면 위에서 노이즈 패턴이 진화하는 효과가 됨.
팁 / 워크플로 — 또 다른 프레넬 변형 (예제 2)
- N × ray direction의 cross product에
Length를 걸어 크기를 구하면 또 다른 형태의 프레넬 효과가 나옴 — 두 벡터가 수직일수록 외적의 길이가 커지기 때문임. - Mono to RGB → RGB to RGBA(+alpha 추출) → Multiply/Add/Screen 등으로 합성 → 이리데선스 효과.
팁
- 셰이더에서 하면 까다로운 효과를 포스트에서 자유롭게 제어 가능함. N/ray direction 조합 외에도 world position × ray direction으로 가짜 라이팅(faked lighting) 등 다양한 트릭이 가능함.
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 프로그래밍과 고급 기능