Houdini Copernicus Ultimate Guide 튜토리얼 정리 · 10편

ID·세그먼트·변환 유틸리티

ID to Mask/Mono/RGB, Segment 계열, Statistics by ID, Random Mono/RGB, UV Map by ID, 시그니처 변환 노드군, Polar↔UV 등 ID 데이터를 마스크·값·색·UV·통계로 바꾸는 유틸리티를 다룸.

생성 · 수정 · 그윈, 코리언메시

[SOURCE] SideFX · The Ultimate Copernicus Guide | Every COP Node Explained

카테고리 houdini

#houdini#copernicus#cop#id#segment#conversion

← 목차로 돌아가기

COP의 ID는 색이 아니라 타일·글자·세그먼트 같은 요소별 고유 정수값임(핵심 개념의 시그니처 참조). Tile Pattern이나 Font처럼 ID를 직접 출력하는 노드도 있고, ID가 없는 이미지에서 ID를 만들어내는 Segment 계열 노드도 있음. 이 섹션은 그렇게 얻은 ID를 마스크·값·색·UV·통계로 바꾸는 노드들과, 시그니처(채널 구성) 간 변환을 담당하는 Conversion 노드군, 그리고 Polar 좌표 변환을 다룸.

이 문서는 SideFX 공식 튜토리얼 The Ultimate Copernicus Guide | Every COP Node Explained를 학습하며 정리한 기록임 — 오리지널 창작물이 아니라 원본 강의 내용을 주제별로 재구성한 자료임.

요약

  • ID = 요소별 고유 정수값(색 아님). 생성원: Tile Pattern, Font, Worley Noise, Stamp Points, Julia Fractal(Integer), Segment 계열.
  • Segment by Connectivity: 연결성 기반으로 영역 분리해 ID 생성. alpha 출력을 곱해 틈(gap) 문제 해결. UV는 제공하지 않음.
  • Segment by Value: 값 범위 기준 N개 세그먼트 분할. 연속 값(노이즈)용 — 타일에는 부적합. 범위 밖 처리는 양쪽 Clamp가 보통 정답.
  • ID to Mask: ID 패턴/Keep by Range/Chance/마스크 기반 선택. 특수 ID -1(타일 틈) 지정 + Invert = 전체 알파 마스크.
  • ID to Mono: ID → float 직접 변환. ID 0은 검정이 됨 — Add Constant +1로 보정.
  • ID to RGB: ID별 랜덤 색. 빠른 시각 확인용.
  • Random Mono / Random RGB: seed 입력에 ID 연결 = ID별 랜덤값 — ID 활용의 주력 패턴. Zero Negative IDs로 배경(-1) 제외.
  • Statistics by ID: ID별 Area/Minimum/Maximum 통계. Min/Max는 Source 입력 연결 시에만 출력됨.
  • UV Map by ID: ID별 UV 생성 — Segment 계열처럼 UV가 없는 상황의 해법. Transform UV의 seed에 ID를 넣으면 ID별 랜덤 변환.
  • 시그니처 변환: RGBA to RGB(알파 분리 겸용), RGB(A) to Mono(luminance/average/단일 채널/custom 가중 — 자동 정규화), Mono to RGB(리맵 내장 램프), Mono to RGBA(alpha 입력 — 정밀 컷은 Premult 필요).
  • Polar to UV / UV to Polar: 극좌표(Angle/Length) ↔ UV 상호 변환. 방사형 텍스처·패턴 제작용.

세그먼트 바이 커넥티비티 (Segment by Connectivity)

ID/UV가 없는 이미지(예: 이미지 텍스처로 들어온 타일)에서 연결성 기반으로 영역을 분리해 ID를 생성하는 노드임.

주요 파라미터

  • Threshold: 임계값 위(또는 아래)의 영역을 서로 분리함.
    • 타일 이미지처럼 각 조각이 명확하면 그대로 개별 세그먼트가 됨.
    • Fractal Noise 같은 연속 이미지도 threshold에 따라 여러 지역(region)으로 분할됨 — threshold에 따라 지역 수가 달라짐.
    • "threshold 아래를 하나의 ID로" 설정하면(예: 0.5 미만 분리) 밝은 영역 사이사이 조각들이 분리됨.
  • 연결성 계산 방식 옵션도 있음.

