본문 바로가기
vfxai 잡학지식 vfxai 잡학지식

후디니 Measure SOP로 면적·둘레·곡률 재기

vfx 잡학지식 읽는 시간 약 12분

Measure SOP에서 면적을 쟀는데 숫자가 여러 개로 나오거나, 곡률 속성이 다른 노드에서 보이지 않으면 무엇이 잘못된 걸까요? 사각형 Grid에서 면마다 2가 나오는 경우와 전체 8이 나오는 경우 중 어느 쪽이 맞을까요? 답은 어떤 값을 선택했느냐뿐 아니라 그 값을 어느 클래스에, 어디까지 합산했느냐에 달려 있습니다.

이 글에서는 Houdini 22.0 Measure 2.0의 설정 이름을 따라가며 Grid·Box에서 면적과 둘레를 확인합니다. 끝에는 측정 종류와 누적 범위를 고르면 속성 이름·클래스가 나오는 설정 도우미도 넣었습니다.

1. Measure SOP 설정은 세 항목으로 나뉩니다

후디니 22 Measure SOP 기본값으로 4×2 Grid 폴리곤마다 area 2.0이 생긴 Geometry Spreadsheet와 파라미터 화면
Houdini 22.0.466 Apprentice에서 Size 4×2, Rows·Columns 3인 Grid(폴리곤 4개)에 Measure를 기본값으로 건 화면입니다. Element Type은 Primitives, Measure는 Area, Accumulate는 Per Element이고, primitive 속성 area가 네 폴리곤 모두 2.0으로 나왔습니다.

Measure 2.0에서 먼저 보는 값은 Element Type, Measure, Accumulate입니다. Element Type은 속성이 붙을 요소를, Measure는 잴 양을, Accumulate는 값을 합칠 범위를 정합니다. 선택이 끝나면 Output의 Attribute Name에서 이름을 확인할 수 있습니다.

원하는 결과Element TypeMeasureAccumulate나오는 속성
폴리곤마다 면적PrimitivesAreaPer Elementarea · Primitive
조각 전체 면적을 각 면에 기록PrimitivesAreaPer Piecearea · Primitive
전체 메시 면적PrimitivesAreaThroughoutarea · Primitive, 각 면에 같은 값
점마다 곡률 측정값PointsCurvaturePer Elementcurvature · Point

이 표에서 클래스는 속성이 붙는 단위입니다. Primitive 속성은 Geometry Spreadsheet의 Primitives 탭에서, Point 속성은 Points 탭에서 확인하세요. 기본 이름은 면적이 area, 둘레가 perimeter, 곡률이 curvature입니다. Attribute Name에서 다른 이름으로 바꿀 수 있습니다.

단, Point의 area는 점 하나에 실제 면이 붙어 있다는 뜻이 아닙니다. 점이 주변 표면에서 차지하는 몫을 기록한 값입니다. 모든 Point 값을 더하면 표면 전체 면적이 됩니다. 면마다 면적을 읽으려면 Primitives를 선택하세요.

Measure 2.0 설정 도우미

재고 싶은 값과 합칠 범위를 고르세요. Measure 파라미터와 기본 출력 속성·클래스를 정리해 보여 줍니다.

Measure SOP 설정

Measure
Element Type
Accumulate
출력 속성
값의 의미

도우미의 결과는 설정 선택을 빠르게 정리하는 용도입니다. 입력 geometry가 비다각형이거나 Group을 지정하면 공식 문서의 지원 조건도 확인하세요.

2. Grid와 Box는 이론값으로 확인하세요

Grid를 Size X=4, Y=2, Rows=3, Columns=3으로 만들면 9개 점과 4개 사각 primitive가 생깁니다. Measure 2.0 기본 설정은 Element Type=Primitives, Measure=Area, Accumulate=Per Element입니다. 이때 각 면의 area는 2입니다. Geometry Spreadsheet의 Primitives 탭에서 네 값이 모두 2인지 확인하세요.

Accumulate를 Throughout으로 바꾸면 전체 면적 8이 네 primitive에 반복됩니다. Output에서 Total Attribute Name을 켜면 전체값을 Detail 속성으로 한 번 저장할 수도 있습니다. 이 두 방식은 같은 면적을 계산하지만, 뒤 노드가 읽는 클래스가 다릅니다.

Size X=2, Y=4, Z=6인 Box에서는 면적 속성 여섯 값이 8, 24, 8, 24, 12, 12이고 합은 88입니다. 이론식 2 × (2×4 + 2×6 + 4×6)과 같습니다. 여기까지는 면 하나의 area와 메시 전체 면적을 직접 대조할 수 있습니다.

도형·설정Measure 결과이론값
Grid 4×2, 4개 사각면면마다 area=2, 전체=84×2=8
Box 2×4×6면 area 합=882×(8+12+24)=88
반지름 1인 polygon Sphere, Rows 32·Columns 64면 area 합=12.540164π≈12.56637, 차이 약 -0.21%

구는 다각형 메시로 근사되므로 이 해상도에서 이론값과 정확히 같지 않습니다. 다른 해상도·표면 타입이면 오차도 달라집니다. 이 실측은 Houdini 19.5.435 hython에서 했으며, Houdini 22.0의 파라미터 이름은 SideFX 공식 문서를 기준으로 대조했습니다.

3. Per Element·Per Piece·Throughout는 합치는 범위가 다릅니다

