블렌더에서 코딩을 통해서 물체를 만들고 블렌더의 물리엔진을 이용해서 자유낙하 시뮬레이션을 만들었다. for 조건문을 통해서 작은 큐브들이 반복해서 만들어지고 물리엔진의 조건들이 적용된다.
import bpy
number = 3
counter = 0
for a in range(0, number+25):
counter += 2
counter2 = 0
for b in range(0, number):
counter2 +=2
counter3 = 0
for c in range(0, number):
bpy.ops.mesh.primitive_cube_add(size=2, location=(counter3+2, counter2-2, counter-2))
counter3 +=2
bpy.ops.rigidbody.object_add()
bpy.context.object.rigid_body.collision_shape = 'BOX'
bpy.context.object.rigid_body.use_margin = True
bpy.context.object.rigid_body.collision_margin = 0
bpy.context.object.rigid_body.linear_damping = 0.35
bpy.context.object.rigid_body.angular_damping = 0.6
bpy.context.object.rigid_body.mass = 20
윈도우 설정에서 console info. 를 열면 물체를 넣거나 할때 적용되는 코드가 생성된다. 이것을 text editor에 복사해서 넣으면 같은 명령어가 실행되기 때문에 bpy에 대한 코드를 다 알지 못해도 명령어를 만들 수 있다.
물리엔진은 physics properties 에서 physic를 선택하고 값을 입력하면된다.
여러 물체에 material 효과를 한번에 적용하기 위해서는 원하는 물체를 모두 선택하고 특성값을 적용하고 왼쪽위 object - make links - materials을 누르면 선택한 모든물체에 material이 적용된다.
오른쪽 scene properties - rigid body world 에서 물리엔진이 적용되는 프레임숫자와 cache 에서 모든 프레임을 bake하면 물리엔진이 적용된 것을 확인 할 수 있다.
텍스트 에디터를 실행했을 때 오류가 생길 수 있는데 시스템 콘솔을 확인하라고 한다. 시스템 콘솔은 블렌더 처음 시작할때 나오는 콘솔이고 메뉴의 window - toggle system console에서 어떤 오류가 생겼는지 확인할 수 있다.
댓글에 좌표값을 설정하는 방법에 대한 조언이 있었다. x와 y값을 z 반복문 뒷쪽에 넣어서 기존 z 값에서 -2를 해주지 않아 좀 더 쉽게 이해할 수 있게 만들었다.
import bpy
number_of_cubes = 7
x_pos = 0
y_pos = 0
z_pos = 0
for i in range(number_of_cubes):
y_pos = 0
for j in range(number_of_cubes):
z_pos = 0
for k in range(number_of_cubes):
bpy.ops.mesh.primitive_cube_add(enter_editmode=False,
location=(z_pos, y_pos, x_pos))
z_pos += 2
bpy.ops.rigidbody.object_add()
bpy.context.object.rigid_body.collision_shape = 'BOX'
bpy.context.object.rigid_body.use_margin = True
bpy.context.object.rigid_body.collision_margin = 0
bpy.context.object.rigid_body.linear_damping = 0.35
bpy.context.object.rigid_body.angular_damping = 0.6
bpy.context.object.rigid_body.mass = 20
y_pos+=2
x_pos+=2
참고
'프로그래밍 > 파이썬' 카테고리의 다른 글
코드업 6083 문제 풀이 (0) | 2021.05.22 |
---|---|
파이썬 초보 단축키 (0) | 2021.05.20 |
파이썬 kaggle 머신러닝 입문 1~3/7 (0) | 2021.05.19 |
파이썬 kaggle 대회 참가하기 기초(타이타닉 생존예측) (0) | 2021.05.19 |
파이썬 kaggle 강의 7/7 (0) | 2021.05.18 |