アニメ『RAIL WARS!』(2014)
見よう見ようと思っていてなかなか見てなかったこのアニメをようやく見始めました。
この鉄道会社の社員は拳銃を持てるんですねえ。
アニメの影響で、線路が作りたくなりました。
ドミノ倒しは少し休憩して、線路を作ります。
前回まで作っていたドミノエディタの画像を変えるだけで、線路エディタになります。
Blenderの最初のCubeを線路に変えます。
import math m=bpy.data.materials.new('Material.001') m.diffuse_color=(0.9, 0.8, 1) m.emit=0.2 bpy.context.object.data.materials.append(m) cube=bpy.data.objects['Cube'] bpy.ops.transform.resize(value=(0.2,1,0.05)) bpy.ops.rigidbody.object_add(type='ACTIVE') bpy.data.materials['Material'].diffuse_color=(0.22,0.16,0.05) bpy.ops.object.duplicate() bpy.ops.transform.resize(value=(0.2,1,2)) bpy.ops.transform.rotate(value= -math.pi/2,axis=(0,0,1)) bpy.ops.transform.translate(value=(0,0.7,0.2)) bpy.data.objects['Cube.001'].active_material=m; bpy.ops.object.duplicate() bpy.ops.transform.translate(value=(0,-1.4,0.0))
このようにCubeの形を変えて複製するだけで作れます。
このままではオブジェクトがばらばらですので、まとめます。
bpy.data.objects['Cube'].select = True bpy.data.objects['Cube.001'].select = True bpy.data.objects['Cube.002'].select = True bpy.context.scene.objects.active=cube bpy.ops.object.join();
オブジェクト名をCubeにしたかったので、active=cubeをしました。
後はドミノ配置と同じ要領で、並べます。
ん、向きが90度違ってました。join後に90度回転させます。
bpy.ops.transform.rotate(value= -math.pi/2,axis=(0,0,1))
さて、全体です。
def addobj( x, y, ch ): if ch!="0": bpy.ops.object.select_all(action='DESELECT') bpy.context.scene.objects.active=cube cube.select=True bpy.ops.object.duplicate() bpy.ops.transform.translate(value=(x,-y,1)) print(ch) if ch=="2": bpy.ops.transform.rotate(value=-math.pi/2,axis=(0,0,1)) if ch=="3": bpy.ops.transform.rotate(value= math.pi/4,axis=(0,0,1)) bpy.ops.transform.translate(value=(-0.6, -0.6, 0)) if ch=="4": bpy.ops.transform.rotate(value= -math.pi/4,axis=(0,0,1)) bpy.ops.transform.translate(value=( 0.6, -0.6, 0)) if ch=="5": bpy.ops.transform.rotate(value= math.pi/4,axis=(0,0,1)) bpy.ops.transform.translate(value=( 0.6, 0.6, 0)) if ch=="6": bpy.ops.transform.rotate(value= -math.pi/4,axis=(0,0,1)) bpy.ops.transform.translate(value=(-0.6, 0.6, 0)) if ch=='#': bpy.ops.object.mode_set(mode='EDIT') bm=bmesh.from_edit_mesh(bpy.context.object.data) bm.faces.ensure_lookup_table() bm.faces[3].material_index=1 bpy.ops.object.mode_set(mode='OBJECT') import bmesh,math m=bpy.data.materials.new('Material.001') m.diffuse_color=(0.9, 0.8, 1) m.emit=0.2 bpy.context.object.data.materials.append(m) cube=bpy.data.objects['Cube'] bpy.ops.transform.resize(value=(0.2,1,0.05)) bpy.ops.rigidbody.object_add(type='ACTIVE') bpy.data.materials['Material'].diffuse_color=(0.22,0.16,0.05) bpy.ops.object.duplicate() bpy.ops.transform.resize(value=(0.2,1,2)) bpy.ops.transform.rotate(value= -math.pi/2,axis=(0,0,1)) bpy.ops.transform.translate(value=(0,0.7,0.2)) bpy.data.objects['Cube.001'].active_material=m; bpy.ops.object.duplicate() bpy.ops.transform.translate(value=(0,-1.4,0.0)) bpy.data.objects['Cube'].select = True bpy.data.objects['Cube.001'].select = True bpy.data.objects['Cube.002'].select = True bpy.context.scene.objects.active=cube bpy.ops.object.join(); bpy.ops.transform.rotate(value= -math.pi/2,axis=(0,0,1)) filename = "c:/Users/takk/Desktop/savedata.txt" f=open(filename) lines=f.readlines() for line in lines: lis=line.split(',') if len(lis) >= 3: x=int(lis[0]) y=int(lis[1]) ch=lis[2] addobj(x,y,ch) bpy.ops.mesh.primitive_plane_add() bpy.ops.transform.resize(value=(99,99,1)) bpy.ops.rigidbody.object_add(type='PASSIVE') bpy.ops.object.select_all(action='DESELECT') cube.select=True bpy.ops.object.delete() camera=bpy.data.objects['Camera'] camera.location=(10,20,60) camera.rotation_euler[0]=0 camera.rotation_euler[1]=0 camera.rotation_euler[2]=math.pi/2
線路っぽくはなりましたが、まだこの線路の上は電車は走れそうにありません。
コメント