映画『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
ボーンをいれてポーズ。
コメント