본문 바로가기
XR개발/Blender3D

정육면체 큐브 파티클 부수며

by 오머리쿠_OmaryKoo 2024. 3. 2.

하나둘씩 블렌더로 작업물을 직접 만들고 하다보니, 조금씩 도구를 사용하는 것에 친숙해졌고, 손에도 많이 익숙해지고 하더라고요. 이것저것 따라해보며, 블렌더에는 어떤 기능이 있고 어떤 경우에 그러한 기능을 사용하는지를 감을 익히면서 차차 블렌더를 내것화하여 사용하면 좋을 거 같아요.

 

아직은 저 또한 초보자 단계인 만큼 이번에도 보고 따라하며 실력을 갖추고 하니, 원본 영상을 마찬가지로 아래 링크에 공유하니 참고하시면 되겠습니다.


02. [블렌더 기초 강좌] 큐브 1000개 부수기_코드모드(sub)


블렌더는 단순히 오브젝트 생성 및 구현만으로 그치는 것이 아닌 이러한 오브젝트에 물리학적 모션도 실행할 수 있어서 외려 더 생동감 있는 움직임을 구현할 수 있는데, 이번 프로젝트에서는 그러한 물리를 적용하는 Physics Rigid Body를 활용해 큐브 1000개를 부수는 걸 만들어보고자 해요. 


Physics Rigid Body의 기초

Rigid Body는 블렌더에서 물리적 상호작용을 시뮬레이션하는 기능입니다. 이를 통해 객체들이 실제 세계처럼 중력, 충돌, 반발력 등의 물리 법칙을 따르도록 만들 수 있습니다. 이번 블로그 글은 Rigid Body의 기본 설정부터 시작해, 실제로 큐브 1000개를 어떻게 부수는지 물리적인 부분을 중점적으로 해서 단계별로 알아보겠습니다.

 

Rigid Body 설정하기

우선 큐브를 1000개 생성하기에 앞서서 오브젝트끼리 충돌했을 시, 튕겨나가려면 Rigid Body 물리 설정을 해야 해요. 

 

오브젝트를 생성한 후에,

[Physics Properties] - [Rigid Body]로 생성합니다.

 

Rigid Body가 오브젝트에 물리법칙이 적용되면, 중력, 충돌, 질량 등 말그대로 지구에 물체가 작용하는 상태로 적용되기 때문에, 오브젝트를 받춰줄 바닥도 만들어줘야 합니다.

여기서 참고>

바닥도 마찬가지로 오브젝트와 접촉이 되어야 하기 때문에, Rigid Body를 적용시킵니다. 단, 바닥 오브젝트는 type> Passice로 해두는 걸 잊지 마시고요. 그래야 play를 시켰을 때, 중력 작용에도 떨어지지 않고, 그 자리 그 상태로 고정이 되거든요.

 

처음 생성한 큐브 오브켁트를 [Shift + D]로 복사 시켜서 복사시킨 큐브 오브젝트를 passive 적용을 해둡니다. 

여기서 passive로 두면, 다른 힘의 영향을 받지 않고 고정된 상태를 유지하기에, 아래 항목 옵션 중 animated를 체크 박스를 해둡니다. 그래야 객체의 위치나 회전 등 변할 수 있도록 할 수 있거든요.

 

테스트삼아, play시켜 복사시킨 큐브를 G 이동 버튼을 눌러 기존 큐브와 부딫히면 튕겨나가는 것을 보실 수 있을 겁니다.

✓ Animated?

'Animated' 옵션을 활성화하면, 'Passive' 타입의 객체도 애니메이션을 통해 시간에 따라 위치가 변할 수 있게 됩니다. 이는 고정된 위치에서 시작하여 특정 시점에서 움직이기 시작하는 객체를 만들고 싶을 때 사용할 수 있습니다. 예를 들어, 도미노가 쓰러지기 시작하는 순간이나, 움직이는 플랫폼 등을 만들 때 유용합니다.

큐브를 그냥 있는 그대로 서로 맞물려 생성하면, 위와같은 서로 경계가 없는 큰 직육면체로 되어버리기 때문에, 1000개 큐브 만들기 앞서,

