블렌더 파이썬 프로그래밍 기초 Part1
1. 왜 파이썬으로 3D 객체를 생성해야 할까요?
블렌더는 이미 사용자 친화적인 인터페이스와 다양한 도구를 제공하고 있지만, 파이썬 스크립트를 사용하면 여러 가지 강력한 이점을 얻을 수 있습니다.
첫째, 반복적인 작업을 효율적으로 처리할 수 있는 자동화 기능이 탁월합니다. 예를 들어, 수많은 동일한 크기의 큐브를 특정 패턴으로 배열해야 하는 경우, 파이썬 코드를 작성하면 단 몇 번의 클릭만으로 이 복잡한 작업을 완료할 수 있습니다.
둘째, 정확한 수치 제어를 통해 객체를 생성하고 배치할 수 있습니다. 이는 건축 모델링이나 정밀한 기계 부품 모델링과 같이 정확성이 요구되는 작업에서 매우 유용합니다.
셋째, 블렌더의 기본 기능만으로는 구현하기 어려운 독특하고 복잡한 형태의 객체를 프로그래밍을 통해 창의적으로 디자인할 수 있습니다. 이는 게임 개발이나 예술적인 3D 작품 제작에 있어 무한한 가능성을 열어줍니다.
넷째, 파이썬은 블렌더의 기능을 확장할 수 있는 강력한 도구입니다. 여러분의 아이디어를 코드로 표현하여 새로운 기능을 추가하거나 기존 기능을 개선할 수 있습니다. 마치 숙련된 요리사가 자신만의 특별한 레시피(코드)를 만들어내어 독창적인 요리(3D 객체)를 창조하는 것과 같습니다.
이처럼 파이썬 스크립팅은 블렌더 사용 능력을 한 단계 끌어올리는 데 필수적인 기술입니다.
2. 기본 3D 객체 생성하기: 파이썬 코드 예제
기본 3D 객체 생성하기: 파이썬 코드로 시작하기
블렌더에서 파이썬 스크립트를 사용하여 3D 오브젝트를 만드는 것은 매우 간단합니다. 먼저 블렌더 상단의 탭에서 "스크립팅" 작업 공간을 선택하거나, 텍스트 편집기 창을 엽니다. 그런 다음 새로운 텍스트 파일을 만들고 아래 코드를 입력하세요. 코드를 작성한 후 텍스트 편집기 상단의 "실행" 버튼을 클릭하면 블렌더가 코드를 읽고 3D 뷰포트에 결과물을 보여줍니다.
(1) 큐브 만들기
import bpy
# 기본적인 큐브를 만들고 화면 중앙에 놓습니다.
bpy.ops.mesh.primitive_cube_add()
- import bpy: 이 첫 번째 줄은 블렌더의 파이썬 기능을 사용하기 위해 필요한 도구 상자(bpy 모듈)를 불러오는 명령어입니다. 마치 레고 블록을 사용하기 위해 레고 상자를 여는 것과 같습니다.
- bpy.ops.mesh.primitive_cube_add(): 이 코드는 블렌더에게 "기본적인 큐브를 하나 만들어서 3D 공간의 중심에 놓아줘"라고 명령하는 것입니다. bpy.ops는 블렌더의 다양한 명령들을 실행할 수 있게 해주는 특별한 기능이고, mesh는 3D 형태를 다루는 명령어들이 있는 그룹이며, primitive_cube_add는 그중에서 큐브를 만드는 명령어입니다.
따라 해보기: 위 코드를 블렌더 텍스트 편집기에 붙여넣고 실행해보세요. 3D 뷰포트의 정 가운데에 회색 큐브가 나타날 것입니다.
(2) 구 만들기
import bpy
# 기본적인 구를 만들고 화면 중앙에 놓습니다.
bpy.ops.mesh.primitive_uv_sphere_add()
- import bpy: 이전과 동일하게 블렌더 파이썬 기능을 사용하기 위해 도구 상자를 불러옵니다.
- bpy.ops.mesh.primitive_uv_sphere_add(): 이 명령어는 기본적인 구 모양의 3D 모델을 만듭니다. "UV 구"라고 하는 이유는 나중에 이 구에 색이나 그림을 입힐 때 편리하도록 미리 준비가 되어 있기 때문입니다.
따라 해보기: 위 코드를 텍스트 편집기에 붙여넣고 실행해보세요. 3D 뷰포트의 큐브가 있던 자리에 구 모양이 나타날 것입니다.
(3) 원뿔 만들기
import bpy
# 기본적인 원뿔을 만들고 화면 중앙에 놓습니다.
bpy.ops.mesh.primitive_cone_add()
- import bpy: 마찬가지로 블렌더 파이썬 기능을 사용하기 위한 준비 단계입니다.
- bpy.ops.mesh.primitive_cone_add(): 이 명령어는 밑면은 둥글고 끝은 뾰족한 모양의 원뿔을 3D 뷰포트의 중심에 만들어줍니다.
따라 해보기: 위 코드를 텍스트 편집기에 붙여넣고 실행해보세요. 3D 뷰포트에 원뿔 모양이 나타날 것입니다.
스크립트 생성 방법
- 콘(Cone) 생성: 3D 모델링 프로그램에서 "Add > Mesh > Cone" 메뉴를 선택하여 콘을 생성합니다. 예를 들어, 블렌더(Blender)에서는 상단 메뉴의 "Add"를 클릭하고 "Mesh" 하위 메뉴에서 "Cone"을 선택하면 됩니다.
- 스크립트 확인: 콘을 생성하면 프로그램의 정보 로그 또는 콘솔 창에 해당 작업을 수행하는 파이썬 스크립트 명령어가 나타납니다. 블렌더의 경우, 정보 로그 창에서 다음과 유사한 스크립트를 확인할 수 있습니다.
- 스크립트 분석: 위 스크립트는 콘을 생성하는 명령어를 나타내며, 다음과 같은 파라미터 값을 포함합니다.
bpy.ops.mesh.primitive_cone_add(enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))
이 스크립트를 통해 콘을 생성하는 과정을 자동화하거나, 필요에 따라 파라미터 값을 변경하여 다른 위치나 크기로 콘을 생성할 수 있습니다.
다음은 위의 생성 스프립트의 주요 파라미터를 정리한 표입니다.
함수 이름 | 주요 파라미터 | 설명 |
bpy.ops.mesh.primitive_cube_add() | location | 큐브가 생성될 x, y, z 좌표 |
rotation | 큐브의 x, y, z 축 기준 회전 각도 (라디안 단위) | |
size | 큐브의 크기 | |
bpy.ops.mesh.primitive_uv_sphere_add() | location | 구가 생성될 x, y, z 좌표 |
rotation | 구의 x, y, z 축 기준 회전 각도 (라디안 단위) | |
radius | 구의 반지름 | |
segments | 구의 가로 분할 수 | |
ring_count | 구의 세로 분할 수 | |
bpy.ops.mesh.primitive_cone_add() | location | 원뿔이 생성될 x, y, z 좌표 |
rotation | 원뿔의 x, y, z 축 기준 회전 각도 (라디안 단위) | |
radius1 | 원뿔의 밑면 반지름 | |
radius2 | 원뿔의 윗면 반지름 (0으로 설정하면 뾰족한 원뿔) | |
depth | 원뿔의 깊이 (높이) | |
vertices | 원뿔의 밑면을 이루는 정점 수 |
< 표. 객체 스크립트의 주요 파라미터 정리>
3. 객체의 속성 조절하기: 위치, 회전, 크기
지금까지 살펴본 코드를 실행하면 큐브, 구, 원뿔이 3D 뷰포트의 정중앙, 즉 원점(좌표 0, 0, 0)에 생성되는 것을 확인할 수 있습니다. 이제 파이썬 코드를 사용하여 생성된 객체의 위치를 이동시키거나, 회전시키고, 크기를 조절하는 기본적인 방법에 대해 알아보겠습니다. 이러한 속성들을 조절하는 것은 3D 모델링에서 매우 중요한 개념이며, 이를 통해 다양한 장면을 구성하고 원하는 형태를 만들 수 있습니다.
(4) 위치 조절하기
import bpy
# 큐브를 생성하고, x, y, z 좌표를 각각 2, 3, 1로 이동시킵니다.
bpy.ops.mesh.primitive_cube_add(location=(2, 3, 1))
- location=(2, 3, 1): 이전의 큐브 생성 코드와 비교했을 때, 괄호 안에 location이라는 파라미터가 추가된 것을 확인할 수 있습니다. 이 location 파라미터는 생성될 큐브의 3차원 좌표상의 위치를 지정하는 역할을 합니다.
- (2, 3, 1)은 튜플(tuple) 형태로 x축, y축, z축의 좌표값을 순서대로 나타냅니다. 따라서 이 코드를 실행하면 큐브는 3D 뷰포트의 원점에서 x축으로 2미터, y축으로 3미터, z축으로 1미터 떨어진 위치에 생성됩니다. 기본적인 도형 생성 함수들은 location 파라미터를 통해 객체가 생성될 위치를 사용자가 원하는 대로 지정할 수 있도록 지원합니다.
(5) 회전 조절하기
import bpy
import math
# 구를 생성하고, x축을 기준으로 45도 회전시킵니다.
bpy.ops.mesh.primitive_uv_sphere_add(rotation=(math.radians(45), 0, 0))
- rotation=(math.radians(45), 0, 0): 이번에는 구를 생성하면서 rotation이라는 파라미터를 사용했습니다. 이 파라미터는 객체의 각 축을 기준으로 회전할 각도를 지정합니다. 3D 공간에서의 회전은 일반적으로 x축, y축, z축을 기준으로 표현되며, 이 값들은 튜플 형태로 전달됩니다.
- 중요한 점은 블렌더 파이썬 API에서는 각도 단위를 도(degree)가 아닌 라디안(radian)을 사용한다는 것입니다. 따라서 우리가 흔히 사용하는 도 단위를 라디안으로 변환해주는 작업이 필요하며, 이를 위해 파이썬의 math 모듈을 불러온 후 math.radians() 함수를 사용하여 45도를 라디안 값으로 변환했습니다. (math.radians(45), 0, 0)은 x축으로 45도 회전하고, y축과 z축으로는 회전하지 않음을 의미합니다.
(6) 크기 조절하기
import bpy
# 원뿔을 생성하고, 반지름을 2, 깊이를 3으로 설정합니다.
bpy.ops.mesh.primitive_cone_add(radius1=2, depth=3)
- radius1=2: 원뿔의 밑면 반지름을 설정하는 파라미터입니다. 여기서는 밑면의 반지름을 2 블렌더 단위로 지정했습니다.
- depth=3: 원뿔의 깊이, 즉 높이를 설정하는 파라미터입니다. 여기서는 원뿔의 높이를 3 블렌더 단위로 지정했습니다.
- 각 기본 도형마다 크기를 조절하는 데 사용되는 파라미터들은 조금씩 다릅니다. 예를 들어, 큐브의 경우에는 size라는 파라미터를 사용하여 큐브의 가로, 세로, 높이를 한 번에 조절할 수 있습니다 (bpy.ops.mesh.primitive_cube_add(size=3)). 만약 특정 축 방향으로만 크기를 조절하고 싶다면 scale 파라미터를 사용할 수도 있습니다. 구의 경우에는 radius 파라미터를 사용하여 반지름의 크기를 조절합니다 (bpy.ops.mesh.primitive_uv_sphere_add(radius=1.5)). 이처럼 각 도형의 특징에 맞춰 다양한 파라미터들이 제공되므로, 필요에 따라 API 문서를 참고하여 원하는 속성을 조절할 수 있습니다.