ドラマ『侠飯〜おとこめし〜』(2016)
ヤクザの抗争に巻き込まれてしまったことで、組長を自分のアパートでかくまうはめになってしまった大学生、良太。
組長は毎回魅惑の料理を良太にも作るのですが、黙って食べる組長に対して、うっまーを連発する良太の食べっぷりがいいです。美味しそうに食べます。
私が一番食べたかったのは、第2話の「焦がし醤油の大蒜炒飯」。
ということで、Blenderで作ってみます。
まずは、米から作ります。diffuse_colorで卵の色をつけて、emitで光らせておきます。この米は、パーティクルのオブジェクトになるので直接レンダリングはしませんので、別レイヤーにします。
import bpy def layers(l): all = [False]*20 all[l]=True return all yellow=bpy.data.materials.new("test") yellow.diffuse_color=(1, 0.9, 0.1) yellow.use_cast_shadows=True yellow.emit=0.7 bpy.ops.mesh.primitive_uv_sphere_add() bpy.ops.transform.resize(value=(0.2, 0.1, 0.4)) bpy.context.object.data.materials.append(yellow) bpy.data.objects['Sphere'].layers = layers(1) EOL blender -P /tmp/tmp.py
テーブルと、皿を作ります。テーブルは赤色、皿は炒飯黄色が映えそうな黒にします。
bpy.data.materials['Material'].diffuse_color=(1, 0, 0) bpy.data.objects['Cube'].location=(0,0,-1) bpy.ops.transform.resize(value=(9,9,1)) black=bpy.data.materials.new("test2") black.diffuse_color=(0, 0, 0) black.raytrace_mirror.use=True black.raytrace_mirror.reflect_factor=0.02 bpy.ops.mesh.primitive_cylinder_add() bpy.ops.transform.resize(value=(1, 1, 0.01)) bpy.context.object.data.materials.append(black)
球体を歪めて、皿の上に置きます。
bpy.ops.mesh.primitive_uv_sphere_add() bpy.context.object.data.materials.append(yellow) bpy.ops.transform.resize(value=(0.4, 0.4, 0.2)) bpy.data.objects['Sphere.001'].location=(0, 0, 0.2) bpy.ops.object.shade_smooth() bpy.ops.object.particle_system_add() bpy.data.particles['ParticleSettings'].effector_weights.gravity=0.9 bpy.data.particles['ParticleSettings'].effector_weights.force=0.300 bpy.data.particles['ParticleSettings'].render_type='OBJECT' bpy.data.particles['ParticleSettings'].dupli_object=bpy.data.objects['Sphere']
この物体から焼き飯が生成されます。
ALT+Aを押すと、このように米が浮き出てきます。インスタントラーメンのようです。
まとめるとこのようなスクリプトになります。
~$ cat -n friedrice.sh 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, 0.9, 0.1) 13 yellow.use_cast_shadows=True 14 yellow.emit=0.7 15 16 black=bpy.data.materials.new("test2") 17 black.diffuse_color=(0, 0, 0) 18 black.raytrace_mirror.use=True 19 black.raytrace_mirror.reflect_factor=0.02 20 21 bpy.data.materials['Material'].diffuse_color=(1, 0, 0) 22 23 bpy.data.objects['Cube'].location=(0,0,-1) 24 bpy.ops.transform.resize(value=(9,9,1)) 25 26 bpy.ops.mesh.primitive_uv_sphere_add() 27 bpy.ops.transform.resize(value=(0.2, 0.1, 0.4)) 28 bpy.context.object.data.materials.append(yellow) 29 bpy.data.objects['Sphere'].layers = layers(1) 30 31 bpy.ops.mesh.primitive_uv_sphere_add() 32 bpy.context.object.data.materials.append(yellow) 33 bpy.ops.transform.resize(value=(0.4, 0.4, 0.2)) 34 bpy.data.objects['Sphere.001'].location=(0, 0, 0.2) 35 bpy.ops.object.shade_smooth() 36 37 bpy.ops.object.particle_system_add() 38 39 bpy.data.particles['ParticleSettings'].effector_weights.gravity=0.9 40 bpy.data.particles['ParticleSettings'].effector_weights.force=0.300 41 bpy.data.particles['ParticleSettings'].render_type='OBJECT' 42 bpy.data.particles['ParticleSettings'].dupli_object=bpy.data.objects['Sphere'] 43 bpy.data.particles['ParticleSettings'].use_rotations = True 44 bpy.data.particles['ParticleSettings'].rotation_factor_random=1 45 bpy.data.particles['ParticleSettings'].count=500000 46 47 bpy.ops.mesh.primitive_cylinder_add() 48 bpy.ops.transform.resize(value=(1, 1, 0.01)) 49 bpy.context.object.data.materials.append(black) 50 51 bpy.data.lamps['Lamp'].type='SUN' 52 53 EOL 54 blender -P /tmp/tmp.py
コメント