tanaka's Programming Memo

プログラミングについてのメモ。

MagicaVoxelにアニメーションを設定してUnityで動かす(obj版)

github.dev7.jp

上記のだいし様の記事に、操作に慣れていない人向けの補足を加えた記事です。BlenderやUnityが使える場合は元の記事で十分だと思います。

  • (2018/3/28 Blenderで、Subdivideする前に頂点をマージすると、形が崩れることがあったので、手順を逆にしました)
  • (2018/3/28 MagicaVoxelでOBJファイルをエクスポートする前に、Saveする手順を追加しました。これをやらないとエクスポートできないことがあったための対応)
  • (2018/3/27 BlenderEdit Modeにしてモデルを選択する前に、Outlinerで一度キャラクターを選んでおかないとアーマチュアが選択されてしまうので、手順を追加)

目次

前提

  • Unity2017.3.1
  • MagicaVoxel 0.99.1
  • Blender2.79a
  • Windowsのフォルダー操作や構造が理解できていること
  • Unityの基本操作ができること

MagicaVoxelへの素体の読み込み方法

"素体をベースにプリキュアモデリング"の"準備"にある"MagicaVoxelをインストールし、素体をインポートしましょう"の具体的な手順です。

必要なファイルのダウンロード

MagicaVoxelで作ったプリキュアをUnityで動かす | daishi blogの"素材配布"のところで、"MagicaVoxel用素体"(base.vox)と"素体用アーマチュア"(BaseArmature.blend)をダウンロードしてください。

MagicaVoxelに素体をインポート

  • MagicaVoxelを起動します
  • ウィンドウ右上のOpenをクリックします

f:id:am1tanaka:20180325165807p:plain

  • ダウンロードフォルダーを開いて、base.voxを選択して、開くボタンをクリックします

f:id:am1tanaka:20180325165913p:plain

以上で素体、と呼ばれるひな形が読み込まれます。

MagicaVoxelで作ったプリキュアをUnityで動かす | daishi blogに戻って、続きを進めてください。

エクスポートボタン

エクスポート前に、Saveをクリックして、任意の場所にvoxファイルを保存しておきます。これをやらないと、エクスポートに失敗する場合があります。

f:id:am1tanaka:20180328135854p:plain

"Blenderプリキュアにボーンを入れる"の"objで出力"の補足です。"obj"ボタンは右下のExportをクリックすると表示されます。

f:id:am1tanaka:20180325170622p:plain

保存先のフォルダーへのパスを表示してコピーしておくと後々便利です。

  • 上のアドレスバーの余白をクリックします

f:id:am1tanaka:20180325174553p:plain

  • パスの文字列が表示されるので、[Ctrl]+[C]キーを押してコピーします

f:id:am1tanaka:20180325174831p:plain

f:id:am1tanaka:20180325144105p:plain

  • 上のアドレスバーの余白をクリックします

f:id:am1tanaka:20180325175017p:plain

  • [Ctrl]+[V]キーを押して先ほどコピーしたパスを張り付けて、[Enter]キーを押します

f:id:am1tanaka:20180325175101p:plain

以上で、保存先のフォルダーを開いておけます。このエクスプローラーは開きっぱなしにしておいて、BlenderやUnityの作業でファイルが必要になったら利用しましょう。

素体用アーマチュアを読み込む

アーマチュアBlenderの読み込み方です。

  • Blenderを起動します
  • 先ほど開いたエクスプローラーに切り替えて、左からダウンロードを右クリックして、新しいウィンドウで開くを選択します

f:id:am1tanaka:20180325175631p:plain

  • BaseArmature.blendをドラッグして、Blenderにドロップします

f:id:am1tanaka:20180325175838p:plain

Blenderを起動したら、エクスプローラーを開いて、ダウンロードフォルダーから先ほどダウンロードしたBaseArmature.blendをBlenderにドラッグ&ドロップします。

以下のようなものが読み込まれればOKです。

f:id:am1tanaka:20180325180257p:plain

