후디니 Normal Cusp Angle: 각진 모서리와 매끈한 면 나누기
후디니에서 Normal SOP로 N을 만든 박스 모서리가 둥글게 뭉개져 보이면 폴리곤을 더 넣어야 할까요? 반대로 부드럽게 이어져야 할 면에 각진 줄이 생기면 Cusp Angle을 몇 도로 바꿔야 할까요? 실루엣은 그대로인데 빛의 그라데이션만 달라졌다면, 지오메트리보다 N의 클래스부터 확인하세요.
이 문제는 박스의 면 수보다 Normal SOP가 N을 Point에 만들었는지 Vertex에 만들었는지, 그리고 이웃한 면의 노멀 각도가 얼마인지에 따라 달라집니다. 숫자부터 움직이면 모서리는 여전히 뭉개지고, 다른 면까지 예상과 다르게 각질 수 있습니다.
이 글에서는 먼저 포인트와 버텍스가 셰이딩을 어떻게 바꾸는지 살펴봅니다. 이어서 Houdini 19.5.435에서 두 면을 직접 만들어 Cusp Angle별 노멀 개수를 세고, 마지막에 렌더와 FBX에서 확인할 항목을 정리합니다.
Normal SOP가 바꾸는 것은 모양이 아니라 N입니다
조명 아래 놓인 저폴리 박스를 떠올려 보세요. 모서리 위치와 외곽선은 그대로인데 밝은 띠가 모서리를 넘어 옆면까지 부드럽게 이어질 수 있습니다. 이때 화면에서 둥글게 보이는 것은 실제로 둥근 면이 생겨서가 아니라, 면을 밝히는 노멀 방향이 평균됐기 때문입니다.
Normal SOP는 지오메트리의 노멀 속성 N을 만들거나 고칩니다. 포인트 위치 P를 옮기거나 폴리곤을 추가하는 노드는 아닙니다. 따라서 셰이딩이 달라져도 실루엣이 바뀌지 않았다면, 실제 모서리를 베벨링하기 전에 N부터 확인하세요.
면의 경계에서 값이 예상과 다를 때는 속성 자체뿐 아니라 그 속성이 어느 클래스에 저장됐는지도 봐야 합니다. 포인트·버텍스·프리미티브의 차이는 후디니 속성 클래스 확인 방법에서 더 자세히 볼 수 있습니다.
포인트 N은 하나, 버텍스 N은 면 코너마다 하나입니다