출력

  • ID: 랜덤화 등 무엇이든 활용 가능(예: Random Mono의 seed로).
  • Alpha: 매우 유용함 — 곱하기나 마스크 값으로 자주 씀.

팁 / 워크플로

  • 틈(gap) 문제와 alpha 해결책: Random Mono를 그대로 쓰면 타일 사이 틈까지 회색으로 칠해지는 문제가 생김 — 틈도 자체 ID를 가져서 시드를 바꿀 때마다 다른 색이 됨. 이때 결과에 Segment by Connectivity의 alpha 출력을 곱하면 개별 타일은 유지하면서 틈은 영향받지 않게 됨.
  • 이 노드는 ID는 주지만 UV는 주지 않음 — UV가 필요하면 아래 UV Map by ID로 이어감.

세그먼트 바이 밸류 (Segment by Value)

Segment by Connectivity와 유사하되 값 범위 기준으로 지정한 개수만큼 세그먼트를 나누는 노드임.

주요 파라미터

  • 세그먼트 수: Fractal Noise에 연결해 원하는 수를 지정하면 그 수만큼 분할됨. Ramp Mono에 2 세그먼트면 정확히 절반으로 나뉨.
  • Minimum / Maximum Value: 실질적으로 세그먼트 수를 바꾸는 값 범위. maximum을 줄이면 세그먼트가 계속 추가되는데, 이는 기본 Values Above 옵션 때문임(예: 0.47을 넘으면 다음 세그먼트가 되는 식).
  • 범위 밖 처리: Clamp / Invalid / Wrap(오른쪽 값을 되감음).

팁 / 워크플로

  • 범위 밖 값은 양쪽 다 Clamp가 보통 정답임 — 세그먼트가 의도보다 많아지는 것을 방지함. clamp 후 노이즈를 다시 넣으면 항상 지정한 세그먼트 수가 유지되고 threshold만 조절하면 됨.
  • 적합/부적합: 노이즈 패턴처럼 연속적인 값 범위에서 국소 영역을 나눌 때 유용함. 타일 패턴에는 잘 안 맞음 — 어떻게 세그먼트해야 할지 몰라 제대로 동작하지 않음(타일에는 Segment by Connectivity가 맞음).

ID 투 마스크 (ID to Mask)

특정 패턴에 따라 ID 기반 마스크를 생성하는 노드임.

주요 파라미터

  • ID pattern: 0, 1, 2, 3 등을 넣으면 해당 ID만 마스크됨.
  • Invert: 선택 반전.
  • Keep by Range: "3개 중 1개", "4개 중 1개" 같은 규칙적 패턴 선택.
  • Keep by Chance: 랜덤 확률로 ID 유지.
  • Keep within Mask: 두 번째 입력(마스크, 예: Ramp Mono)과 Threshold를 사용 — 임계값 이상 영역에 있는 ID만 유지됨.

팁 / 워크플로

  • 특수 ID -1: 이런 노드들이 흔히 생성하는 값임. Tile Pattern에서는 타일 사이 간격 영역이 -1임. -1을 지정하고 Invert하면 전체 알파 마스크를 얻을 수 있음.
  • 패터닝 기반으로 특정 ID들을 분리(isolate)할 때 유용함.
  • 활용 예: Julia Fractal의 Integer 출력에서 배경 쪽 마지막 ID가 플리커를 일으킬 때, ID pattern에 Maximum Iterations 값을 넣고 Invert해서 결과에 곱하면 플리커가 사라짐.

ID 투 모노 (ID to Mono)

각 ID를 실제 float 값으로 변환하는 노드임(ID 0,1,2,3 → 값 0,1,2,3).

주요 파라미터

  • 변환 모드: 기본 직접 변환 외 —
    • Safe Pack: 매우 큰 ID 개수용으로 알려져 있음.
    • Bitwise: 입력 ID와 출력 mono 간 직접적 대응이 없는 방식으로 보임(강연자도 써본 적이 없어 정확한 용도는 불명).

팁 / 워크플로

  • Equalize를 걸어 보면 값이 순차적으로 올라가는 것을 확인할 수 있음.
  • ID 0 주의: ID 0인 타일은 값이 0(검정)이 됨 → Add Constant로 1을 더해 올리면 해결됨(나머지 배경은 여전히 검정).

ID 투 RGB (ID to RGB)

각 ID에 실제 색을 부여하는 노드임 — ID는 색이 아니라 그냥 ID이므로, 시각적으로 구분하려면 이 노드로 색을 입힘.