objを読み込む

パスの指定方法を補足します。元のブログの通りにFile -> Import -> Wavefront (.obj)を開いた後のパス指定です。

  • 先に開いていたMagicaVoxelの保存先のエクスプローラーに切り替えます
  • パスの余白部分をクリックして選択します

f:id:am1tanaka:20180325180806p:plain

  • [Ctrl]+[C]キーを押してパスをコピーします
  • Blenderに切り替えて、C:\Users\とある欄をクリックして選択します

f:id:am1tanaka:20180325180901p:plain

  • [Ctrl]+[V]キーを押して、先ほどコピーしたパスを貼り付けて、[Enter]キーを押します
  • MagicaVoxelで保存したキャラクターファイルが表示されるので、.objの方のファイルを選択して、Import OBJボタンをクリックします

f:id:am1tanaka:20180325181026p:plain

以下のように巨大ですがキャラが読み込まれればOKです。

f:id:am1tanaka:20180325181318p:plain

テクスチャーを表示

灰色のままでもいいのですが、色付きにしたい場合は、中央下あたりにある以下のボタンをクリックして、Textureを選択します。

f:id:am1tanaka:20180325181708p:plain

アーマチュアにキャラクターのサイズを合わせる

"拡大縮小&移動でモデルをアーマチュアのサイズ・位置に合わせます。"としか書かれていないので、具体的な操作手順です。

キャラクターの見え方を調整する

Blenderの基本操作はこちら(hiroshi harada. Blender入門(2.7版))にあります。

  • [Home]キーを押して、キャラクターがちょうどよいサイズと場所に表示します

f:id:am1tanaka:20180325182819p:plain

  • 右のOutliner画面でキャラクターをクリックして選択します(以下の例ではmychr)

f:id:am1tanaka:20180327212838p:plain

  • [Tab]キーを押して、Edit Modeに変更します

f:id:am1tanaka:20180325183309p:plain

  • 先にOutlinerでキャラクターを選んでおいたので、キャラクターがオレンジ色になって選択されているはずです。もし、以下のようになっていなければ、[A]キーを押して、すべての頂点を選択してください

f:id:am1tanaka:20180325184647p:plain

  • [Shift]+[C]キーを押して、3D Cursorを原点に移動しておきます

    • Blenderでは、左クリックで3D Cursorを移動させるというちょっと信じられないキーアサインのため、気付かないうちに3D Cursorが違う場所になっていることがあります。とりあえず操作する前に3D Cursorの位置を調整しておきましょう
  • 画面下のPivotボタンをクリックして、3D Cursorに変更します

    • Pivotとは基準点のことで、3D Cursorにすることで、足元に赤と白の円で示された3D Cursorを中心に変形が行われるようになり、調整がしやすくなります

f:id:am1tanaka:20180325183607p:plain

  • [S]キーを押すと、拡大・縮小モードになります。マウスを動かしてキャラクターを縮小させて、アーマチュアとちょうどよいサイズになるように調整します。大きさを決めたらクリックで決定します

f:id:am1tanaka:20180325185047p:plain

  • 小さすぎて細かいところがわからないので、[Home]キーを押して拡大します

f:id:am1tanaka:20180325185205p:plain

  • 再調整が必要そうであれば、また[S]キーを押して拡大・縮小モードにして、マウス操作で修正してクリックで確定します

f:id:am1tanaka:20180325185300p:plain

専用のアーマチュアなので、正面で設定ができれば他の角度もOKになるはずです。マウスのホイールをドラッグして、マウスを動かすと視点を回すことができます。いろいろな方向から見て、アーマチュアがキャラクターにちゃんと入っていることを確認してください。

f:id:am1tanaka:20180325185554p:plain

もしずれていたら、3D Cursorのところに表示されている矢印をドラッグして動かすと、矢印が示す軸方向に移動させることができます。

f:id:am1tanaka:20180325185838p:plain

メッシュの編集

