Blender

[Blender] 물리 시뮬레이션 기초 - Rigid body 개념

귤까망 2025. 10. 9. 23:46

시뮬레이션이란?
현실 세계에서 일어나는 물리현상을 컴퓨터 안에서 계산해 가상의 움직임으로 재현하는 기술
ex) 천이 바람에 날리는 모습, 공이 튕기는 모습 등...

 

핵심 3요소
1. Solver: 물리 시뮬레이션을 계산하는 엔진

Cloth 천, 커튼 의상 등
Fluid 물, 액체, 연기, 불 등
Rigid Body 단단한 물체 간 충돌
Soft Body 탄력있는 물체
Dynamic paint 색칠이나 표면에 효과 남기기

2. Parameter: 물리 계산에 영향을 주는 변수 값

~ 오브젝트 변수 ~

Mass 질량(낙하 속도, 충돌 강도 등)
Damping 감쇠(물체의 이동/회전 속도를 느려지게 함)
Stiffness 탄성 강도(물체가 얼마나 구부러지는지)
Friction 마찰력(미끄러지지 않도록 저항하는 힘)
Bounciness 튕김(물체가 얼마나 튕기는지)

~ 환경 변수 ~

Gravity  중력 세기(기본 -9.8m/s^2)
Force Fields Wind, turbulence 등 외부 힘
Time Scale 시뮬레이션 속도 조절
Solver Quality 전체 계산 정확도

3. Cache / Bake: 계산 결과를 저장하고 재사용
실시간 계산이므로 굉장히 무거운 시뮤레이션을 캐시로 저장 => 저장 후에는 다시 계산하지 않고 빠르게 재생됨

Cache 시뮬레이션 프레임별 계산 결과 저장 공간
Bake 계산된 결과를 실제로 저장하는 작업
 > 빠른 재생, 렌더링 가능 

 

Physics 속성창 > Rigid body > Type
- active: 움직이는 물체에 적용
- passive: 바닥 등 고정된 배경 물체에 적용

Rigid body > Settings
Dynamic 체크를 해제하면 물리 시뮬레이션이 적용되지 않음
Animated는 키프레임이 걸려있는 오브젝트의 모션과 시뮬레이션을 동시에 볼 때 사용

Rigid body > Collisions > Shape
- Convex Hall: 오브젝트의 외형을 반영하긴 하지만 가장 위와 가장 아래를 기준으로 표면을 껍질(막?)로 감싸버림.
                         성능이 빠르지만 외형을 100% 반영하지 못함.
- Mesh: 외형과 구조를 그대로 반영.
             외형을 100% 반영하지만 성능이 느려서 렌더 시간이 오래 걸림.

shape을 Covex Hall이나 Mesh로 두면 나타나는 Source
  - Base: 변형되기 전 원형의 모양으로 인식 (모디파이어로 변형된 것은 인식 X)
  - Deform: 모디파이어에서 Deform으로 변형된 외형만 인식
  - Final: 모든 오브젝트를 다 인식

Rigid Body > Surface Response
active와 passive 오브젝트 각각의 Friction 값을 곱해서 마찰력이 나타남
active와 passive 오브젝트 각각의 Bounciness 값을 곱해서 튕김 정도가 나타남
* 하나라도 0이면 곱해서 0이 되므로 효과가 나타나지 않음!

Rigid Body > Sensitivity
Margin: 충돌 간격 값
active와 passive 각각의 margin 값의 합

 

 

넓게 퍼져있는 사탕들을 병 안에 들어가게 하기
실린더를 추가해 깔때기 모양으로 만들어서 병 안으로 들어갈 수 있게끔
* 렌더되면 안되니까 카메라 눈 꺼주기!
Object 속성창 > Viewport Display > Display As를 Wire로 변경
=>> 사탕이 깔때기를 통해 들어가는 걸 자세히 볼 수 있음

여러 오브젝트에 같은 Rigid body 값 적용하기
복사할 오브젝트들 선택 후, 마지막에 복사당할 오브젝트 선택(활성화 오브젝트)
Object 메뉴 > Rigid body > Copy from Active

캐시 메모리로 저장
Scene 속성창 > Rigid Body World > Cache > 시작&끝 프레임 설정하고 Bake
* 이미 Bake를 완료했다면 수정해도 반영되지 않음
> Delete Bake를 하고 수정을 하고 다시 Bake를 해야한다

유리 재질을 표현하기 위해 glass BSDF 노드 연결
* 렌더 엔진이 Cycles인 경우는 바로 적용되지만, EEVEE인 경우는 바로 안 나타남
> Render 속성창의 Raytracing 체크
> Material 속성창에서 Settings의 Surface 안에 있는 Raytraced Transmission 체크
> 그 밑의 Thickness를 Slab으로 변경
> Shader 창에서 Transparent BSDF 노드 추가
> Mix Shader 노드 추가해서 Transparent와 glass 노드 동시에 연결 (Fac 값 조절)
> Fresnel 노드 추가 (유리, 물, 피부 등 현실감 있는 쉐이딩 작업 시 사용): 바라보는 각도에 따라 다른 출력값 배출

Compositing 탭
이미지를 한번 렌더했는데도 이미지 안 뜨는 경우
> Render Layers 노드의 아이콘 클릭 후 Scene 누르면 이미지가 뜸

Ctrl + Shift 누른 채로 Render Layers 노드 클릭: 뷰어 노드 추가 단축키

 

 

물리 시뮬레이션 기초 - Rigid Body

 

모델링은 강사님이 제공해주셔서 물리 시뮬레이션만 직접했다!
너무 신기하다 🫢