주요 파라미터

  • Seed: 바꾸면 다른 색 조합이 나옴.

팁 / 워크플로

  • 일반적으로 크게 유용하지는 않다는 평임 — 실전 랜덤화에는 아래 Random Mono / Random RGB가 주력임.
  • Font의 글자별 ID에 걸어 글자마다 다른 색을 주는 식의 빠른 확인용으로는 편함.

ID 투 SDF (ID to SDF)

각 ID 영역을 개별 SDF로 변환해 타일별 정밀 가공을 가능하게 하는 노드임 — 상세는 SDF 참조.

랜덤 모노 / 랜덤 RGB (Random Mono / Random RGB)

ID를 실제로 활용하는 대표적 방법임. ID를 Seed 입력에 연결하면 ID별 랜덤 값이 나옴.

주요 파라미터

  • Seed: 시드 조절.
  • Zero Negative IDs: 타일 사이의 -1 ID를 무시하고 0 처리함(배경이 ID를 받지 않게 함).
  • Range: 값 범위 옵션.
  • Random RGB: ID별 랜덤 RGB. 역시 Zero Negative IDs 지원. twilight 같은 색 범위 제한을 걸 수 있음.

팁 / 워크플로

  • 모자이크·타일 패턴 작업 시 색 변주와 임퍼펙션 추가에 매우 좋음.
  • 대표 체인: Tile Pattern의 ID 출력 → Random Mono의 seed → 결과를 Ramp에 넣어 색을 몰거나 Remap해서 roughness 맵으로 사용.
  • Stamp Points의 id 출력을 seed로 넣으면 스탬프 개체별 랜덤값이 나옴.
  • Segment by Connectivity와 조합할 때는 alpha 곱하기로 틈 문제를 해결할 것(위 참조).

스태티스틱스 바이 ID (Statistics by ID)

ID(island)별로 Area, Minimum, Maximum 등의 통계를 알려주는 노드임. (별도의 Statistics 노드도 존재함.)

주요 파라미터 / 출력

  • Area: ID별 면적.
  • Minimum / Maximum: Source 입력에 무언가를 연결해야만 출력됨. Ramp Mono(좌→우 증가)를 source로 넣으면 각 ID 영역 내부의 최소값/최대값이 ID별로 출력됨. 램프를 드래그해 보면 각 ID 안에서 최대값을 찾는 것이 확인됨.

팁 / 워크플로

  • Area 활용 예제: 타일 패턴을 Double English Bond로 바꾸고 inset에 seed varying을 주면 타일별 면적이 달라짐 → area 출력을 Ramp Mono(-1로 리맵)에 넣으면 타일 크기 기준으로 특정 타일들만 분리할 수 있음.

UV 맵 바이 ID (UV Map by ID)

ID를 넣으면 ID별 UV 맵을 생성하는 노드임("ID to UV"에 해당하는 기능).

팁 / 워크플로

  • Transform UV 연계: 생성된 UV를 Transform UV에 첫 입력으로, ID를 seed 입력으로 연결하면 Randomize 하위에서 ID별 랜덤 회전·스케일 등이 가능함.
  • UV가 없는 상황에서 핵심적임: Segment by Connectivity는 ID는 주지만 UV는 주지 않음. 노이즈를 Segment by Connectivity에 넣어 만든 ID에 UV Map by ID를 쓰면 ID별 UV가 생기고, 같은 ID로 랜덤화까지 이어갈 수 있음. Tile Pattern처럼 UV와 ID가 모두 나오는 경우가 아닐 때의 해법임.
  • Julia Fractal의 Integer(ID) 출력에 UV Map by ID → UV Sample로 램프를 샘플링하면 완전히 다른 룩을 만들 수 있음.

RGBA 투 RGB (RGBA to RGB)

4채널을 3채널로 잘라내는 변환 노드임(Layer 탭 → Conversion).

팁 / 워크플로

  • 실제로는 RGB와 Alpha로 분리 출력함 — 알파 채널만 따로 분리(isolate)하는 좋은 방법임.
  • Denoise AI처럼 RGBA를 받지 않는 노드 앞에서 캐스팅 용도로도 필수적임.

RGBA 투 모노 (RGBA to Mono / RGB to Mono)

컬러를 단일 채널로 변환하는 노드임.