関節を入れたい位置に頂点を追加するなどしていい感じに編集

キャラクターの関節が曲がるには、曲がる場所に頂点が必要です。素体を見ると、腕などが棒になっていて、これでは曲げることができません。

f:id:am1tanaka:20180325190333p:plain

そこで、曲がるように頂点を増やしてあげます。真面目にやるなら、ループナイフなどで必要な場所に必要な数の切り込みを入れるのですが、ここではブログと同じくSubdivideでざっくりと分割してしまいます。

すべての頂点が選択されている状態で操作を続けます。

  • ウィンドウ左上の方にあるToolタブをクリックして、下にスクロールさせるとAdd:グループにSubdivideがありますのでクリックします

f:id:am1tanaka:20180325190756p:plain

  • 1回押すごとに、半分の場所に切り込みが入ります。2回やればとりあえずよいでしょう

f:id:am1tanaka:20180325190849p:plain

これで、腕が4つに分割されたので、曲げることができるようになりました。

Remove Doubles

MagicaVoxelが作成するモデルは、隣り合う立方体の頂点が個別になっていて、このままだとうまくアーマチュアが入らない場合があります。Remove Doublesコマンドで、同じ場所にある頂点を統合します。

Remove Doublesコマンドは、ウィンドウ左上の方にあるToolタブをクリックして、下にスクロールさせると見つかります。

f:id:am1tanaka:20180325185959p:plain

全ての頂点が選択されている状態で、Remove Doublesボタンをクリックしてください。特に変化はありませんが、重なっている頂点が統合されます。

親子にする

アーマチュアとキャラクターを親子にします。これは、オブジェクトモードで行います。

  • [Tab]キーを押して、Objectモードに切り替えます

f:id:am1tanaka:20180325191433p:plain

  • ウィンドウ右の階層で、キャラクターをクリックして選択します

f:id:am1tanaka:20180325191509p:plain

  • [Shift]キーを押しながら、armatureをクリックします

f:id:am1tanaka:20180325191620p:plain

  • Objectメニューをクリックして開いたら、Parent -> With Automatic Weightsを選択します

f:id:am1tanaka:20180325192048p:plain

  • Set Parent Toのダイアログが表示されたら、With Automatic Weightsを選択します

f:id:am1tanaka:20180325192132p:plain

以上でキャラクターのメッシュにアーマチュアが適用されます。右上の階層を見ると、armatureにキャラクターが統合されていることが確認できます。

f:id:am1tanaka:20180325192302p:plain

元記事の手順に従って、FBXファイルでエクスポートしてください。

UnityにFBXをインポート

Unityを起動して、インポートしたいプロジェクトを開いておきます。ない場合は、新規にプロジェクトを作成してください。

  • Blenderで保存したフォルダーを開きます
  • 保存したFBXファイルを、UnityのProjectビューにドラッグ&ドロップします

f:id:am1tanaka:20180326110634p:plain

  • Projectビューにモデルが読み込まれます。これをHierarchyビューにドラッグ&ドロップすると、モデルがシーンに表示されます

f:id:am1tanaka:20180326110814p:plain

f:id:am1tanaka:20180326110911p:plain

インポートの設定

最初の状態だとアニメーションが適用されず、色も着いていません。いくらかの設定をします。

  • Projectビューに読み込んだモデルをクリックして選択します

f:id:am1tanaka:20180326111228p:plain

不要なオブジェクトを削除

キャラクター単体を読み込みたい場合、カメラやライトなどの情報は不要です。以下の設定をしておくと問題が起きにくいです。

  • Inspectorビューにモデルの読み込み設定があるので、まずはModelをクリックして選択します
  • Import Visibility, Import Cameras, Import Lightsのチェックを外して、可視性、カメラ、ライトの読み込みを解除します

f:id:am1tanaka:20180326112430p:plain

3Dツールの方でそれらの制御をしている場合はチェックはそのままにしておいてください。