Per Element는 각 요소가 차지하는 표면 몫을 기록합니다. 앞의 Grid에서는 네 면에 각각 2가 생깁니다. 조각별 합계가 필요하면 먼저 Connectivity SOP 등으로 piece 속성을 만든 다음, Accumulate=Per Piece를 고르고 Piece Attribute에 그 이름을 넣으세요. 기본 입력 이름은 class입니다. 같은 조각에 속한 모든 primitive가 조각 전체 area를 받습니다.

전체 geometry나 Group을 하나로 계산할 때는 Throughout을 고르세요. 면적이라면 값이 모든 요소에 반복되고, 필요하면 Output의 Total Attribute Name 옵션으로 Detail 속성에도 전체값을 기록할 수 있습니다. Detail은 하나의 숫자를 읽을 때, Primitive는 각 면에서 비교할 값을 사용할 때 알맞습니다.

둘레는 이 누적 차이가 특히 중요합니다. Grid의 각 사각면 perimeter는 6이지만, 전체 boundary 길이는 바깥 테두리 12입니다. Box처럼 닫힌 표면 전체에는 열린 경계가 없으므로 Throughout perimeter는 0이 될 수 있습니다. 모든 면 둘레의 합이 필요하다면 Per Element 결과를 따로 합산하세요.

Per Piece 값의 개수가 예상보다 많으면 piece 속성의 개수만 보지 말고 메시도 살펴보세요. Measure 2.0의 Refine To Connected Manifold Pieces가 켜져 있으면 non-manifold edge 등을 경계로 조각이 더 나뉠 수 있습니다. SideFX 포럼의 Houdini 18.0 사례에서도 비매니폴드 geometry가 추가 면적값의 원인으로 지목됐습니다. PolyDoctor로 non-manifold topology를 점검한 뒤 다시 확인하세요.

4. area·perimeter·curvature를 뒤 노드에 연결하세요

Primitive area가 있으면 Group Expression에서 @area < 2처럼 면적 기준을 만들어 작은 면만 고를 수 있습니다. 숫자 2는 씬 단위의 제곱이므로, 씬 스케일이 다르면 임계값도 바뀝니다. 색을 칠할 때는 area나 curvature를 원하는 범위로 재매핑한 뒤 색 입력으로 사용하세요.

Scatter에서 Density Attribute는 위치별 밀도에 곱해지는 가중치입니다. 표면 면적은 By Density의 예상 개수에 이미 반영됩니다. 따라서 primitive area를 그대로 Density Attribute로 넣으면 면적이 한 번 더 가중될 수 있습니다. 균일한 면적당 분포가 목적이면 raw area를 밀도 속성으로 넣지 말고, 필요한 부분에만 가중치를 주는 마스크를 만들어 사용하세요. Scatter의 예상 개수와 Density Scale 계산은 후디니 Scatter 포인트 수와 밀도: 면적당 개수 계산을 참고하세요.

curvature는 면이 얼마나 굽는지 하나의 값으로 단순화하는 방식이 아닙니다. Gaussian은 두 주 곡률의 곱, Mean은 평균, Principal은 작은 값이나 큰 값을 골라 곡률·방향·벡터로 보고, Curvedness는 두 주 곡률의 크기를 한 값으로 요약합니다. 주름·모서리 마스크처럼 굽은 정도의 크기를 쓰려면 Curvedness를 시작점으로 볼 수 있고, 안팎의 부호가 필요하면 Mean이나 Principal 설정을 검토하세요.

곡률은 메시 해상도와 측정 옵션에 따라 달라집니다. Make Scale Independent와 Divide by Element Area는 값의 스케일 의미를 바꾸므로, 다른 크기의 모델을 같은 임계값으로 비교하기 전에 두 옵션과 입력 해상도를 맞추세요. 색 표시 범위를 조절하는 것만으로 실제 곡률 값이 바뀌는 것은 아닙니다. 수치를 0~1 가중치로 바꾸는 방법은 후디니 fit·fit01·clamp로 값 범위 바꾸기에서 이어서 확인할 수 있습니다.

여기서 핵심 질문에 답하겠습니다. 면 하나를 읽을지 조각·전체 합계를 읽을지는 Accumulate가, 속성이 Points와 Primitives 중 어디에 붙을지는 Element Type이 정합니다. 이 두 항목을 먼저 고르면 면적·둘레·곡률을 어떤 후속 노드에 연결할지도 분명해집니다.

5. Measure 2.0과 구형 Measure의 이름을 구분하세요

Houdini 22.0의 Measure 2.0에서 Element Type·Measure·Accumulate가 보이면 위 설정을 따르면 됩니다. 파라미터가 Type·Override Name·Curvature Type으로 되어 있고 Curvature Type에 All·Concave·Convex가 보이면 구형 Measure 노드입니다. 두 노드는 측정과 기본 이름은 비슷해도 옵션 묶음과 곡률 선택지가 다릅니다. 노드 이름만 보지 말고 파라미터 라벨을 확인하세요.

속성 이름을 확인할 때는 Geometry Spreadsheet에서 실제 출력 class를 보세요. Per Element에서는 면마다 다른 값이 나오는지, Per Piece에서는 같은 조각 값이 반복되는지, Throughout에서는 전체값이 반복되는지 확인하면 됩니다. 곡률은 입력 표면과 설정에 따라 달라지므로, 이론값 하나보다 같은 설정에서 메시 간 차이를 비교하는 편이 안전합니다.

한 줄 정리

속성의 클래스는 Element Type으로, 합산 범위는 Accumulate로 정하세요. 면·조각·전체 중 어디의 값을 쓸지 먼저 정한 뒤 Geometry Spreadsheet에서 속성 이름과 클래스를 확인하세요.

vfx 잡학지식

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.