[Modifiers] - [Generate] - [Bevel]를 설정하여,

[Segments]를 3으로 입력해주시는 거 잊지마시고요~


복사 시킨 큐브는 지워주시고, 기존의 큐브를 1000개 생성시키려면,

[Modifier] - [Generate] - [Array]를 적용시키면, 아래와 같은 창이 생성되는데, Count 갯수를 10개로 설정합니다.

 

그리고, y축, z축 모두 10개씩 해야 10x10x10 = 1000개가 되기 때문에, [array] 옆에 아래 화살표 항목을 클릭하여 [Duplicate]를 2번 해줍니다.

복사된 array 항목들에 각각 x 1.000 /y0.000/ z0.000, x 0.000 /y 1.000/ z 0.000 그리고 x 0.000 /y 0.000/ z 1.000로 설정해주시면, 1000개 큐브 정육면체가 만들어집니다.

 

새 오브젝트로 구를 생성하고, 아까 큐브들끼리 충돌시켰을 때 원리처럼, 구에도 마찬가지로 Rigid Body를 적용시키고, [passive]에 [animated]를 체크해둡니다.

 

만든 1000개의 큐브들이 이제 물리법칙이 적용돼 구의 오브젝트와 부딫혀 나갈 때, 복사를 시키고 하다보니, 아직 각자 큐브들의 중심세팅이 한 쪽으로 돼 있고 하니, 각 큐브들 모두 각자의 중심들로 세팅이 꼭 필요합니다.

큐브들 전체 드레그 하여, 우클릭하여, [Set origin] - [Origin to Gemetry]로 하면,

위와같이 모두 적용되었다는 것을 볼 수 있습니다.

 

여기서 구 물체를 수직하강 시켜 파편이 더 분산시켜 나가는 모션이 되기 위해선, 구와 큐브와의 질량도 서로 다르게 세팅하면 임펙트있게 모션이 취해지게 됩니다.

구의 Mass를 10kg로 하였고, 큐브는 0.3kg 정도로 차이를 크게 뒀어요.

 

여기서 중요한 건, 일일이 큐브를 0.3kg으로 하나하나 수정하기에는 너무 버겁고 한데, 이를 한번에 적용시키는 방법이

하나의 큐브 오브젝트를 택하고, 수정할 질량치수를 기입한 뒤, 전체 큐브 오브젝트들을 드레그 해주고,

 

[Alt] 누른 상태에서, [Enter]를 치면, 큐브 오브젝트 모두 한번에 적용됩니다!

 

* Alt가 여러 설정을 같이 할 때 매우 유용하니 이 부분은 꼭 기억해주시길 바람.

 

그 상태로 플레이 버튼을 누르면, 모두 엄청 느리게 가기 때문에, 우리가 이때까지 해놓은 것들을 bake를 해줘야 합니다.

 

[Scene] 창에 들어가 Rigid body world 항목에서 속도를 빠르게 세팅하고 하면, 버벅 거리던 속도도 더 빠르게 적용됩니다.

 

Bake로 미리 해두고, 설령 그 뒤에 다시 수정해서 한들, 그 때는 bake를 다시 제거하고, 수정 후 다시 bake해도 되니, 혹여 수정에 대한 우려는 크게 염려 안하셔도 됩니다.

✓ Bake?

블렌더에서의 'Bake'는 사실상 시뮬레이션 데이터를 미리 계산하고 저장하는 과정을 의미합니다. 
'Bake' 과정으로 시간과 자원을 절약하며, 프로젝트의 일관성과 효율성을 향상시키는 중요한 단계입니다. 복잡한 시뮬레이션과 애니메이션을 다루는 블렌더 사용자에게는 거의 필수적인 과정이라 할 수 있습니다.

 

위와같이 적용하면 play를 눌렀을 때, 스무스하게 파편들이 부서지는 모션이 진행되게 됩니다.

 

 

728x90

'XR개발 > Blender3D' 카테고리의 다른 글

컵 만들기 해보며 part.2  (1) 2024.01.30
컵 만들기 해보며 part.1  (2) 2024.01.28