Unityにモデルを持ってくると、大きさが全然違うことがよくあります。その場合は、上記のScale Factorで調整してください。

  • 設定を完了したら、下の方のApplyをクリックします

f:id:am1tanaka:20180326112817p:plain

Rigの設定

アニメーションできるように設定します。

  • InspectorビューでRigをクリックします
  • Animation TypeHumanoidに変更します

f:id:am1tanaka:20180326113003p:plain

  • Applyボタンをクリックします

これで、モデルを操作するためのRigが設定されました。以下のようにConfigure...ボタンの左にチェックが入れば成功です。

f:id:am1tanaka:20180326113114p:plain

マテリアルとテクスチャーの設定

この状態では色が反映されていません。モデルからマテリアルを生成して、そこにMagicaVoxelのモデルが持っていたPNGをテクスチャーとして読み込んで反映させる必要があります。

  • InspectorビューでMaterialsをクリックします
  • MaterialsExtract Materials...をクリックします

f:id:am1tanaka:20180326113349p:plain

  • マテリアルの展開先を指定します。Materialsフォルダーがあれば、そこを選択してフォルダーの選択ボタンをクリックします。フォルダーがない場合は、新しいフォルダーで作成して、指定するとよいでしょう

f:id:am1tanaka:20180326113539p:plain

これで、ProjectビューのMaterialsフォルダー内に、paletteという名前のマテリアルが作成されます。これがこのモデルのマテリアルです。

まだ真っ白のままです。テクスチャーで着色されているので、テクスチャーも必要です。これはMagicaVoxelで保存したobjファイルと同じ場所にあります。

  • 先に開いておいたエクスプローラーに切り替えます
  • PNGファイルをドラッグして、UnityのProjectビューの何もない部分にドロップします

f:id:am1tanaka:20180326123125p:plain

これで、Unityからこの画像を使えるようになりました。あとはマテリアルに設定します。

  • ProjectビューからMaterialsフォルダーの左の三角をクリックして開いて、paletteをクリックして選択します

f:id:am1tanaka:20180326114154p:plain

  • Projectビューに読み込んだPNGファイル(この例ではmychr)をドラッグして、InspectorビューのAlbedoの左の四角欄にドロップします

f:id:am1tanaka:20180326114313p:plain

以上で、キャラクターの読み込み完了です。

f:id:am1tanaka:20180326114339p:plain

アニメーションさせる

ここからは追加の情報です。アニメーションさせるまでの手順です。

適用したいアニメーションデータがあれば読み込んでください。以下、SDユニティちゃんのモーションを適用する例です。SDユニティちゃんはこちらからダウンロードできます。

(DATA DOWNLOAD -> 一番下のライセンス同意のチェック -> データをダウンロードする -> SDユニティちゃん 3Dモデルデータ -> Download ver1.xx。以上でダウンロードしたunitypackageをダブルクリックして、Importします)

  • Hierarchyビューで、読み込んだキャラクターを選択します

f:id:am1tanaka:20180326115055p:plain

  • Projectビューで、UnityChan -> SD_unitychan -> Animationsのフォルダーを開きます

f:id:am1tanaka:20180326115746p:plain

  • SD_unitychan_motion_humanoidのアニメーションデータをドラッグして、InspectorビューのController欄にドロップします

f:id:am1tanaka:20180326115917p:plain

実行すると、SDユニティーちゃんの立ちポーズになります。

f:id:am1tanaka:20180326120015p:plain

他のアニメーションも確認できるようにしましょう。実行を停止してから以下の操作をしてください。

  • Projectビューで、UnityChan -> Scriptsフォルダーを開きます

f:id:am1tanaka:20180326121308p:plain

  • ProjectビューからIdleChangerスクリプトをドラッグして、Hierarchyビューのキャラクターにドロップします

f:id:am1tanaka:20180326123659p:plain

以上で、アニメーションを切り替えるボタンが表示されるようになります。実行してみてください。

f:id:am1tanaka:20180326121547p:plain

