Blenderでヒマワリの図工

12-7.Blender

子供の自由研究や図工を見ていると、つい私もやりたくなってしまいます。押し花をしている子供の横で、ヒマワリの種をのりでくっつけてヒマワリの絵を描こうと思ったのですが、種がもったいないので、Blender内で図工します。

最初からあるCubeは、平にして地面に。なくてもよいです。

import bpy

bpy.data.objects['Cube'].location=(0,0,-2)
bpy.ops.transform.resize(value=(9,9,1))

ヒマワリの花びらは、一枚の円で作っておきます。

bpy.ops.mesh.primitive_cylinder_add()
bpy.ops.transform.resize(value=(0.8, 0.8, 0.01))
bpy.ops.rigidbody.object_add(type='PASSIVE')
bpy.data.objects["Cylinder"].rigid_body.collision_shape="CYLINDER"

bl-sunflower-002

ヒマワリの種を作ります。楕円形にします。

bpy.ops.mesh.primitive_uv_sphere_add()
bpy.ops.transform.resize(value=(0.5, 0.1, 1))

bl-sunflower-003
ヒマワリの種の色をつけて、小さくします。

brown=bpy.data.materials.new("test")
brown.diffuse_color=(0.1, 0.1, 0)

bpy.ops.mesh.primitive_uv_sphere_add()
bpy.ops.transform.resize(value=(0.5, 0.1, 1))
bpy.ops.transform.resize(value=(0.1, 0.1, 0.1))
bpy.context.object.data.materials.append(brown)

bl-sunflower-004

ヒマワリのたねを空中に浮かせて、100個コピーします。

bpy.data.objects['Sphere'].location=(0,0,0.5)

for i in range(0,100):
        bpy.ops.object.duplicate()

bl-sunflower-005

このままだと、アニメーション時に種が散ってしまいますので、飛び散らないようにドームを作ります。
bl-sunflower-008

py.ops.mesh.primitive_uv_sphere_add()
bpy.ops.transform.resize(value=(0.5, 0.5, 1))
bpy.ops.rigidbody.object_add(type='PASSIVE')

bl-sunflower-006

ドームは、別レイヤーにしておいて、見えないようにしておきます。

bpy.data.objects['Sphere.101'].layers = layers(1)

def layers(l):
    all = [False]*20
    all[l]=True
    return all

bl-sunflower-007

全部まとめるとこのようなスクリプトになりました。

     1	#!/bin/bash
     2	cat <<EOL>/tmp/tmp.py
     3	
     4	import bpy
     5	
     6	def layers(l):
     7	    all = [False]*20
     8	    all[l]=True
     9	    return all
    10	
    11	yellow=bpy.data.materials.new("test")
    12	yellow.diffuse_color=(1, 1, 0)
    13	brown=bpy.data.materials.new("test")
    14	brown.diffuse_color=(0.1, 0.1, 0)
    15	
    16	bpy.data.objects['Cube'].location=(0,0,-2)
    17	bpy.ops.transform.resize(value=(9,9,1))
    18	
    19	bpy.ops.mesh.primitive_cylinder_add()
    20	bpy.ops.transform.resize(value=(0.8, 0.8, 0.01))
    21	bpy.ops.rigidbody.object_add(type='PASSIVE')
    22	bpy.data.objects["Cylinder"].rigid_body.collision_shape="CYLINDER"
    23	bpy.context.object.data.materials.append(yellow)
    24	
    25	bpy.ops.mesh.primitive_uv_sphere_add()
    26	bpy.ops.transform.resize(value=(0.5, 0.1, 1))
    27	bpy.ops.transform.resize(value=(0.1, 0.1, 0.1))
    28	
    29	bpy.context.object.data.materials.append(brown)
    30	
    31	bpy.ops.rigidbody.object_add(type='ACTIVE')
    32	bpy.context.scene.cursor_location=(0,0,0)
    33	bpy.ops.object.origin_set(type="ORIGIN_CURSOR")
    34	
    35	bpy.data.objects['Sphere'].location=(0,0,0.5)
    36	
    37	for i in range(0,100):
    38		bpy.ops.object.duplicate()
    39	
    40	bpy.ops.mesh.primitive_uv_sphere_add()
    41	bpy.ops.transform.resize(value=(0.5, 0.5, 1))
    42	bpy.ops.rigidbody.object_add(type='PASSIVE')
    43	bpy.data.objects['Sphere.101'].layers = layers(1)
    44	
    45	EOL
    46	blender -P /tmp/tmp.py

横から見ると、ぜんぜんヒマワリに見えませんでした。
bl-sunflower-009

コメント

タイトルとURLをコピーしました