본문 바로가기
3D Blender 기초강좌

3D Blender - Array Modifier 경사진 객체의 원형배열

by 열븐세상 2023. 6. 5.

자기 자신을 2차원이나 2차원으로 배열을 하는 것은 그리 어렵지 않습니다.  앞에서 원형배열의 기본에 대해서 알아보았습니다.  사실 많이 쓰이지는 않지만 기울어진 면이나 객체를 중심으로 원형배열을 할 경우에는 블렌더에서는 메커니즘이 매우 복잡합니다.  초보인 저로써도 이해하는데 많이 걸렸는데요.  기본부터 차근차근 알아가 보도록 하겠습니다.

왼쪽의 사진처럼 한쪽 면이 경사진 큐브가 와 작은 실린더가 준비되어 있습니다.  이것을 오른쪽 사진처럼 Array를 사용하여 구현할 것입니다.  그전에 몇 가지 개념을 먼저 짚고 넘어가겠습니다.

 

변환 기준 (Transform Orientations)

3D 이미지는 기본적으로 X, Y, Z의 3개의 축이 있습니다.  이 축의 방향은 정하기 나름인데요.  객체 자신을 기준으로 할 때는 [Local]이라고 하며 여러 객체가 모여 있으면 각 객체마다 [Local] 방향이 다를 것입니다.  [3D Viewport] 화면을 [World] 화면이라고도 하며 이것을 기준으로 할 때는 [Global]이라고 합니다.  또한 사람이 모니터를 바라볼 때의 기준은 [View]라고 합니다.

 

[Global] 옆에 [+] 표시가 보이는데 사용자가 임의의 법선으로 기준을 잡을 때 설정합니다.  법선이란 편집모드에서 각 점, 선, 면에 대해서도 개별로 모두 변환기준이 다르게 적용이 되는데 이 방향을 가시적으로 표현한 것을 말합니다.  법선은 [Overlays](중간그림) 맨 아래에 가면 보이도록 설정할 수 있는데 점, 선, 면을 모두 켰더니 엄청 복잡한 선들이 보이는군요.  이것을 법선이라고 하며 색깔에 따른 [Element]는 옵션을 바꿔 가면서 보면 바로 확인할 수 있습니다.  이렇게 편집모드에서 [Element]의 법선에 따른 축을 [Normal]이라고 합니다.

 

사용자 정의 축 설정하기

[Normal]은 [Edit Mode]에서만 사용할 수 있습니다.  [Object Mode]로 나오게 되면 어디를 축으로 한 것인지 모르게 됩니다.  그래서 필요한 것이 [사용자 정의 축]입니다.

객체를 선택하고 [Edit Mode]로 전환을 한 후 면을 선택하고 [Transform Orentations]을 클릭하고 [+]를 선택하면 위와 같이 아래에 [Face]라는 축이 생깁니다.  [Move] 기즈모를 활성화해 보았습니다.  3각형 면의 직각 방향이 Z 축이 되고 X축, Y축이 확인이 되었습니다.  [Face]라는 이름은 면에 선택했기 때문에 나오는 기본 이름이고 이름은 편한 데로 바꿔서 사용할 수 있습니다.  점이나 선도 선택 지정이 가능하며 여러 개를 선택하면 평균값을 찾아 지정이 됩니다.  상단에도 [Face]라고 표시가 되며 이렇게 되면 [Object Mode]로 빠져나와도 모든 작업의 변환 기준은 [Face] 축이 기준이 됩니다.  필요 없으면 [X]를 눌러 삭제할 수 있습니다.

 

자석기능(Snap)

내가 이동하고자 하는 객체가 정확히 어느 자리로 보내고 싶다고 할 때 사용하는 기능입니다.  이 기능에 대해서는 제대로 설명을 하려면 매우 길어지니 간단한 내용만 설명하겠습니다.

