ドラマ『侠飯〜おとこめし〜』(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




コメント