2000個の玉をぶちまけてくるくる回っているところを見ていると何故か模様が浮かび上がる映像です。玉が転がる状況は好きに作ってもらえばいいですが、床板、ガードレール、大量の玉を配置するスクリプトを張っときます。前準備に特別なことはないので見れば何してるかわかるかと思います。
ポイントは準備ができたらアニメーションをスタートし、お好みのフレームでいったん止めます。そのあとオブジェクトモードになっていることを確認して"C"キーを押します。これによりボックス選択ではなくサークル選択選択モードになりますので、マウスホイールでサイズを調整してから、対象としたいメッシュをまとめて選択します。その後マテリアルプロパティでお好きな設定をした後、"マテリアルを選択物にコピー"を選ぶことで、選択したメッシュに全て同じマテリアルが適用されます。サークルである必要はなく、1つ1つクリックして選択するなりしてください。ポイントはアニメーションを途中で止めてその瞬間にちゃんと見えるように指定するところです。
カメラ、ライトはお好きに設定しましょう。見下ろす感じのアングルがよろしいかと思います。
import bpy
for item in bpy.data.meshes:
bpy.data.meshes.remove(item)
f = 200
bpy.ops.mesh.primitive_plane_add(size=20, enter_editmode=False, align='WORLD', location=(0, 0, -1), scale=(1, 1, 1))
bpy.ops.rigidbody.object_add()
bpy.context.object.rigid_body.type = 'PASSIVE'
bpy.context.object.rigid_body.friction = 0.0
bpy.ops.mesh.primitive_plane_add(size=3, enter_editmode=False, align='WORLD', location=(3, 7, 3), scale=(1, 1, 1))
bpy.ops.rigidbody.object_add()
bpy.context.object.rigid_body.type = 'PASSIVE'
bpy.context.object.rigid_body.friction = 0.0
bpy.context.object.rotation_euler[1] = -0.5
bpy.context.object.rotation_euler[0] = 0.5
for z in range (0,10):
bpy.ops.mesh.primitive_torus_add(align='WORLD', location=(0, 0, -0.5+z*0.5), rotation=(0, 0, 0), major_radius=10, minor_radius=0.1)
bpy.ops.rigidbody.object_add()
bpy.context.object.rigid_body.type = 'PASSIVE'
bpy.context.object.rigid_body.friction = 0.0
bpy.context.object.rigid_body.collision_shape = 'MESH'
for z in range (0,f*3,3):
for x in range (0,3):
for y in range (0,3):
bpy.ops.mesh.primitive_uv_sphere_add(radius=0.5, enter_editmode=False, align='WORLD', location=(x+2, y+6, z+10), scale=(0.5, 0.5, 0.5))
bpy.ops.rigidbody.object_add()
bpy.context.object.rigid_body.collision_shape = 'SPHERE'
bpy.context.object.rigid_body.friction = 0.0
是非動画をミラーサイトでご覧になってください。
oneonet-blog.blogspot.com