実行するとGameビューの右上にChange Motionと表示されます。NextBackをクリックすると、用意されているアニメーションが切り替わりますので、いろいろなポーズを確認してみてください。

まとめ

MagicaVoxelを使うと味わいのあるキャラクターをドットを置く感覚で作れます。

今回はキャラクターを作りましたが、MagicaVoxelはステージ作成に使うこともできます。Voxelのキーワードで検索すれば、様々な例をインターネットで見つけることができますので、表現方法の一つとしてご活用ください。

参考URL

ライセンス

ユニティちゃんライセンス

アニメーションのポーズはSDユニティちゃんのものです。SDユニティちゃんはユニティちゃんライセンス条項の元に提供されています

MagicaVoxel 0.99.1 のインストール

ドット絵の3D版を作れるエディターMagicaVoxelのインストール手順です。

目次

前提

  • MagicaVoxel 0.99.1についてです
  • OSはWindows10、WebブラウザーChromeを利用しています

ダウンロード

f:id:am1tanaka:20180325143544p:plain

  • OSに応じた最新のものをダウンロードします
    • 通常はwin64でよいはずです。動かなかったらwin32を試してください

f:id:am1tanaka:20180325143822p:plain

インストール

  • ダウンロードが完了したら、ファイルをクリックして開きます

f:id:am1tanaka:20180325144037p:plain

f:id:am1tanaka:20180325144105p:plain

  • インストール先を開きます。特に決まっていない場合はドキュメントフォルダーにToolsなどのフォルダーを作成して、その中などでよいでしょう

f:id:am1tanaka:20180325144222p:plain

  • 先ほど開いたMagicaVoxelのフォルダーをドラッグして、展開先(例えばドキュメントフォルダー内に新規で作成したToolsフォルダー)にドロップして、展開します

f:id:am1tanaka:20180325160358p:plain

起動しやすいように、デスクトップにショートカットを作成しておきましょう(スタートにピンでもよいです)。

  • 展開したフォルダーをダブルクリックして開きます

f:id:am1tanaka:20180325160947p:plain

  • MagicaVoxelの実行ファイルを右クリックして、送る -> デスクトップ(ショートカットを作成)を選びます

f:id:am1tanaka:20180325161045p:plain

以上で完了です。好みに応じて、ショートカット名をMagicaVoxelなどに整理しておくのもよいでしょう。

f:id:am1tanaka:20180325161313p:plain

ダウンロードしたzipファイルは不要なので、削除して構いません。

起動

デスクトップのMagicaVoxelアイコンをダブルクリックすれば起動します。

f:id:am1tanaka:20180325161442p:plain

参考URL

以下、公式サイトや学習資料です。色々と作ってみてください。

Blender 2.79aのインストール

Blenderは、WindowsmacLinuxの全てで無料で利用できる3Dグラフィックエディターです。

Windowsインストーラーを使ってインストールする手順です。

目次

前提

  • 手順はBlender 2.79aのものです
  • OSはWindows10です
  • 管理者権限で作業できるものとします
  • 使用WebブラウザーChromeです

ダウンロード

インストーラーをダウンロードします。

f:id:am1tanaka:20180325135426p:plain

  • 画面に英語であれこれ表示されます。「チュートリアルやTexture、Character Rigなどが利用できるBlender Cloudが月額$9.9ですよ」とか「寄付(Donate)をお願いします」というような案内です。儲かったらグッズを購入したりしてあげてください。今はとりあえず気にしなくて結構です。ダウンロードが完了するのを待ってください

f:id:am1tanaka:20180325135834p:plain

インストール

  • ダウンロードが完了したら、ファイルをクリックして実行します。

f:id:am1tanaka:20180325140016p:plain

  • Nextボタンをクリックします

f:id:am1tanaka:20180325140058p:plain

  • 規約を確認したら、"I accept the terms in the License Agreement"の左にチェックを入れて、Nextボタンをクリックします

