Blender 5.2 노드 물리 입문: Cloth Dynamics 노드로 바람에 날리는 천 깃발 만들기
Blender 5.2에 실험 기능으로 들어온 노드 물리(XPBD)로 깃발 하나를 만들어 봅니다. 깃대에 묶기, 깃대와 부딪히기, 바람과 돌풍 넣기, 굽기와 EEVEE 렌더까지 순서대로 따라 합니다.
한국어English
기준: Blender 5.2 LTS(캡처는 5.2.1, 영어 화면, 기본 단축키), 렌더 엔진 EEVEE. 2026년 11월에 확인했습니다. 그림은 모두 실제 Blender 화면과 EEVEE 렌더입니다. 빨간 번호와 테두리는 설명을 위해 덧그렸습니다.
Blender 5.2에는 노드로 짜는 물리가 새로 들어왔습니다. 공식 출시 페이지는 이것을 머리카락과 천을 위한 "새로운 절차적 방식"이라고 소개하고, 그 바탕인 XPBD Solver 노드를 실험 기능이라고 적었습니다. 실험 기능이라는 말은 이름과 동작이 다음 판에서 바뀔 수 있다는 뜻입니다. 이 글의 메뉴와 노드 이름은 5.2.1 화면 그대로 적었습니다.
이 글에서는 깃대에 묶인 깃발 하나를 처음부터 만듭니다. 결과는 그림 1과 같습니다. 노드가 처음이라면 Blender 지오메트리 노드 입문을 먼저 읽고 오면 훨씬 쉽습니다.
그림 1. 이 글에서 만드는 깃발. 90번째 프레임을 EEVEE로 렌더한 그림 (Blender 렌더)
이 글을 마치면 아래를 할 수 있습니다.
- 깃발용 평면과 깃대를 만들고 깃대 쪽 점을 "묶을 점"으로 표시합니다.
- Cloth Dynamics (Experimental) 노드로 천을 떨어뜨립니다.
- 깃대에 Collider를 달아 천이 깃대를 뚫지 않게 합니다.
- Custom Force 노드로 바람과 돌풍을 넣습니다.
- 시뮬레이션을 굽고 EEVEE로 렌더합니다.
1. 예전 천 시뮬레이션과 노드 물리의 차이
천을 흉내 내는 기능은 예전부터 있었습니다. 속성 편집기의 물리(Physics) 탭에 있는 Cloth 단추가 그것입니다(그림 2의 ①). 단추 하나로 켜고, 값은 정해진 칸에서 고릅니다.
노드 물리는 같은 일을 노드로 이어서 합니다. 비유하면 예전 방식은 메뉴가 정해진 식당이고, 노드 물리는 재료와 조리 순서를 내가 고르는 주방입니다. 바람의 세기를 위치마다 다르게 주거나, 특정 점만 묶는 일을 노드 몇 개로 바꿀 수 있습니다. 노드로 만든 시뮬레이션은 물리 탭 아래쪽의 Simulation Nodes 묶음에서 굽습니다(그림 2의 ②).
그림 2. 물리 탭. ① 예전 방식의 Cloth 단추 ② 노드 시뮬레이션을 굽는 Simulation Nodes 묶음 (Blender 화면 캡처)
XPBD는 이 노드 물리가 쓰는 계산 방법의 이름입니다. 천을 "점과 점을 잇는 짧은 끈의 그물"로 보고, 매 순간 끈이 너무 늘어나거나 접히지 않게 점의 위치를 고쳐 나갑니다. 이 글에서는 XPBD Solver 노드를 직접 다루지 않고, Blender가 미리 만들어 둔 Cloth Dynamics (Experimental) 노드 그룹을 씁니다. 노드 그룹은 노드 여러 개를 상자 하나로 묶은 것입니다. 상자 안에 XPBD 계산이 들어 있습니다.
2. 깃발과 깃대 만들기
시작 상태: 새 파일(File ‣ New ‣ General)의 기본 큐브에서 시작합니다.
따라 하기:
- 기본 큐브를 고르고
X→ Delete로 지웁니다. Shift+A‣ Mesh ‣ Cylinder로 원기둥을 넣습니다. 왼쪽 아래 Add Cylinder 칸을 펼쳐 Vertices24, Radius0.04 m, Depth3.2 m, Location Z1.6 m를 넣습니다. 이것이 깃대입니다. 이름을Pole로 바꿉니다(아웃라이너에서 두 번 클릭).Shift+A‣ Mesh ‣ Grid로 격자 평면을 넣습니다. Add Grid 칸에서 X Subdivisions48, Y Subdivisions32, Size1 m, Location X0.95 m, Location Z2.5 m, Rotation X90°를 넣습니다. 이름을Flag로 바꿉니다.N으로 사이드바를 열고 Scale X에1.8, Scale Y에1.2를 넣습니다.Ctrl+A‣ All Transforms를 누릅니다. 크기와 회전이 물체 속에 굳어서, 시뮬레이션이 실제 크기 그대로 계산됩니다.
격자 칸을 촘촘하게 나누는 까닭은 천이 칸 단위로만 접히기 때문입니다. 칸이 적으면 주름 대신 각진 꺾임이 생깁니다. 이제 깃발은 가로 1.8 m, 세로 1.2 m이고 왼쪽 가장자리가 깃대 바로 옆(X 0.05 m)에 있습니다.
3. 깃대 쪽 점을 "묶을 점"으로 표시하기
시작 상태: 앞 절의 Flag에서 이어 갑니다.
천은 그대로 두면 바닥으로 떨어집니다. 깃대에 붙은 왼쪽 한 줄은 제자리에 묶어야 합니다. 이 표시를 꼭짓점 그룹(Vertex Group)으로 합니다. 꼭짓점 그룹은 점에 붙이는 이름표입니다. 이름표가 붙은 점만 골라 "이 점은 묶어 둬"라고 노드에 알려 줄 수 있습니다.
따라 하기:
- Flag를 고르고
Tab으로 편집 모드에 들어갑니다.1로 점 선택 모드로 바꿉니다. - 숫자패드
1로 앞에서 본 화면으로 바꿉니다. Alt+A로 모두 해제한 뒤, 마우스로 깃발 맨 왼쪽 세로 한 줄만 감싸 끌어 고릅니다(그림 3의 ①). 아래 상태 막대가Verts:33/1,617이면 한 줄(33개)만 고른 것입니다(그림 3의 ④).- 속성 편집기의 데이터(Data) 탭(초록 삼각형 아이콘)을 엽니다. Vertex Groups 칸 오른쪽의
+를 누르고, 생긴 그룹 이름을 두 번 클릭해pin으로 바꿉니다(그림 3의 ②). - Weight가
1.000인지 보고 Assign을 누릅니다(그림 3의 ③). Tab으로 물체 모드로 돌아갑니다.
그림 3. 묶을 점 표시. ① 고른 왼쪽 한 줄 ② 꼭짓점 그룹 pin ③ Assign 단추 ④ 고른 점 33개 (Blender 화면 캡처)
4. Cloth Dynamics 노드로 천 떨어뜨리기
시작 상태: 앞 절에서 pin 그룹을 만든 Flag에서 이어 갑니다.
따라 하기:
- 화면 위쪽의 Geometry Nodes 작업 공간 탭을 누릅니다. Flag가 골라져 있는지 확인합니다.
- 가운데 노드 편집기 머리줄의 New를 누릅니다. Group Input과 Group Output 두 상자가 생기고, Flag에 Geometry Nodes 모디파이어가 붙습니다.
- 마우스를 노드 편집기 위에 두고
Shift+A‣ Simulation ‣ **Cloth Dynamics (Experimental)**을 고릅니다(그림 4). 상자를 Group Input과 Group Output을 잇는 선 위에 놓으면 저절로 끼워집니다. Shift+A를 누르고 메뉴 맨 위 Search... 칸에Named Attribute를 쳐서 넣습니다. 종류를Float로, 이름 칸에pin을 넣습니다. 메뉴 위치가 헷갈리는 노드는 이렇게 이름으로 찾으면 됩니다.- Named Attribute의 Attribute 출력을 Cloth Dynamics의 Pin Group 입력에 끌어 잇습니다(그림 5의 ①②).
그림 4. Add 메뉴의 Simulation 묶음. ① Simulation ② Cloth Dynamics (Experimental) ③ Collider ④ Custom Force. 목록에 Custom Effector와 Set Effector가 두 번씩 보이지만, 이 글에서는 쓰지 않습니다 (Blender 화면 캡처)
그림 5. 완성한 천 노드. ① Named Attribute(pin) ② Pin Group 입력 ③ Bendiness ④ Effectors Collection 칸 ⑤ Effectors 입력. ③~⑤는 5~7절에서 씁니다 (Blender 화면 캡처)
이제 타임라인을 1번 프레임에 두고 Space로 재생합니다. 천이 아래로 처지기 시작합니다. 노드 시뮬레이션은 앞 프레임의 결과로 다음 프레임을 계산합니다. 그래서 처음 재생할 때는 조금 느리고, 1번 프레임으로 돌아가면 처음부터 다시 계산합니다. 재생을 멈출 때는 Space를 한 번 더 누릅니다.
Cloth Dynamics 노드의 기본값은 Substeps 5, Constraint Steps 15, Mass 1, Gravity Z -9.81입니다. Substeps는 한 프레임을 몇 번 잘게 나눠 계산할지, Constraint Steps는 그 한 번 안에서 "끈 길이 맞추기"를 몇 번 되풀이할지입니다. 둘 다 키우면 천이 덜 늘어나지만 계산이 느려집니다. 처음에는 기본값 그대로 둡니다.
5. 깃대를 뚫고 지나가는 천 막기: Collider
시작 상태: 앞 절의 장면에서 이어 갑니다.
바람 없이 재생하면 천이 축 늘어지는데, 그림 6의 ①처럼 깃대를 뚫고 반대편으로 넘어갑니다. 천은 깃대가 있는 줄 모르기 때문입니다. 깃대를 충돌체(Collider)로 알려 주면 그림 6의 ②처럼 깃대에 걸쳐집니다. 충돌체는 "이 물체는 단단한 벽이니 통과하지 마"라는 표시입니다.
그림 6. 바람이 없을 때 90번째 프레임. ① 충돌체 없음: 천이 깃대를 뚫음 ② 깃대에 Collider를 단 뒤: 천이 깃대에 걸침 (Blender 렌더)
충돌체는 깃대 쪽에 답니다. 그리고 깃대를 Effectors라는 컬렉션에 넣어 천 노드에 알려 줍니다. 효과기(Effector)는 천에 영향을 주는 것들의 통칭입니다. 효과기에는 충돌체, 힘, 사용자 효과기 세 종류가 있습니다.
따라 하기:
- 아웃라이너에서
Pole을 고릅니다. 3D 뷰포트에서M‣ New Collection을 누르고 이름을Effectors로 넣습니다. 깃대가 새 컬렉션으로 옮겨집니다(그림 7의 ①). - Pole이 골라진 채로 노드 편집기 머리줄의 New를 누릅니다. 깃대에도 Geometry Nodes 모디파이어가 붙습니다(그림 7의 ③).
Shift+A‣ Simulation ‣ Collider를 넣고 Group Input과 Group Output 사이 선 위에 놓습니다(그림 7의 ②). Friction 기본값은0.200입니다.- 다시
Flag를 고릅니다. Cloth Dynamics 상자의 Effectors 묶음을 펼치고, 첫 칸(그림 5의 ④)을 눌러Effectors컬렉션을 고릅니다. - 1번 프레임으로 돌아가 다시 재생합니다. 천이 깃대에 걸치면 됩니다.
그림 7. 깃대 쪽 설정. ① Effectors 컬렉션에 든 Pole ② Collider 노드 ③ 깃대의 Geometry Nodes 모디파이어. 그림은 노드 그룹 이름을 Pole Collider로 바꾼 화면입니다 (Blender 화면 캡처)
6. 바람 넣기: Custom Force
시작 상태: 앞 절의 장면에서 Flag를 고른 채로 이어 갑니다.
바람은 힘(Force)입니다. 천의 모든 점을 같은 방향으로 계속 미는 손이라고 생각하면 됩니다.
따라 하기:
- Flag의 노드 편집기에서
Shift+A‣ Simulation ‣ Custom Force를 넣습니다. - Custom Force의 Mode가
Field인지 봅니다. - Force 칸에 X
12, Y3.6, Z0을 넣습니다. 오른쪽(+X)으로 세게, 카메라 반대쪽(+Y)으로 조금 미는 바람입니다. - Custom Force의 Force 출력을 Cloth Dynamics의 Effectors 입력(그림 5의 ⑤)에 잇습니다.
- 1번 프레임에서 다시 재생합니다. 깃발이 오른쪽으로 펴집니다.
바람이 한결같으면 깃발이 거의 그대로 펴진 채 멈춥니다(그림 9의 ①). 실제 바람처럼 세졌다 약해지게 하려면 돌풍을 섞습니다.
따라 하기(돌풍):
Shift+A‣ Texture ‣ Noise Texture를 넣고 차원을4D, Scale을1.5로 둡니다. 노이즈 텍스처는 자연스럽게 출렁이는 무늬를 만드는 노드입니다.Shift+A‣ Search...로 Position과 Scene Time을 찾아 넣습니다. Position을 노이즈의 Vector에, Scene Time의 Seconds를 노이즈의 W에 잇습니다. 시간이 흐르면 무늬도 흘러갑니다.- Search...로 Vector Math 노드를 찾아 세 개를 차례로 넣습니다. 첫째는 Subtract에
0.5, 0.5, 0.5, 둘째는 Scale에18, 셋째는 Add에12, 3.6, 0입니다. 노이즈 Color → Subtract → Scale → Add 순서로 잇습니다. - Add의 출력을 Custom Force의 Force 입력에 잇습니다(그림 8). 3단계에서 Force 칸에 넣었던 값은 이제 Add 노드가 대신 넣어 줍니다.
그림 8. 돌풍 노드. ① Noise Texture(4D) ② 기본 바람 12, 3.6, 0을 더하는 Add ③ Custom Force (Blender 화면 캡처)
Subtract로 0.5를 빼는 까닭은 노이즈 값이 0~1 사이라서입니다. 0.5를 빼면 -0.5~0.5가 되어, 기본 바람보다 세지기도 하고 약해지기도 합니다. Scale 값이 클수록 돌풍이 거칠어집니다.
그림 9. 90번째 프레임 비교. ① 한결같은 바람(12, 3.6, 0) ② 돌풍을 섞은 바람 (Blender 렌더)
7. 값 바꿔 보기: Bendiness
시작 상태: 앞 절의 돌풍 장면에서 이어 갑니다.
Cloth Dynamics의 Bendiness(그림 5의 ③)는 천이 얼마나 쉽게 접히는지입니다. 값이 클수록 천이 더 잘 구부러집니다. 기본값 0.050과 1.0을 같은 프레임에서 비교하면 그림 10과 같습니다. 값을 키운 쪽이 더 흐느적거리고 잔주름이 많습니다.
그림 10. 같은 바람에서 90번째 프레임. ① Bendiness 0.05 ② Bendiness 1.0 (Blender 렌더)
따라 하기: Bendiness에 1을 넣고 1번 프레임부터 다시 재생해 비교합니다. 비교가 끝나면 0.05로 되돌립니다.
얇은 비단 깃발은 값을 키우고, 두꺼운 캔버스 천은 값을 줄이는 식으로 고릅니다. 천이 고무줄처럼 늘어나 보이면 Stretchiness를 0에 가깝게 두고 Constraint Steps를 키웁니다.
8. 굽기와 EEVEE 렌더
시작 상태: 앞 절에서 Bendiness를 0.05로 되돌린 장면에서 이어 갑니다.
재생할 때 계산한 결과는 임시 기억(캐시)이라 장면을 바꾸면 사라집니다. 굽기(Bake)는 이 결과를 파일처럼 고정해 두는 일입니다. 반찬을 미리 만들어 냉장고에 넣어 두는 것과 같습니다. 렌더하기 전에는 꼭 굽습니다. 굽지 않고 애니메이션 렌더를 돌리면 천이 처음 모양 그대로 멈춰 있을 수 있습니다.
따라 하기:
- 타임라인의 End를
120으로 둡니다(30 fps에서 4초). - Flag를 고르고 속성 편집기의 물리(Physics) 탭을 엽니다. 아래쪽 Simulation Nodes 묶음의 Bake를 누릅니다(그림 11의 ②). 끝날 때까지 기다립니다.
- 렌더(Render) 탭에서 Render Engine이
EEVEE인지 봅니다. 출력(Output) 탭에서 해상도를960×540으로 둡니다. - 90번째 프레임으로 가서
F12를 누르면 그림 1과 같은 한 장이 나옵니다. 영상은Ctrl+F12로 렌더합니다.
그림 11. 굽기 단추. ① Calculate to Frame ② Bake. 오른쪽 휴지통 단추는 구운 결과를 지웁니다 (Blender 화면 캡처)
Calculate to Frame(그림 11의 ①)은 지금 프레임까지 미리 계산만 해 두는 단추입니다. 값을 바꾼 뒤 다시 구우려면 휴지통 단추로 구운 결과를 먼저 지웁니다. 렌더 설정이 처음이라면 Blender 렌더 설정 입문을, EEVEE가 무엇인지는 빠른 EEVEE, 정확한 Cycles를 보세요.
연습 문제
- 바람 Add 노드의 Y 값을
-3.6으로 바꾸고, 깃발이 어느 쪽으로 휘는지 보세요. - Noise Texture의 Scale을
0.5와4로 바꿔 보고, 돌풍의 결이 어떻게 달라지는지 적어 보세요. - Cloth Dynamics의 Mass를
3으로 올리면 같은 바람에서 깃발이 더 펴지는지, 덜 펴지는지 확인합니다. - 깃대 아래에 UV Sphere를 하나 놓고 Effectors 컬렉션에 넣은 뒤 Collider를 달아, 천이 공에도 걸리게 해 보세요. 이 장면은 저장해 두세요.
자주 하는 실수와 해결
| 증상 | 까닭 | 해결 |
|---|---|---|
| 깃발 전체가 바닥으로 떨어진다 | Pin Group에 아무것도 이어지지 않았거나, 이름이 pin과 다름 | Named Attribute의 종류 Float, 이름 pin을 확인하고 Pin Group에 잇기 |
| 깃대 쪽만 남고 나머지가 묶인다 | 반대쪽 점을 골라 Assign함 | 편집 모드에서 그룹의 Select로 묶인 점 확인, 왼쪽 한 줄만 다시 Assign |
| 천이 깃대를 뚫는다 | Effectors Collection 칸이 비었거나, 깃대가 컬렉션 밖에 있음 | 깃대가 Effectors 컬렉션 안에 있는지, Cloth 노드 Effectors 칸에 그 컬렉션이 들었는지 보기 |
| 값을 바꿔도 결과가 그대로다 | 이미 구운 결과를 보고 있음 | 물리 탭 휴지통 단추로 구운 결과를 지우고 다시 굽기 |
| 영상 렌더에서 천이 움직이지 않는다 | 굽지 않고 애니메이션 렌더를 돌림 | 8절 2단계대로 Bake를 먼저 누르기 |
| 천이 각지게 꺾인다 | 격자 칸이 너무 적음 | Grid의 Subdivisions를 늘려 다시 만들기 |
| 재생이 매우 느리다 | Substeps·Constraint Steps를 크게 올림 | 기본값(5, 15)으로 되돌리고 격자 칸 수도 줄이기 |
한 줄 정리
깃대 쪽 점은 꼭짓점 그룹으로 묶고, 부딪힐 물체는 Collider + Effectors 컬렉션, 바람은 Custom Force, 렌더 전에는 Bake.
다음 단계로는 같은 Simulation 메뉴의 Hair Dynamics로 머리카락을 흔들어 볼 수 있습니다. 모디파이어가 아직 낯설다면 모디파이어란? 원본을 망치지 않고 모양 바꾸기를 함께 보세요.
참고 자료
- Blender 5.2 LTS 출시 페이지(노드 물리, XPBD Solver, 효과기): https://www.blender.org/download/releases/5-2/
- Blender 5.2 매뉴얼, 지오메트리 노드: https://docs.blender.org/manual/en/latest/modeling/geometry_nodes/index.html
- 단축키: 재생
Space, 렌더F12, 애니메이션 렌더Ctrl+F12, 변환 굳히기Ctrl+A, 컬렉션으로 옮기기M - 그림: 모두 실제 Blender 5.2.1 화면과 EEVEE 렌더. 깃발 장면은 이 글을 위해 만든 예제