기본적으로 [Increment]가 선택되어 있는데 이는 [Viewport]에 그려져 있는 [Grid]가 기준이 됩니다.  [Face Project]를 선택하면 다른 옵션들이 나옵니다.

  • Closest : 객체의 외형기준으로 스냅이 된다.
  • Center : 객체의 [Origin] 기준으로 스냅이 된다.
  • Median : 한 개의 객체만 선택했을 때는 [Center]와 같지만 여러 개를 선택했을 때는 [Origin]들의 평균값이 기준이 된다.
  • Active : 여러 개를 선택했을 때 활성화 된 객체가 기준이 된다.
  • [Align Rotation to Target] : 선택한 객체가 법선에 맞추어 회전이 된다.
  • [Backface Culling] : 면을 태울 때 뒷면(객체의 내부)이 선택이 되지 않도록 한다.
  • [Project Individual Elements] : 여러 개의 객체를 선택했을 때 각 객체의 법선이 다르면 각자 닫는 면에 맞추어 [Align Rotation]이 된다.

보통은 말굽모양을 클릭(Snap On)하면 그때부터 스냅이 작동을 하지만 그것보다는 스냅을 커 놓은 상태에서 필요할 때 <Ctrl>를 눌러서 사용합니다.  이미 [Snap On]이 되어 있다면 <Ctrl> 키는 [Snap Off]가 됩니다.

 

객체 초기화 할 때 Empty 객체의 특성

아래에 뒤틀린 큐브 하나와 Empty 객체를 각각 생성해 보았습니다.  그리고 <Ctrl + A>를 눌러 [Apply] 메뉴를 호출하고 [All Transforms]를 해 보았습니다.  그러면 [Location]과 [Rotation]은 0으로 [Scale]은 1로 바뀝니다.

일반 [Mesh Object]는 모양이나 회전 방향, 위치 등에 변화가 전혀 없이 [Transfoms]의 값만 초기화되었습니다.  [Location]이 초기화가 되었으니 당연히 [Origin]은 [World]의 원점으로 바뀌었습니다.

 

그런데 [Empty Object]는 초기화하는 순간 값이 초기화될 뿐만 아니라 모양 자체도 원점으로 돌아왔습니다.

모든 [Empty Object]는 [Origin]의 정보만 가지고 있으며 보이는 선이나 형태는 가상으로 보여주기만 할 뿐입니다.  [Mesh Object]는 실질적인 외형을 가지고 있기 때문에 원점의 정보는 초기화되더라도 역산을 해서 다시 뿌려주기 때문에 형태의 변화가 없어 보이는 것입니다.

 

경사면에 회전배열 하기

보시는 분들이 혼선이 오면 안 되므로 정상적인 루틴을 빠르게 보여 드리도록 하겠습니다.  이후에 시행착오가 되었던 부분을 뒤에서 설명하겠습니다.

1. 경사면을 기준으로 [사용자 정의 축] 만들기

[Edit Mode]에서 [Face Mode]로 삼각형을 선택합니다 [그림 1].  기즈모가 [Global] 상태임을 나타내고 있습니다.  [Transform Orientations] > [+]를 선택합니다 [그림 2].  [Object Mode]로 나와도 [Face] 축에 맞추어 기즈모가 잘 살아 있습니다 [그림 3]

 

2. [3D Cursor] 배치하기

[Edit Mode]에서 삼각형 면을 선택하고 [Shift + S] 눌러 [Cursor to Selected]를 선택합니다.  그러면 삼각형의 중심에 [3D Cursor]가 자리 잡았습니다.

 

3. 배열을 할 객체확인

배열을 할 객체의 [Origin] 위치가 이상합니다.  객체의 중심에 맞추도록 합니다.

 

4. [Snap] 옵션 확인

말굽은 활성화시키지 않고 다음과 같은지 확인합니다.

[Snap To] : Face Project, [Snap With] : Closest, [Align Rotation to Target]과 [Backface Culling] 체크

 

5. 배열할 객체를 [3D Cursor] 위치로 보내기

<G>를 클릭하고 원점 근처에 마우스 커서를 위치시키고 <Ctrl> 키를 누릅니다.  그러면 면에 맞추어 실린더가 회전이 되면서 자리 잡습니다.  한 번에 [3D Cursor]에 맞추기는 힘들더군요.  실린더가 반쯤 파 묻혀도 상관없으면.... 상관없지만요.

