アニメ『幼女戦記』
兵士たちが銃を持って空を駆け回ります。なんだか戦い方がモビルスーツです。編隊を組んで飛行してくる兵士たちがザクにしか見えません。外見は幼女そのものの主人公、ターニャ・フォン・デグレチャフの強さは圧倒的です。ターニャ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で歯車を作る […]