R1のおもちゃ箱

作ったものをひたすら書くよ

【Voxel】作ったボクセルキャラを動かそう①下準備編【Blender】

ボクセルを動かしたい

MagicaVoxelで作ったボクセルキャラクター

これでも結構満足してるんだけどUnityやUnreal Engineで動かしたい

 

とりあえずUnityに入れてみる


MagicaVoxelで作ったデータを.objとしてエクスポートし、Unityに入れる。

のっぺらぼー


.objと同時にエクスポートしたpngで直接テクスチャを貼る。

色がついていい感じじゃないのー

これでもうまく表示することはできた。

 

でもこれだけじゃダメ



  • 動かすには体に骨(Bone)を入れないといけない
  • 歩いたりするアニメーションも必要
  • そのままのサイズだと別に作ったボクセルキャラと大きさなどで統一性が取れない
  • Unityのアセットがごちゃごちゃするのがいやだ

骨を入れたりアニメーションを作るにはBlenderがいいらしい。





Blenderでボクセルデータをあれこれしよう

大まかな流れ
・ボクセルデータをBlenderにインポートする
・UV展開してテクスチャを貼る
・マテリアルを作成する
・ベイクしてテクスチャを作成する



ボクセルデータをBlenderにインポートする

・MagicaVoxelの作ったボクセルを.plyでエクスポート。

Blenderで新規作成して四角いのをDelする。

いつもの四角いやつ

・ファイル→インポート→.ply

あれ!なんか埋まってるー!!

座標がおかしいことになってるみたいで埋まってしまっている。
Unityに入れたときにちゃんと地面に立っててほしい。


MagicaVoxelで⇄ボタンを押してWorldビューにする。

埋まってますねこれは。
どうやらサイズを倍にしたのが原因らしい。

 

矢印を動かして正しい座標にする。


再びBlenderにインポート

右上の座標をぽちぽちして確認

正面から確認

横からも確認

ちゃんと足の部分が真ん中になってるね。




※他の作ったキャラクターでも試したところ、MagicaVoxelのほうで正しい座標にしても、Blenderでは違う位置になってしまう場合があった。
この場合、エクスポートし直したら正しい座標になったので何度か試すのがいいかも。

UV展開してテクスチャを貼る

重複する頂点の削除

ポリゴン数を節約するために重複する頂点の削除をする。



・Edit Mode(編集モード)にしてAキーを押して全てを選択
・メッシュ→クリーンアップ→距離でマージ(Merge by Distance)


UV展開をする

牛乳パックやサイコロキャラメルを開くようにデータを展開する。

・UV→スマートUV投影

・UVEditing

・+Newを押し、名前を入れておく


マテリアルを作成する

・右のプロパティのマテリアルを開く
・マテリアルがないので新規作成

・マテリアルの名前を変えておく

・ベースカラーが真っ白になってる
・右にある〇を押す

・Input→Attribute(属性)

・オブジェクトデータの頂点カラーを開き、名前を確認( Col )

・マテリアルに戻り、Attribute(属性)の名前の所に「 Col 」と入れる


ベイクしてテクスチャを作成する

・レンダーのレンダーエンジンをEeveeからCyclesに変える

・ベイクタイプをCombinedからDiffuseにする
・カラーのみにする
・Margin(余白)を1pxにする

・シェーダーエディターを選択

ノードが開いた

・Add→Texture→Image Texture(画像テクスチャ)

適当なところに置く

・+Newの左のアイコンを押し、UV展開時に作成したものを選択する

・レンダーに戻り、ベイクを押す

UVに色が付いた

・Image→SaveAs(名前を付けて保存)
.pngをデスクトップに保存した


これでテクスチャができた。
作成したpngはUnityに入れるときに必要。


完成したか確認

・マテリアルのベースカラー→Image Texture(画像テクスチャ)


なんか頑張って、作成したpngを開く

pngじゃなくてUVデータでもいい気がするけどどうなんだろ?

一応出来たって言っていいのかな

このやり方でどこか問題があったらまた調べたり試行錯誤したりしよう。


Boneやアニメーション作ったりするのはまた今度。
試しにUnityに入れてみよう!

Boneを入れるときにこの続きからやるのでblendファイルで保存をしておく。
ファイル→名前を変更→〇〇〇.blend

エクスポートする

ファイル→エクスポート→fbx

この辺の設定はとりあえずデフォルトで。

Unityに入れてみる

エクスポートした.fbxと.pngをUnityのアセットに入れる。
fbxをHierarchyに追加

テクスチャを直接ペタリ

あれ?なんかアセットにあるキャラが倒れてる!
Rotationの-89.98ってなんでー!

表示されてるキャラは普通に垂直に立ってるから大きな問題ではないか。




次は動かすためにBoneを入れていくよ





参考にさせていただいたサイト様
kumanoya.blogspot.com
urkgdmp.hatenadiary.jp
github.dev7.jp