Blenderでヒマワリの図工

bl-sunflower-001
子供の自由研究や図工を見ていると、つい私もやりたくなってしまいます。押し花をしている子供の横で、ヒマワリの種をのりでくっつけてヒマワリの絵を描こうと思ったのですが、種がもったいないので、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

コメント

  1. Dan91 says:

    I see your site is similar to my blog. Do you allow guest
    posts? I can write unique and interesting articles for you.
    Let me know if you are interested.

  2. Landon88 says:

    Reading your site is big pleasure for me, it deserves to
    go viral, you need some initial traffic only. If you want to know how to get it search for: blackhatworren’s strategies

  3. Debrah says:

    Keep it coming, wrirets, this is good stuff.

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