映画『SING/シング』
子供も見る映画はハッピーエンドと分かるので安心して見れますねえ。歌はきっと大人が楽しいと思います。
愛らしい動物たちの中で、特に可愛かったのがイカたち。なんとなく、こんな形だったかなあ、と思い出しつつ描いてみました。(たぶんだいぶ違ってますが)

今回は、スクリプトでこのイカを描いています。
最初のCubeを削除して、Sphereを追加します。Sphereは、縦に伸ばします。
bpy.ops.object.delete() bpy.ops.mesh.primitive_uv_sphere_add() bpy.ops.transform.resize(value=(1, 1, 4))

このオブジェクトは、イカの本体にします。
body=bpy.context.object
イカの耳を作ります。Y軸のEDGEを横に伸ばします。
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.select_mode(type='EDGE')
bpy.ops.mesh.select_all(action='DESELECT')
import bmesh
bm=bmesh.from_edit_mesh(bpy.context.object.data)
for e in bm.edges:
if round(e.verts[0].co.y,4)==0 and round(e.verts[1].co.y,4)==0:
if round(e.verts[0].co.z,4)>0:
e.select=True
bpy.ops.transform.resize(value=(1.7, 1, 1))

本体の下の方は、足に置き換えるので削除します。
bpy.ops.mesh.select_mode(type='FACE')
bpy.ops.mesh.select_all(action='DESELECT')
bm=bmesh.from_edit_mesh(bpy.context.object.data)
for f in bm.faces:
if round(f.verts[0].co.z,4)<-0.4:
f.select=True
bpy.ops.mesh.delete()

オブジェクトモードに戻しておきます。
bpy.ops.object.mode_set(mode='OBJECT')
足を作ります。Sphereを追加し、縦に伸ばしてイカの本体の下に配置します。
足は全部で4本作ります。
bpy.ops.mesh.primitive_uv_sphere_add() bpy.ops.transform.resize(value=(0.4, 0.4, 4)) bpy.ops.transform.translate(value=(0.4, 0.4, -2)) leg1=bpy.context.object

マテリアルを作ります。本体と足の紫と、目の白、黒です。
blue=bpy.data.materials['Material']
blue.diffuse_color=(0.1, 0.1, 0.6)
blue.emit=0.7
white=bpy.data.materials.new('Material.001')
white.diffuse_color=(1, 1, 1)
white.emit=0.7
black=bpy.data.materials.new('Material.002')
black.diffuse_color=(0.1, 0.1, 0.1)
black.emit=0
目は、Sphereで、上の方を色を変えて瞳にします。それを90°回転すればできあがりです。
bpy.ops.mesh.primitive_uv_sphere_add()
bpy.context.object.data.materials.append(white)
bpy.context.object.data.materials.append(black)
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.select_mode(type='FACE')
bpy.ops.mesh.select_all(action='DESELECT')
bm=bmesh.from_edit_mesh(bpy.context.object.data)
for f in bm.faces:
if round(f.verts[0].co.z,4)>0.7:
f.material_index=1
bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.transform.rotate(value=3.14/2,axis=(1, 0, 0),constraint_axis=(True,True,True))


全スクリプトです。
bpy.ops.object.delete()
bpy.ops.mesh.primitive_uv_sphere_add()
bpy.ops.transform.resize(value=(1, 1, 4))
body=bpy.context.object
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.select_mode(type='EDGE')
bpy.ops.mesh.select_all(action='DESELECT')
import bmesh
bm=bmesh.from_edit_mesh(bpy.context.object.data)
for e in bm.edges:
if round(e.verts[0].co.y,4)==0 and round(e.verts[1].co.y,4)==0:
if round(e.verts[0].co.z,4)>0:
e.select=True
bpy.ops.transform.resize(value=(1.7, 1, 1))
bpy.ops.mesh.select_mode(type='FACE')
bpy.ops.mesh.select_all(action='DESELECT')
bm=bmesh.from_edit_mesh(bpy.context.object.data)
for f in bm.faces:
if round(f.verts[0].co.z,4)<-0.4:
f.select=True
bpy.ops.mesh.delete()
bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.mesh.primitive_uv_sphere_add()
bpy.ops.transform.resize(value=(0.4, 0.4, 4))
bpy.ops.transform.translate(value=(0.4, 0.4, -2))
leg1=bpy.context.object
bpy.ops.object.duplicate()
bpy.ops.transform.translate(value=(-0.8, -0.8, 0))
leg2=bpy.context.object
bpy.ops.object.duplicate()
bpy.ops.transform.translate(value=(0.8, 0, 0))
leg3=bpy.context.object
bpy.ops.object.duplicate()
bpy.ops.transform.translate(value=(-0.8, 0.8, 0))
leg4=bpy.context.object
blue=bpy.data.materials['Material']
blue.diffuse_color=(0.1, 0.1, 0.6)
blue.emit=0.7
white=bpy.data.materials.new('Material.001')
white.diffuse_color=(1, 1, 1)
white.emit=0.7
black=bpy.data.materials.new('Material.002')
black.diffuse_color=(0.1, 0.1, 0.1)
black.emit=0
bpy.ops.mesh.primitive_uv_sphere_add()
bpy.context.object.data.materials.append(white)
bpy.context.object.data.materials.append(black)
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.select_mode(type='FACE')
bpy.ops.mesh.select_all(action='DESELECT')
bm=bmesh.from_edit_mesh(bpy.context.object.data)
for f in bm.faces:
if round(f.verts[0].co.z,4)>0.7:
f.material_index=1
bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.transform.rotate(value=3.14/2,axis=(1, 0, 0),constraint_axis=(True,True,True))
bpy.ops.transform.resize(value=(0.4, 0.4, 0.4))
bpy.ops.transform.translate(value=(0.5, -0.77, 0.2))
eye1=bpy.context.object
bpy.ops.object.duplicate()
bpy.ops.transform.translate(value=(-1, 0, 0))
eye2=bpy.context.object
body.active_material=blue
leg1.active_material=blue
leg2.active_material=blue
leg3.active_material=blue
leg4.active_material=blue
ボーンをいれてポーズ。


コメント