다시 <Shift + S>를 누르고 [Selection to Cursor]를 눌러 객체를 [3D Cursor] 위치로 보냅니다.  다시 <G>, <Z>를 차례로 클릭하면 [Face] 축에 맞추어 <Z> 축이 만들어지고 마우스 커서를 면에 위치시키고 클릭하면 실린더 바닥면이 딱 밀착되어 자리를 잡습니다.  이제는 실린더와 [3D Cursor]가 중심이 정확히 일치합니다.

 

6. [Empty] 추가하고 [Parent] > [Object : Without Inverse] 걸기

<Shift + A> 클릭하고 [Empty]를 추가합니다.  <Shift> 클릭한 상태에서 실린더를 클릭합니다.  이제 실린더가 활성화 객체가 되었습니다. <Ctrl + P>를 클릭하면 [Set Parent To] 메뉴가 나옵니다.  [Object(Without Inverse]를 클릭합니다.

이제 실린더는 부모가 되고 [Empty]는 자식이 되었습니다.  그런데 자식의 자세가 바뀌었군요.

자식만 선택을 해서 [Transforms] 값을 확인해 보니 초기화 상태 그대로입니다.  앞에서 [Empty]를 초기화하면 원점의 자리로 돌아간다고 했는데 이렇게 하니까 실린더와 똑같은 자세를 취하면서도 값은 초기화 상태 그대로입니다.  [Rotation][Z]에 60을 입력합니다.

이제 실린더를 선택하고 [Modifier] > [Array]를 설정합니다. ([Count] : 6,  [Object Offset] : 방금 만든 [Empty])

 

7. 실린더 위치 잡기

실린더가 선택되어 있는 상태에서 [Edit Mode]로 들어갑니다.  <A>를 클릭하여 전체 선택을 합니다.  <G> 클릭, <Shift + Z>를 클릭합니다.  <Shift + Z>는 <X>와 <Y> 축 방향으로만 자유롭게 움직이겠다는 뜻입니다.

실린더가 면을 따라서 강강술래를 하는 모습을 보실 수 있습니다.

다른 면에도 붙여 보겠습니다.

[Object Mode]에서 실린더를 선택하고 <G> 키를 누르고 큐브의 윗면으로 마우스 커서를 가져갑니다. <Ctrl> 누르면 윗면에 맞추어 전체가 회전이 될 것입니다.  위치 잡고 클릭.  중요한 것은 이제부터 [Transform Orientations]를 [Local]로 바꾸어 주어야 합니다.  실린더를 기준으로 [Local] 축으로 작동을 해야 하기 때문입니다.  정면에 붙이고 마찬가지로 <Shift + Z> 누르고 <Scale>도 변경해 봅니다.  주의 사항은 [Scale] 변경 시 [Z] 축을 바꾸어야 높이가 달라지는데 큐브의 지면과 맞지 않으므로 [Snap]으로 다시 붙여줘야 합니다.

 

최종 정리 

위의 과정에서 실린더를 [Apply]를 하지 않았다는 것입니다.  [Empty]를 실린더와 [Parent]를 할 때 [Object(Without Inverse]를 했다는 점입니다.  [Empty]가 안정적으로 초기화됨으로써 제어하기 쉬운 원형 배열이 되었습니다.

우측에 있는 이미지처럼 기울어진 면의 방향이 각기 다른 경우에는 배열로 배치하는 것은 몸체를 수직방향으로 세워놓고 만든 다음에 옮겨야 하는 것으로 확인되었습니다.  이런 경우에는 배열보다는 복붙이 정답인 것 같습니다.

 

집에서 사용하는 마이크를 만들어 보았습니다.  다리를 만들 때 [Array] 사용하면 어떨까 하고 접근을 했었는데 그 어디에도 방법이 나와 있지 않았습니다.  혹시 방법을 아시는 분이 있으시면 댓글 부탁드립니다.

감사합니다.

 

댓글