Blender

[Blender] 물리 시뮬레이션 기초 - Dynamic Paint 개념

귤까망 2025. 10. 23. 22:32

어떤 오브젝트를 캔버스로, 또다른 오브젝트를 브러시로 사용하여
캔버스 위에 브러시로 어떠한 자국을 남기는 시뮬레이션

 

Canvas
Add Canvas/Add Brush를 눌러야 오브젝트가 각각 캔버스와 브러시로 인식됨
브러시가 캔버스와 접촉하는 면이 있어야함!
- Format: Vertex
   * 버텍스가 아주 많지 않은 이상 계단처럼 표현됨 (Anti-Aliasing도 살짝만 보완됨)
   =>> Paint인 경우는 버텍스보다는 이미지 시퀀스로 사용
- SubSteps: 연결이 끊기지 않고 부드럽게 만들어줌
- Surface Type: Displace => 캔버스한테 외형적인 변화를 줌 (눈밭, 진흙에 발자국을 남길 때 사용)
   * Format이 Vertex인 경우, 캔버스 오브젝트에 Subdivided로 버텍스를 많이 추가해줘야 나타난다!
- Surface Type: Weight => 브러시를 이용해서 Weight Paint의 가중치를 넣어줄 수 있음
   => output의 dp_weight 버텍스 그룹에 플러스를 눌러줘야함!
- Surface Type: Waves => 물살을 일으키는 효과
- Surface Type: Paint => 브러시를 이용해서 색칠해주는 기능
   => Output의 paintmap과 wetmap 둘 다 플러스를 눌러줘야함 (wetmap은 시간이 지남에 따라 마르는 기능)
   => Viewport Shading 창에서 Color를 Attribute로 변경 (Vertex관련 색을 보여줌)
- Dry: 색칠한 지 오래된 부분이 마르게 하는 기능
- Dissolve: 시간이 지나면 외형적 변화가 사라짐 (타입이 Paint인 경우는 Bake를 하고 실제 텍스처로 확인해야함)
- Effects > Spread: 번지는 기능
- Drip: 밑으로 흐르는 물 표현 (캔버스가 기울어져있을 때)
- Shrink: 끝 부분이 날카롭게 표현됨

포맷이 이미지 시퀀스인 경우
- Output의 Bake Image Sequence로 이미지로 따로 뽑아주기
dynamic paint로 새 폴더 만들고 경로 설정
> UV Map 선택하고 PNG 선택 (Wetmaps까지 체크하면 마르는 것까지 확인 가능)
> 베이크하면 폴더에 이미지로 저장됨
> Shading Editor에서 Image Sequence 노드 추가하고 전체 이미지 불러오기 (여러 개의 이미지 불러올 때 사용)
> 컬러를 베이스 컬러에 연결하고 머테리얼 프리뷰로 확인
> 분홍색으로 뜬 경우 노드에서 Auto Refresh체크하면 시뮬레이션이 나타남
* 수정하면 바로 적용되지 않으므로 다시 베이크하고 이미지를 불러와야함
* 퀄리티를 높이려면 Resolution 값을 올려주면 됨 (강의 예제는 2000정도)

 

 

캔버스에 붓으로 그림 그리는 시뮬레이션 만들기
베지어 커브 추가하고 (이름은 Path) x축으로 90도 회전한 후, Edit Mode에서 엑스레이 모드로 외형 수정
* 각을 풀어주고싶으면 핸들 사이즈 줄이기, 쪼개고 싶으면 두 버텍스 잡고 섭디바이드 추가
> UV스피어 꺼낸 후, Constraints창에서 Follow Path기능 추가하고 Target으로 베지어 커브 선택
> Fixed Position으로 커브를 이탈하지 않도록 해주기
> 키프레임 넣어서 모션 주기
> 브러시 오브젝트 선택하고 똑같이 Follow Path 기능 적용
* 브러시와 커브의 오리진 위치가 달라서 오류가 생김
   => Alt G, Alt R 눌러서 원위치시키고 원하는 만큼 회전값만 다시 주기
> UV스피어와 똑같은 위치에 키프레임 걸기
> 캔버스 선택하고 시뮬레이션 속성창에서 Dynamic Paint > Canvas로 하고 타입은 Paint로 선택
>  Dry 체크 해제하고 Output에서 paintmap과 wetmap 추가
> 브러시 선택하고 Dynamic Paint > Brush 선택하고 뷰포트셰이딩창에서 Attribute로 선택한 후 확인
* 브러시와 캔버스의 접촉면이 깔끔하지 않아 모양이 지저분하게 나옴
   =>> 브러시 말고 UV 스피어에 브러시 시뮬을 적용 (렌더되지 않도록 카메라눈은 끄기)
> 포맷을 이미지 시퀀스로 바꾸고 Resolution은 2000으로 설정
> Bake할 폴더 경로 선택, UV Map 선택하고 Bake
> Shading 에디터에서 new 눌러서 Canvas 추가하고 Image Sequence 노드 추가해서 베이크 된 이미지 전체 불러오기
> Auto Refresh 체크하고 머테리얼 프리뷰에서 확인
> 매끄럽지 않다면 Substeps 단계를 높여 퀄리티 높이기

> Mix Color를 꺼내 이미지 노드와 BSDF 노드 사이에 배치하고 이미지 노드를 Factor에 연결
> Mix Color 노드의 A에 캔버스 색, B에 페인트 색을 넣기
* B의 색이 흐린 이유는 B의 팩터값이 완벽한 1이 아니기 때문에 A와 섞여서 나온 것
   =>> Mix와 이미지 노드 사이에 Color Ramp을 추가하여 Constant로 경계라인을 분명히 만들어주기
> 이미지 노드와 BSDF 사이에 Color Ramp를 하나 더 추가하여 Roughness 값 조절로 질감 차이 표현하기
* Roughness가 1이면 엄청 거친 질감, 0이면 매끈한 질감이므로 컬러램프 위치 바꿔주기
* Ctrl Shift 보고싶은 노드 클릭: 원하는 노드를 바로 볼 수 있는 단축키
> 종이질감 표현을 위해 Noise Texture 노드와 Bump 노드 추가 (Fac-Height, Normal-Normal 연결)
   * Bump의 Distance를 1로 해야 보임
> Noise 노드 잡고 Ctrl T해서 Texture Coordinated와 Mapping 추가
> 모든 부분에 텍스처가 동일하게 들어가게끔 Object로 연결
> 노이즈 스케일과 범프 Strength 등등 여러 수치를 조절하며 완성

 

 

물리 시뮬레이션 기초 - Dynamic Paint 개념