『機動戦士ガンダムユニコーン RE:0096』(2016)
前作は見てなくて初めてのユニコーンになります。ガンダムって面白いですよね。
面白い要素は人それぞれでしょうけど、私の場合は、ロボットが変形するのか、しないのか、です。
ガンダムユニコーンというぐらいだから、ガンダムが一角獣に変形するのを期待していました。いや待てよ、それってトランスフォーマーだよなぁ、と思いつつ、変形を想像しながら本作を見始めました。
敵が自分より強いと急に激おこ。なんか勝手に変形する仕組みらしいシステムで現れた姿は、残念ながら一角獣ではありませんでした。
しかーし、一角獣ではないけれど、私の期待を良い意味で裏切ってくれたんです。
なんと、頭部の角が2つに割れたんです。
私の人生のどこを切り取って探してもまったく経験のない、絶対に割れるはずのないものが割れたので驚愕、変な声をあげてしまいましたよ。
一本の角が2つに割れると、当然のようにいつものガンダムの顔になり、アニメ内のキャラクター達までも私と同じく驚愕し、そうしてようやく、ガンダムだと認識しているようでした。
今気づいたんですか! アンパンマン如く目が節穴
(ネオジオン風 地上絵)
今回はMinecraft PI EDで地上絵を描きます。
GIMPでポスタライゼーションしたひまわりの画像(64×64)を使います。
ちなみに、ポスタライゼーションは、このメニューで。
加工後の画像は色の組み合わせが少なくなり、以下のように9種類ほどになります。
~$ od -tx1 -An -j54 -vw3 blog/lic/img/himawari-pos.bmp | sort | uniq 00 80 00 00 80 80 00 80 ff 00 ff 80 00 ff ff 80 80 00 80 80 80 80 ff 80 80 ff ff ~$
地上絵は色鮮やかに描きたいです。ブロックの色で近い色を探したいので、色の豊富なWOOLから選ぶことにします。
Minecraft PI EDで色付きのWOOLを生成するには、やはりsetBlockを使います。WOOLのブロックIDは35です。
setBlock(x, y, z, ブロックID, 色番号)
しかし、どの色がどの色番号か分かりません。実際にブロックを並べて確認することにしました。WOOLを並べるスクリプトはこれです。
~$ cat wool.py import minecraft mc=minecraft.Minecraft.create() mc.setBlocks(-60,0,-60, 60,60,60, 0) for i in range(0,128): x=i%10 z=i/10 mc.setBlock(x,0,z, 35, i)
上記スクリプトを実行すると、このように色番号順でブロックが並びます。
同じ色の繰り返しのようです。
それぞれの色をMinecraft PIのWOOLの色から近い色を選択します。かなり適当に選んでいます。
色がある程度固まったらスクリプトのベースとするファイルを作成します。スクリプトをスクリプトを使って書くのでメタスクリプトですね。
~$ hexdump -s54 -ve '3/1 "%02x" "\n"' himawari-pos64.bmp | sort | uniq | xargs printf "dt['%s']\n" | tee colordata.txt dt={} dt['008000'] dt['008080'] dt['0080ff'] dt['00ff00'] dt['00ff80'] dt['00ffff'] dt['808000'] dt['808080'] dt['80ff80'] dt['80ffff'] ~$
使用する色データを並べて、pasteで各配列(Dictionary)に代入します。
~$ echo 13 13 12 1 13 4 5 5 5 13 | tr ' ' '\n' | paste -d= colordata.txt - dt['008000']=13 dt['008080']=13 dt['0080ff']=12 dt['00ff00']=1 dt['00ff80']=13 dt['00ffff']=4 dt['808000']=5 dt['808080']=5 dt['80ff80']=5 dt['80ffff']=13 ~$
上記の色データ設定を組み込んだスクリプトがこれです。
~$ cat t.py import minecraft,sys mc=minecraft.Minecraft.create() dt={} dt['008000']=13 dt['008080']=13 dt['0080ff']=12 dt['00ff00']=1 dt['00ff80']=13 dt['00ffff']=4 dt['808000']=5 dt['808080']=5 dt['80ff80']=5 dt['80ffff']=13 cnt=0 for line in sys.stdin: z=cnt/64 x=cnt%64 mc.setBlock(x,0,-z, 35,dt[line.rstip()]) cnt=cnt+1 ~$
生成されたスクリプトt.pyを実行すると、ひまわり地上絵が出現します。
hexdump -s54 -ve '3/1 "%02X" "\n"' himawari-pos64.bmp | python t.py
コメント