BlenderでPythonを使えると知って、「2つを同時に勉強できるのはいいかも!」と思ってました。
とは言っても、BlenderもPythonもまったくの初心者だったので、同時に使えるようになるまで時間がかかりました。
「BlenderユーザーのためのPython入門」というバッチリな本があったので、それで基礎を学んでます。
最初の一歩として、「BlenderユーザーのためのPython入門」のSECTION-022をほんの少しアレンジして作ってみました。
code↓
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import bpy | |
import random | |
NUM_X = 7 | |
NUM_Y = 7 | |
def make_sphere(x, y, z): | |
loc = (x, y, z) | |
cube = bpy.ops.mesh.primitive_uv_sphere_add(location=loc) | |
bpy.ops.object.material_slot_add() | |
r = random.random() | |
g = random.random() | |
b = random.random() | |
ma = make_material("Color"+str(x)+str(y), (r, g, b, 1)) | |
for m in bpy.context.active_object.material_slots: | |
m.material = ma | |
def make_material(name, color): | |
ma = bpy.data.materials.new(name) | |
ma.diffuse_color = color | |
bpy.context.object.data.materials.append(ma) | |
return ma | |
def make_spheres(num_x, num_y): | |
for x in range(num_x): | |
for y in range(num_y): | |
make_sphere(x*2-(num_x-1), y*2-(num_y-1), random.randint(0, 10)) | |
if __name__ == "__main__": | |
make_spheres(NUM_X, NUM_Y) |
こちらのざっくりとした作り方の手順は以下です。
まず、最初に7x7個の丸(UV球)を並べます。
ライトは手動で設定しました。
意外と簡単にできて、テンションがあがりました。
Pythonは理解できていない部分が多いですが、とりあえずイメージしたものができました。
次は、このPythonのコードを理解することをがんばります。
BlenderでPythonを使ってみたいのですが、使いこなすには時間がかかりそうです。https://t.co/pFpsGmm70T
— radiospj (@radiospj) November 27, 2021