후디니에서 Point는 공간상의 위치이고, Vertex는 폴리곤 같은 Primitive가 그 위치를 가리키는 코너 연결입니다. 두 면이 모서리를 공유하면 위치 포인트는 하나지만, 각 면 쪽에는 그 포인트를 참조하는 버텍스가 따로 있습니다.
Add Normals To를 Points로 설정하면 포인트마다 N 하나를 계산합니다. 공유 포인트에 연결된 면들은 같은 포인트 N을 함께 사용합니다. 그래서 한쪽 면만 다른 방향으로 셰이딩해야 하는 하드 엣지를 포인트 N 하나로 나눌 수 없습니다.
Add Normals To를 Vertices로 설정하면 면 코너마다 N을 계산합니다. 같은 위치 포인트에 두 면의 버텍스가 연결돼 있어도, 두 버텍스에 서로 다른 N을 넣을 수 있습니다. 이 차이가 지오메트리의 점을 실제로 복제하지 않고도 매끈한 경계와 각진 경계를 표현하게 해 줍니다.
기본값은 60도지만, 모든 모서리에 맞는 값은 아닙니다
Houdini 19.5.435에서 새 Normal SOP의 기본값은 Add Normals To가 Vertices, Cusp Angle이 60도, Weighting Method가 By Vertex Angle이었습니다. SideFX 문서 페이지에는 기본값이 적혀 있지 않아, 이 숫자는 해당 버전의 파라미터를 직접 읽어 확인한 값입니다.
Cusp Angle은 같은 포인트를 공유하는 주변 버텍스 노멀을 평균할지 분리할지 정하는 임계값입니다. Weighting Method는 평균할 때 각 면의 기여도를 어떤 방식으로 계산할지를 고릅니다. 둘은 서로 다른 설정입니다.
- By Vertex Angle: 각 폴리곤의 코너 각도를 가중치로 씁니다. SideFX 문서는 슬리버 폴리곤 영향을 줄이고 삼각분할에 덜 민감하도록 설계됐다고 설명합니다.
- Each Vertex Equally: 주변 버텍스가 같은 비중으로 기여하는 빠른 방식입니다. 문서상 By Vertex Angle보다 덜 정확한 접근입니다.
- By Face Area: Point N을 계산할 때 면적이 큰 폴리곤의 버텍스가 더 크게 기여합니다. Cusp Angle을 바꾸는 방식은 아닙니다.
두 면으로 Cusp Angle을 바꿔 세어 봤습니다
감으로 고르지 않도록 공유 엣지를 가진 사각형 두 면을 만들었습니다. Houdini 19.5.435 Commercial의 hython에서 Normal SOP를 Vertices와 By Vertex Angle로 두고, 양쪽 공유 포인트에 연결된 고유한 버텍스 N 방향이 몇 개인지 셌습니다.
두 면의 코너 각도는 같은 90도로 맞췄고, 면 법선 사이 각도와 Cusp Angle을 각각 바꿨습니다. 아래 숫자는 공유 포인트 한 곳에 연결된 고유 버텍스 노멀 방향의 개수입니다. 양 끝 공유 포인트에서도 같은 결과가 나왔습니다.
| 두 면 법선 사이 각도 | Cusp 30도 | Cusp 60도 | Cusp 90도 | Cusp 120도 | Cusp 180도 |
|---|---|---|---|---|---|
| 0도 | 1 | 1 | 1 | 1 | 1 |
| 30도 | 1 | 1 | 1 | 1 | 1 |
| 45도 | 2 | 1 | 1 | 1 | 1 |
| 60도 | 2 | 1 | 1 | 1 | 1 |
| 90도 | 2 | 2 | 1 | 1 | 1 |
| 120도 | 2 | 2 | 2 | 1 | 1 |
| 179도 | 2 | 2 | 2 | 2 | 1 |
숫자 1은 공유 포인트에서 두 면의 버텍스 N이 평균되어 한 방향만 남았다는 뜻입니다. 숫자 2는 면마다 다른 방향의 N이 유지됐다는 뜻입니다. 면 법선 사이 각도와 Cusp Angle이 같은 60도, 90도, 120도 경계에서도 평균 결과가 나왔습니다.
단면 도구: 면 각도와 Cusp Angle을 직접 맞춰 보세요
두 면의 셰이딩 경계 보기
면 법선 사이 각도와 Cusp Angle을 움직이면 공유 포인트에서 노멀이 평균되는지 분리되는지 바뀝니다.
이 그림은 두 면, 같은 코너 각도, By Vertex Angle을 단순화한 2D 단면입니다. 180도 반대 법선은 특수 경계라 면 각도에서 제외했습니다. 3개 이상 면이 만나는 메시에서는 주변 면 전체를 확인하세요.
도구에서 면 법선 사이 각도를 Cusp Angle보다 크게 두면 두 방향이 따로 남습니다. 반대로 Cusp Angle을 같거나 더 크게 두면 공유점의 N이 평균됩니다. 이제 이 판단을 Normal SOP의 설정과 연결할 수 있습니다.
판정 기준은 면 각도와 Cusp Angle의 크기 비교입니다
면 법선 사이 각도가 Cusp Angle 이하이면 노멀을 평균하고, 더 크면 버텍스 노멀을 분리합니다. 따라서 평평한 면을 이어 보이게 하려면 해당 각도를 포함하는 Cusp Angle이 필요하고, 하드 엣지를 남기려면 Cusp Angle을 그 각도보다 낮게 두세요.
예를 들어 두 면 법선의 각도가 90도라면 Cusp Angle 60도에서는 두 버텍스 노멀이 분리됐고, Cusp Angle 90도에서는 하나로 평균됐습니다. 90도 경계가 포함된 결과는 Houdini 19.5.435에서 확인했습니다.
실제 메시에는 면이 더 많이 붙고 코너 각도도 다를 수 있습니다. 그러므로 60도를 모든 모델의 정답으로 보지 말고, Geometry Spreadsheet에서 N의 클래스를 본 뒤 의도한 엣지 근처에서 값을 움직여 보세요. 너무 많은 면이 한꺼번에 매끈해지면 Cusp Angle을 낮추거나 Normal SOP의 Group으로 대상 엣지를 좁힐 수 있습니다.
렌더에서는 기존 N을, FBX에서는 내보내기 옵션을 확인하세요
Normal SOP에서 만든 N이 지오메트리에 남아 있으면 렌더러의 자동 노멀 계산이 이를 어떻게 취급하는지 확인해야 합니다. SideFX Mantra 문서의 Automatically Compute Normals 설명은 N이 있으면 그대로 두고, 없을 때 자동으로 만들 수 있다고 안내합니다. Karma의 Render Geometry Settings도 노멀 없는 지오메트리에 적용할 Cusp Angle을 설명합니다.
따라서 렌더가 뷰포트와 다르면 Cusp Angle만 다시 올리기 전에 렌더러가 보는 지오메트리에 N이 있는지, 그 N이 Point인지 Vertex인지 살펴보세요. 이 동작은 렌더러별 설정이 있으므로 최종 카메라와 재질로 렌더 테스트를 해야 합니다.
FBX 내보내기는 point normal과 vertex normal을 지원합니다. 다만 ROP FBX의 Compute Smoothing Groups는 기존 vertex-mapped normals를 바탕으로 스무딩 그룹 정보를 계산해 저장하는 옵션입니다. N 자체를 만드는 설정과는 구분하세요. 받는 프로그램에서 어떤 방식으로 노멀을 가져오거나 다시 계산하는지는 실제 임포트 결과로 확인해야 합니다.
한 줄 정리: 실루엣이 그대로면 N의 클래스부터 봅니다
모서리 위치와 외곽선이 그대로인데 셰이딩만 둥글게 흐르면 실제 면을 추가하기보다 N이 저장된 클래스를 확인하세요. Point N은 공유 포인트에 하나, Vertex N은 각 면 코너마다 따로 둘 수 있습니다.
Normal SOP의 Cusp Angle은 모든 메시의 모서리를 똑같이 만드는 마법 숫자가 아닙니다. 면 법선 각도와 임계값을 비교해, 어느 경계까지 평균할지 정하는 값입니다.
참고 자료
vfx 잡학지식

댓글 0
첫 댓글을 남겨보세요.