블렌더의 파이썬 스크립트 시작하기 _ 02
계속을 3년 후에 쓴다고는…
3년 전에 Blender의 Python 콘솔을 터치하고 3년 만에 만날 수 있는 기회가 나왔으므로 계속 쓰고 싶습니다.
블렌더 버전
Blender2.8.1a: 대폭적인 UI와 API의 변경이 있었던 것 같습니다.
블렌더의 디버그 환경
다음과 같은 배치로 했습니다.
그림 표시의 왼쪽 하단에 Text Editor
오른쪽 하단에 Python Editor
를 배치했습니다.
최소 점 데이터를 표시하십시오.
스크립트는, 참고의 Blender + Python으로 포인트 클라우드 시각화 기사를 참고로 했습니다.
import bpy
import numpy as np
def render(points):
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete(True)
mat = bpy.data.materials.new("BLUE")
mat.diffuse_color = (.33, .43, .95, 1)
bpy.ops.mesh.primitive_plane_add(location=(0, 0, -1))
plane = bpy.context.object
plane.scale = (100, 100, 1)
for x, y, z in points:
bpy.ops.mesh.primitive_uv_sphere_add(location=(x, y, z))
sphere = bpy.context.object
sphere.scale = (0.02, 0.02, 0.02)
sphere.data.materials.append(mat)
for loc, rot in [[(0, -5, 5), (-np.pi * 1 / 4, 0, np.pi)],
[(0, 5, 5), (np.pi * 1 / 4, 0, -np.pi)],
[(-5, 0, 5), (-np.pi * 1 / 4, 0, np.pi / 2)],
[(5, 0, 5), (-np.pi * 1 / 4, 0, -np.pi / 2)]]:
light_data = bpy.data.lights.new(name="light", type="AREA")
light_data.energy = 500
light_object = bpy.data.objects.new(name="light", object_data=light_data)
bpy.context.collection.objects.link(light_object)
bpy.context.view_layer.objects.active = light_object
light_object.location = loc
light_object.rotation_euler = rot
bpy.ops.object.camera_add(location=(3.25, -2.48, 0.745))
camera_rotations = (np.pi * 78 / 180, 0, 52.5 * np.pi / 180)
bpy.data.objects["Camera"].rotation_euler = camera_rotations
bpy.context.scene.render.resolution_x = 500
bpy.context.scene.render.resolution_y = 500
bpy.context.scene.render.resolution_percentage = 100
bpy.context.scene.camera = bpy.context.object
# bpy.context.scene.render.image_settings.file_format = "PNG"
bpy.ops.render.render(write_still=True)
if __name__ == "__main__":
points = np.loadtxt("C:\\Blender_works\\min_sample.csv", delimiter=",")
render(points)
약 1000 개의 데이터를 시각화 해보십시오.
데이터 작성 스크립트
import numpy as np
import pandas as pd
N = 1000
df =pd.DataFrame({
"x": np.random.uniform(0.0, 10., N),
"y": np.random.uniform(0.0, 10., N),
"z": np.random.uniform(0.0, 10., N)
})
df.to_csv("./random_data.csv", header=False, index=False)
다음 번에
Jupyter notebook의 제휴 등을 조사해 나가려고 생각합니다.
참고
다음과 같은 배치로 했습니다.
그림 표시의 왼쪽 하단에
Text Editor
오른쪽 하단에 Python Editor
를 배치했습니다.최소 점 데이터를 표시하십시오.
스크립트는, 참고의 Blender + Python으로 포인트 클라우드 시각화 기사를 참고로 했습니다.
import bpy
import numpy as np
def render(points):
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete(True)
mat = bpy.data.materials.new("BLUE")
mat.diffuse_color = (.33, .43, .95, 1)
bpy.ops.mesh.primitive_plane_add(location=(0, 0, -1))
plane = bpy.context.object
plane.scale = (100, 100, 1)
for x, y, z in points:
bpy.ops.mesh.primitive_uv_sphere_add(location=(x, y, z))
sphere = bpy.context.object
sphere.scale = (0.02, 0.02, 0.02)
sphere.data.materials.append(mat)
for loc, rot in [[(0, -5, 5), (-np.pi * 1 / 4, 0, np.pi)],
[(0, 5, 5), (np.pi * 1 / 4, 0, -np.pi)],
[(-5, 0, 5), (-np.pi * 1 / 4, 0, np.pi / 2)],
[(5, 0, 5), (-np.pi * 1 / 4, 0, -np.pi / 2)]]:
light_data = bpy.data.lights.new(name="light", type="AREA")
light_data.energy = 500
light_object = bpy.data.objects.new(name="light", object_data=light_data)
bpy.context.collection.objects.link(light_object)
bpy.context.view_layer.objects.active = light_object
light_object.location = loc
light_object.rotation_euler = rot
bpy.ops.object.camera_add(location=(3.25, -2.48, 0.745))
camera_rotations = (np.pi * 78 / 180, 0, 52.5 * np.pi / 180)
bpy.data.objects["Camera"].rotation_euler = camera_rotations
bpy.context.scene.render.resolution_x = 500
bpy.context.scene.render.resolution_y = 500
bpy.context.scene.render.resolution_percentage = 100
bpy.context.scene.camera = bpy.context.object
# bpy.context.scene.render.image_settings.file_format = "PNG"
bpy.ops.render.render(write_still=True)
if __name__ == "__main__":
points = np.loadtxt("C:\\Blender_works\\min_sample.csv", delimiter=",")
render(points)
약 1000 개의 데이터를 시각화 해보십시오.
데이터 작성 스크립트
import numpy as np
import pandas as pd
N = 1000
df =pd.DataFrame({
"x": np.random.uniform(0.0, 10., N),
"y": np.random.uniform(0.0, 10., N),
"z": np.random.uniform(0.0, 10., N)
})
df.to_csv("./random_data.csv", header=False, index=False)
다음 번에
Jupyter notebook의 제휴 등을 조사해 나가려고 생각합니다.
참고
import bpy
import numpy as np
def render(points):
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete(True)
mat = bpy.data.materials.new("BLUE")
mat.diffuse_color = (.33, .43, .95, 1)
bpy.ops.mesh.primitive_plane_add(location=(0, 0, -1))
plane = bpy.context.object
plane.scale = (100, 100, 1)
for x, y, z in points:
bpy.ops.mesh.primitive_uv_sphere_add(location=(x, y, z))
sphere = bpy.context.object
sphere.scale = (0.02, 0.02, 0.02)
sphere.data.materials.append(mat)
for loc, rot in [[(0, -5, 5), (-np.pi * 1 / 4, 0, np.pi)],
[(0, 5, 5), (np.pi * 1 / 4, 0, -np.pi)],
[(-5, 0, 5), (-np.pi * 1 / 4, 0, np.pi / 2)],
[(5, 0, 5), (-np.pi * 1 / 4, 0, -np.pi / 2)]]:
light_data = bpy.data.lights.new(name="light", type="AREA")
light_data.energy = 500
light_object = bpy.data.objects.new(name="light", object_data=light_data)
bpy.context.collection.objects.link(light_object)
bpy.context.view_layer.objects.active = light_object
light_object.location = loc
light_object.rotation_euler = rot
bpy.ops.object.camera_add(location=(3.25, -2.48, 0.745))
camera_rotations = (np.pi * 78 / 180, 0, 52.5 * np.pi / 180)
bpy.data.objects["Camera"].rotation_euler = camera_rotations
bpy.context.scene.render.resolution_x = 500
bpy.context.scene.render.resolution_y = 500
bpy.context.scene.render.resolution_percentage = 100
bpy.context.scene.camera = bpy.context.object
# bpy.context.scene.render.image_settings.file_format = "PNG"
bpy.ops.render.render(write_still=True)
if __name__ == "__main__":
points = np.loadtxt("C:\\Blender_works\\min_sample.csv", delimiter=",")
render(points)
데이터 작성 스크립트
import numpy as np
import pandas as pd
N = 1000
df =pd.DataFrame({
"x": np.random.uniform(0.0, 10., N),
"y": np.random.uniform(0.0, 10., N),
"z": np.random.uniform(0.0, 10., N)
})
df.to_csv("./random_data.csv", header=False, index=False)
다음 번에
Jupyter notebook의 제휴 등을 조사해 나가려고 생각합니다.
참고
Reference
이 문제에 관하여(블렌더의 파이썬 스크립트 시작하기 _ 02), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/muripo_life/items/7051775049ad8f4b523d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)