주요 파라미터

  • 기본 모드: 일반적으로 통용되는 휘도(luminance) 연산으로 그레이스케일 변환함.
  • Average: 전 채널 평균.
  • Red / Green / Blue / Alpha only: 해당 채널만 취함(알파 추출 용도로도 사용 가능).
  • Custom: R/G/B 각각의 가중치를 직접 정의함. 가중치는 자동 정규화되므로 분포 걱정 없이 동작함. 예: R=1, G/B=0이면 빨강 계열만 값이 살아남고, 파랑 분리는 R=0, G=0, B=1로 하면 됨.

팁 / 워크플로

  • infrared 램프를 물려 보면 가중치 변화가 잘 보임.
  • luminance 모드와 average 모드는 같은 입력에서 다른 값을 낼 수 있음 — RGB(1,0,0)과 (0,0,1)은 average로는 같지만 luminance로는 다름. HSV Adjust의 Keep Luminance 개념과 연결되는 지점임.
  • 툰 셰이딩의 값/색 분리(Quantize), Chroma Key의 그림자 추출 등 "값만 뽑는" 모든 워크플로의 출발점임.

모노 투 RGB (Mono to RGB)

흑백을 3채널로 확장하는 노드임. 흑백에서 색을 "생성"할 수는 없으므로 기본은 그레이스케일 그대로이고, 대신 Ramp를 제공해 어떤 값이 어떤 색으로 매핑될지 제어함.

주요 파라미터

  • Ramp: 값→색 매핑. Infrared 같은 프리셋도 있음.

팁 / 워크플로

  • Ramp RGB를 직접 쓰는 것과의 차이: Ramp RGB는 입력을 먼저 리맵(-1~1 범위 등)해야 하지만, Mono to RGB는 리맵 단계를 건너뛸 수 있음 — 노드 파라미터 자체에 리맵 도구가 내장되어 있음.
  • Infrared 프리셋은 프레넬 마스크에 무지개 그라데이션을 입히는 이리데선스 효과 등에 활용됨(고급 참조).

모노 투 RGBA (Mono to RGBA)

흑백을 4채널로 확장하는 노드임. Mono to RGB와 달리 컬러 램프는 없지만 Alpha 입력을 받을 수 있음.

주요 파라미터

  • Alpha 입력: 예: Concentric 램프(가운데 0)를 알파로 넣으면 해당 영역이 잘림. 단 값이 정확히 0(완전 검정)인 곳만 잘림.

팁 / 워크플로

  • 알파를 정확히 적용하려면 Premult를 사용해야 함 — 더 정밀하게 컷됨(Premult 주의사항 참조).
  • 그레이스케일에서 알파 영역을 정의할 때는 Remap으로 원하는 범위를 좁히는 방식이 유용함. Remap의 Threshold 모드로 알파를 찾는 것도 또 다른 방법임.

폴라 투 UV / UV 투 폴라 (Polar to UV / UV to Polar)

극좌표(각도/길이)와 UV(직교 좌표)를 상호 변환하는 노드 쌍임.

주요 파라미터 / 입력

  • Polar to UV: 두 입력을 받음 — Angle(상단 입력), Length(하단 입력). 예제에서는 Radial 램프를 angle로, Concentric 램프를 length로 사용함.
  • UV to Polar: UV Map을 넣으면 역변환으로 Length와 Angle을 출력함.

팁 / 워크플로

  • Polar to UV의 결과 UV를 UV Sample로 샘플링해 타일 패턴 같은 텍스처를 방사형으로 입힐 수 있음.
  • 방사형 패턴 트릭: 각도 쪽에 Multiply Constant를 걸면(정수 배수) 흥미로운 방사형 패턴이 나옴 — 재미있는 패터닝에 좋음.

Houdini Copernicus Ultimate Guide 튜토리얼 정리 · 전체 12편

  1. 00 Houdini Copernicus Ultimate Guide 튜토리얼 정리 index
  2. 01 핵심 개념
  3. 02 생성·패턴 노드
  4. 03 값 조정과 리매핑
  5. 04 블렌딩과 합성
  6. 05 색 보정
  7. 06 필터와 이펙트
  8. 07 SDF와 거리장
  9. 08 UV·왜곡·좌표
  10. 09 지오메트리·3D 연동
  11. 10 ID·세그먼트·변환 유틸리티
  12. 11 파일 입출력과 렌더 파이프라인
  13. 12 프로그래밍과 고급 기능