Blenderでプチプチシート

行列



アニメ『AKIBA’S TRIP -THE ANIMATION-』
よくあるアニメでは、普通の日常を送っていた主人公は、異能バトルを目の当たりにすると、なかなか信じてくれませんが、このアニメの主人公は、大変物分りが良く、なんでもすぐに受け入れます。その辺りが展開がスピーディーで、めんどくさくなくて良い感じです。ゲームのアニメ化らしく、ゲームと同じく作中の秋葉原の店舗は実名のようです。
敵は弱そうななのにとても強くて、弱点は肌の露出です。つまり服を脱がせばやっつけることができます。敵が束になって服を脱がされて爆発していくのが爽快です

爽快といえば、気泡緩衝材です。Blenderで作ってみます。
(ずっとプチプチシートと呼んでいましたが、プチプチは商品名のようです)

作るのは、Planeの上にCylinderを乗せただけの絵です。今回はCylinderのコピー時に、 無理やり行列を使ってみます。
コピーは上、右、下、左の順番に行います。

\[
UP = \left(
\begin{array}{cc}
0 \\
1
\end{array}
\right)
\]
\[
RIGHT = \left(
\begin{array}{cc}
1 \\
0
\end{array}
\right)
\]
\[
DOWN = \left(
\begin{array}{cc}
0 \\
-1
\end{array}
\right)
\]
\[
LEFT = \left(
\begin{array}{cc}
-1 \\
0
\end{array}
\right)
\]

     1	#!/bin/bash
     2	cat <<EOL>/tmp/tmp.py
     3	
     4	import bpy,numpy
     5	
     6	red=bpy.data.materials.new("red")
     7	red.diffuse_color=(0.8, 0.1, 0.1)
     8	red.use_transparency=True
     9	red.alpha=0.3
    10	red.emit=0.1
    11	
    12	bpy.ops.object.delete()
    13	
    14	bpy.ops.mesh.primitive_plane_add()
    15	
    16	bpy.ops.transform.resize(value=(20,20,1))
    17	bpy.context.object.data.materials.append(red)
    18	
    19	bpy.ops.mesh.primitive_cylinder_add()
    20	bpy.ops.transform.resize(value=(0.4, 0.4, 0.1))
    21	bpy.data.objects['Cylinder'].location=(0,0,0.2)
    22	bpy.context.object.data.materials.append(red)
    23	bpy.ops.object.shade_smooth()
    24	
    25	bpy.data.lamps['Lamp'].distance=3000
    26	bpy.data.lamps['Lamp'].type='SUN'
    27	
    28	UP = numpy.matrix('0;1') # (x,y)
    29	RIGHT = numpy.matrix('1;0') # (x,y)
    30	DOWN = numpy.matrix('0;-1') # (x,y)
    31	LEFT = numpy.matrix('-1;0') # (x,y)
    32	
    33	n=1
    34	i=0
    35	j=2
    36	while n<30:
    37		for m in [UP,RIGHT,DOWN,LEFT]:
    38			for i in range(0,n):
    39				bpy.ops.object.duplicate()
    40				bpy.ops.transform.translate(value=(m[0,0],m[1,0],0))
    41			j=j-1
    42			if j == 0:
    43				j=2
    44				n=n+1
    45	
    46	EOL
    47	blender -P /tmp/tmp.py

コメント

タイトルとURLをコピーしました