f:id:am1tanaka:20180325140152p:plain

  • インストール内容やインストール先の指定をします。変更の必要がなければそのままNextボタンをクリックします

f:id:am1tanaka:20180325140332p:plain

  • 最後にInstallボタンをクリックして、インストールを開始してください

f:id:am1tanaka:20180325140423p:plain

  • Finishボタンが表示されたら、それをクリックして完了です
  • Webブラウザーは閉じて構いません

インストールが完了したら、ダウンロードしたインストーラーは不要ですので、ダウンロードフォルダーから削除して構いません。

起動

デスクトップにBlender3Dのショートカットが作成されるので、それをダブルクリックすれば起動します。

f:id:am1tanaka:20180325140641p:plain

f:id:am1tanaka:20180325140719p:plain

日本語化

こちらの手順で、メニューを日本語に出来ます。

ただし、チュートリアルなど英語のメニューで紹介している場合があるので、日本語化した方が分かりづらくなる可能性もあります。ご利用されるチュートリアルや書籍に併せてどうするかご検討ください。

なお、最後の[デフォルトとして保存]は、ユーザー設定の保存に変更になったようです。

f:id:am1tanaka:20180325142324p:plain

情報

Blender3DでWebで検索すれば、有用な情報がたくさん見つかると思います。You Tubeなどにも動画がたくさんあります。とりあえず、以下を参考URLで挙げておきます。

npm ERR! 404 Registry returned 404 for GET on https://registry.npmjs.org/npm-debug.log

久しぶりにmacのnpmのグローバル環境をアップデートしたら以下のようなエラーが出て難儀しなのでメモ。

npm ERR! code E404
npm ERR! 404 Registry returned 404 for GET on https://registry.npmjs.org/npm-debug.log

原因は、~/.npm-packages/lib/node_modulesnpm-debug.logというログファイルがあったこと。このフォルダーで間違えてコマンドを打ったのだろうか。上記ファイルを削除したら治りました。

Phaser3とPhaser2 CEのサンプル

Phaser3がリリースされました。古いPCでパフォーマンスがどうなるかを確認したく、いくつか公式サンプルを列挙してみました。

Phaser3サンプル

Phaser 3 Examples

Phaser2 CEサンプル

Phaser - Examples

FPSの表示

Phaser Advanced Timing plugin exampleをPhaser3に移植するとパフォーマンスチェックによいかも。

クリーンな状態のPCにUnity関連をインストールした時のストレージの容量ざっくりメモ

表題の通りのメモです。

やったこと 空き領域(GB) 消費容量(GB)
元の容量 97.7 -
Win10インストール 83.3 14.4
Chromeインストール 81.5 1.8
Unity Hubインストール 81.2 0.3
Unity2017.3(Mono Develop + Standard Assets + WebGL Build) 78.1 3.1
Unityでパーティクルをマウスに合わせて発生させるプロジェクト作成(+Windows Update?) 77.8 0.3

Visual StudioAndroid関連を入れないとUnityは3GBちょっと。比べてみると、Chromeってでかいんだな・・・。

さくらインターネットのPHPからgmailへ送信したメールが届かない

表題のママなのですが、SPF設定はしているし何だろう、とあれこれ調べてみました。結局、単純に怪しいメールだったから迷惑メールに振り分けられていた、ということでした...。迷惑メールフォルダーがデフォルトで表示されていないので、てっきり届いていなかったと勘違いしてました。

解決策

gmailを開いて、左の一覧の一番下のもっと見るを開くと、

f:id:am1tanaka:20180309181030p:plain

迷惑メールフォルダーがありました。

f:id:am1tanaka:20180309181255p:plain

このフォルダーを見ると、メールがちゃんと届いていて、「このメールは、迷惑メールのパターンに似ていたので迷惑メールにした」というようなことが書いてありました。

つまり、「オメーのメール、迷惑メールっぽいから迷惑メールにした」ということでした。

上にある「迷惑メールではない」をクリックして、解決しました。

f:id:am1tanaka:20180309181628p:plain