以前記事に書いたけど、うちのこどもがマインクラフトにはまっていまして。
blog.honjala.net
一緒に遊んでいて色々建築するのは楽しいのだけど、
もっと手軽にできないものか、とあれこれ試行錯誤した結果、
超楽に建築できる仕組みが出来上がったので、ここで紹介します!
MagicaVoxel + 自作変換ツール で実現する建築自動化
この仕組みは、
- MagicaVoxel でボクセルデータを作成する
- 自作の変換ツールでボクセルデータをマイクラブロックデータに変換して配置する
という2つの手順で実現します。
詳細の前に今回の仕組みの前提として、
- マインクラフトBE(Win10版)とPE(iOS版)でのみ確認済み
- マインクラフトのワールド設定で「チートの実行」が有効になっている必要がある
- ユーザー(多分建築時に一番近くにいるユーザー)にオペレーター権限が必要
- MagicaVoxelと変換ツールを動かすためのPC(WindowsかMac)が必要
という条件が揃っている必要があります。
この仕組みを使うと、
こんな感じで作成した三次元画像データを...
![f:id:piro_suke:20181217231424p:plain f:id:piro_suke:20181217231424p:plain]()
こんな感じでマイクラの世界に自動生成できます。
![f:id:piro_suke:20181217231606p:plain f:id:piro_suke:20181217231606p:plain]()
以下、それぞれの手順と使用するツールの説明をしていきます。
<注意>
このアプリはまだ自分の環境でしか試していないプロトタイプなので、
環境によっては動かないことがあるかもしれません。
ちょっとずつバージョンアップしていく予定です!
MagicaVoxelでボクセルデータを作成する
ボクセルというのは、三次元版ドット絵みたいなもので、
ドット絵と同じように、ドット風のブロックを配置して三次元の絵を描いていきます。
MagicaVoxelというのはこのボクセルデータが超簡単に超快適に作れるフリーのツールです。
ephtracy.github.io
今回の仕組みは、このツールがあるから実現できたようなもので、
Unity等のデータを作ったりするのにも使えるようです。
チュートリアル動画も公開されているので、どんな感じで操作するか確認できます。
www.youtube.com
ドットを1つずつ置いていくだけでなく、面で操作したり、
ミラー操作で左右や上下の同じ位置に配置したり、
効率的に作成するための機能が多数用意されていて、
上で見せた灯台の画像も数分でできます。
この MagicaVoxel で描いた1つ1つのドットを
マイクラ上での1ブロックに変換することで、
建築物を生成するのが今回の仕組みのポイントとなります。
マイクラ建築用のボクセルデータを作成する
マイクラ建築用のボクセルデータを作成するには、
ちょっと追加で準備が必要となります。
ボクセルデータのドットをマイクラのブロックに変換する際、
ドットの色を元にマイクラブロックの種類が決まるので、
専用のパレットを使用する必要があります。
下記のリンクからダウンロードできるようにしたので、(PNGファイル)
https://pirosuke.github.io/games/minecraft-controller/pal_minecraft.png
ダウンロードしてMagicaVoxelインストール先のパレット用フォルダに保存してください。
MagicaVoxel の「Palette」メニューで保存したファイルをOpenすると
下記のようなパレットが読み込まれるはずです。
![f:id:piro_suke:20181217233657p:plain f:id:piro_suke:20181217233657p:plain]()
このパレットはブロックの種類ごとに分かれていて、上から
- 石系
- 「丸石」と「苔の生えた丸石」
- 「砂」と「赤砂」
- 木材系
- 鉱石&特殊系(金、氷塊、石炭、ラピスラズリ、ダイヤモンド、エメラルド、スライム)
- ガラス&ステンドガラス
- レンガ
- 粘土系
- 光る系
- コンクリート
となっています。その他のグレー部分は鉄ブロックになります。
パレットの準備ができたら、チュートリアルを参考に適当なボクセルデータを作成し、
保存してみましょう。保存する時は「.vox」形式のファイルとして保存されます。
マイクラ用ボクセルデータ作成のコツとしては、
立体を作ったら中を空にしておく等、
なるべく不要なドットを削除して減らしておくとマイクラでの建築時間が短くなります。
変換ツールでボクセルデータをマイクラブロックに変換して建築する
ボクセルデータができたら、いよいよマイクラブロックに変換してみましょう。
voxファイルを読み込んでマイクラに出力する変換用のアプリを用意したので、
下記からダウンロードしてください。
Windows10用
https://pirosuke.github.io/games/minecraft-controller/mcctrl_win.zip
Mac用
https://pirosuke.github.io/games/minecraft-controller/mcctrl_macos.zip
ZIP形式のファイルになっているので、解凍すると、
mc_ctrl.exe (Macの場合はmc_ctrl)
という実行ファイルが確認できるはずです。
(他のファイルはライブラリなので気にしないでください)
解凍したフォルダを適当な場所に置いて、
上記の実行ファイルをダブルクリックすると、
サーバアプリの黒い画面コンソールが立ち上がります。
これはマイクラとの通信ログが出力されるウィンドウで、
起動時に下記のようなメッセージが表示されるはずです。
minecraft websocket listening on ws://xxx.xxx.xxx.xxx:33003
web listening on http://xxx.xxx.xxx.xxx:33002
「xxx.xxx.xxx.xxx」の部分はアプリを動かしたPCのIPアドレスが入ります。
「minecraft〜」のあとの「ws://xxx.xxx.xxx.xxx:33003」が
マイクラからアプリに接続するためのURLで、
「web 〜」のあとの「http://xxx.xxx.xxx.xxx:33002」が
アプリを操作するためのWeb管理画面のURLとなります。(後で使います)
アプリを終了する時はコンソール画面を閉じるか、「Ctrl-C」を入力してください。
これでアプリの起動と終了ができるようになりました。
アプリで建築を行うための操作手順は下記の通りです:
- マイクラでアプリにconnectする
- マイクラで建築したい場所の座標を確認する
- Web管理画面でvoxファイルと座標を指定して建築開始!
マイクラでアプリにconnectする
まずはマイクラ側からアプリにconnectします。
建築を行いたいワールドを立ち上げて、
チャットコマンドで下記のコマンドを入力してください。
/connect xxx.xxx.xxx.xxx:33003
「xxx.xxx.xxx.xxx:33003」の部分にはコンソール画面で表示された
マイクラ用URLを入力します。(「ws://」は入力しなくてもOK。)
成功すると、
マイクラの画面に「サーバへの接続を確立しました」というメッセージが表示され、
同時にアプリのコンソール画面に「minecraft connected」という
メッセージが表示されます。これが表示されたら、接続成功です。
マイクラで建築したい場所の座標を確認する
ボクセルデータを建築する場所は座標で指定する必要があるので、
建築したい場所の座標を確認します。
まずマイクラの設定画面で座標表示設定をオンにしてから、
ワールドに入って建築したい場所に移動してください。
画面左上に「位置」という表示と一緒に出ている
3つの数値(左からx座標、y座標、z座標)が使用する座標情報になります。
Web管理画面でvoxファイルと座標を指定して建築開始!
最後に、Web管理画面で建築を実行します。
ブラウザを立ち上げて、アプリのコンソール画面に表示された
Web管理画面のURL( http://xxx.xxx.xxx.xxx:33002 )を開いてください。
そうすると、「Minecraft Client」というタイトルで下記のような画面が表示されるはずです。
![f:id:piro_suke:20181218000718p:plain f:id:piro_suke:20181218000718p:plain]()
同時に、アプリのコンソール画面に
「web user connected」と接続成功のメッセージが表示されるはずです。
表示を確認したらWeb管理画面に戻って、
下記のような「ボクセルフォルダパス」というフォームまでスクロールしてください。
![f:id:piro_suke:20181218000846p:plain f:id:piro_suke:20181218000846p:plain]()
「フォルダパス」欄に建築に使用するvoxファイルが入ったフォルダのパスを入力して、
「更新」ボタンをクリックしてください。
MagicaVoxelのvoxフォルダを指定しておくと、
作成したvoxファイルがデフォルトでそこに保存されるので便利です。
更新ボタンを押してから、その下の「ボクセル建築」フォームの
「ボクセル名」の選択肢に保存したvoxファイルの名前が出てきたら設定OKです。
これで建築の準備ができました。
次の手順で建築を開始します。
先程フォルダのパスを設定した箇所のすぐ下に「ボクセル建築」フォームがあるはずなので、
ここのx1,y1,z1に先程確認したx,y,z座標を入力します。
入力した座標位置が、ボクセルデータでいう、x:0,y:0,z:0地点(左下)になり、
そこから北東の位置に建築されますので、うまく想定した場所に建築されるように
マイクラ側を確認しながら座標を調整してください。
続いて、ボクセル名選択欄で作成したvoxファイルを選択します。
もう1つ、置換方法という入力があると思いますが、
これはブロックを置こうとした時に元々あるブロックをどうするかを指定するものです。
とりあえず「すべて置換」にしておきましょう。
最後に「実行」ボタンをクリックすると、建築が始まります。
マイクラ側を見ると、ブロックが自動でバァーっと生成されていくのが見られるはずです。
建築中はアプリのコンソールにログがドバドバ出ます。
ログが止まったら建築完了です。
建築中に建築場所から離れすぎると、
マイクラの制限でブロックが配置できなくなるようなので注意してください。
あとは建築される様を眺めるなり、
新しいvoxファイルを作成するなりして完成を待ちましょう!
おわり
でかい建物を作ってあげると、こどもも「すげー!」と喜ぶので、
ぜひ試してみてください。
手作業で作っていくのとちがい、
コマンドを実行すれば、何個でも同じものが作れるので、
色々部品を作って組み合わせて街を作る、みたいなこともやりやすくなります!
今回は紹介できませんでしたが、
アプリにはほかにも色々機能を入れてるので、また別の記事で紹介します!
ちなみにアプリ部分は、以前書いたポータブルWebアプリ形式で作ってみました。
blog.honjala.net