アニメ『幼女戦記』
兵士たちが銃を持って空を駆け回ります。なんだか戦い方がモビルスーツです。編隊を組んで飛行してくる兵士たちがザクにしか見えません。外見は幼女そのものの主人公、ターニャ・フォン・デグレチャフの強さは圧倒的です。ターニャ1人にザク達は壊滅させられます。もう戦い方がニュータイプです。1話目は特に引き込まれる要素がなかったのですが、このアニメ2話目めちゃめちゃ面白いです。ターニャがどうなっていくのかとても楽しみになりました。
ところでターニャが大爆発を引き起こす銃弾を打つとき、宙に魔王陣が投影されると、まるで機械仕掛けで放出エネルギーを集めているかのようにたくさんの歯車が現れます。魔法がどういう仕組みかはよくわかりませんが、この一瞬登場する歯車、腕時計の中の歯車みたいでカッコいいです。
では歯車バンザイということで、Blenderで歯車作ります。
| 準備するもの |
|
いつものごとく最初のCubeは削除して、代わりにCircleを使います。頂点数は歯数に比例してます。極端に少ないと歯車に見えません。ここでは64個にしました。
bpy.ops.mesh.primitive_circle_add(vertices=64)

モードを編集モードに変更し、edge選択モードにします。そして一旦すべて非選択にします。
bpy.ops.object.mode_set(mode='EDIT') bpy.ops.mesh.select_mode(type='EDGE') bpy.ops.mesh.select_all(action='DESELECT')
次に4つ飛ばしで辺(edge)を選択していきます。
for i in range(0,16): mesh.edges[i*4].select = True

一周すべて選択し終わったら縮小します。これで歯車の輪郭ができます。
bpy.ops.transform.resize(value=(0.8, 0.8, 0.8))

今度は歯車の軸用の穴です。これも円でつくります。
オブジェクトモードに戻し、円の追加をして縮小します。
bpy.ops.object.mode_set(mode='OBJECT') bpy.ops.mesh.primitive_circle_add() bpy.ops.transform.resize(value=(0.1,0.1,0.1))

最初に作った歯車の輪郭と、2番めに作った軸の穴を結合します。
最初に作った歯車の輪郭オブジェクトはCircleいうデフォルト名ですので、この名称を使ってオブジェクト選択し、join()を実行すれば、2つのオブジェクトが結合して一つになります。
bpy.data.objects["Circle"].select = True bpy.ops.object.join()

今はただの線が2つあるだけですので、この2つの間に面を張ります。再度編集モードにして、edge選択、今度はすべての辺(edge)を選択して、fill()を実行します。
bpy.ops.object.mode_set(mode='EDIT') bpy.ops.mesh.select_mode(type='EDGE') bpy.ops.mesh.select_all(action='SELECT') bpy.ops.mesh.fill()

後はextrudeで厚みをもたせれば完成です。
bpy.ops.mesh.extrude_region_move(
TRANSFORM_OT_translate={"value":(0, 0, 0.2)}
)
最終的に出来上がったソースはこれです。
1 #!/bin/bash
2 cat <<EOL>/tmp/tmp.py
3
4 import bpy,bmesh
5
6 bpy.ops.object.delete()
7
8 num=16
9 bpy.ops.mesh.primitive_circle_add(vertices=num*4)
10
11 bpy.ops.object.mode_set(mode='EDIT')
12 bpy.ops.mesh.select_mode(type='EDGE')
13
14 mesh=bmesh.from_edit_mesh(bpy.context.object.data)
15
16 bpy.ops.mesh.select_all(action='DESELECT')
17 for i in range(0,num):
18 mesh.edges[i*4].select = True
19 s=0.85
20 bpy.ops.transform.resize(value=(s,s,s))
21
22 bpy.ops.object.mode_set(mode='OBJECT')
23 bpy.ops.mesh.primitive_circle_add()
24 s=0.1
25 bpy.ops.transform.resize(value=(s,s,s))
26
27 bpy.data.objects["Circle"].select = True
28 bpy.ops.object.join()
29
30 bpy.ops.object.mode_set(mode='EDIT')
31 bpy.ops.mesh.select_mode(type='EDGE')
32 bpy.ops.mesh.select_all(action='SELECT')
33 bpy.ops.mesh.fill()
34
35 bpy.ops.mesh.extrude_region_move(
36 TRANSFORM_OT_translate={"value":(0, 0, 0.2)}
37 )
38
39 bpy.data.lamps['Lamp'].distance=3000
40 bpy.data.lamps['Lamp'].type='SUN'
41
42 EOL
43 blender -P /tmp/tmp.py
以下のような歯車ができます。


コメント
[…] ← Blenderで歯車を作る […]