2016年12月29日

ボクセル作業メモ(MagicaVoxel,CubikStudio)

エクスポート設定について

ボクセルをちょっと本気でやろうと思う。俺の腕でもぼちぼち満足できるものが仕上がるので。作業工程についてメモ。

  • MagicaVoxelのほうがモデリングはシンプルで使いやすいのだが、エクスポート機能が弱い。そこをCubikStudioで補う。
  • CubikStudioのObjの出力設定はメインウィンドウ左端の「Model」メニューの歯車マーク「Settings」より「OBJ」タブ。
  • Griddy mesh + texture (no AO)を使うと、グリッドを維持したまま色別にUVを振ったテクスチャを出力する。
    • 頂点数は増えるが、関節が消えないのでそのままスキンメッシュアニメーション出来る。
    • 色ごとに別のUVを持つため、UVエディタから色を選択することで塗り分けておいた領域を選択可能。
  • Optimized mesh + texture (no AO)を使うと、最適化されたメッシュにテクスチャを出力する。
    • このテクスチャを出力されたままで使う場合は補間を切らないとぼやける。
    • 最大の矩形でメッシュを区切るので使いやすい。アニメしないメッシュならこれで決まり。
    • グリッドは消失するが、例えば顔の表面の平たい部分は一つの面にまとまるので、マテリアルを差し替えるのは簡単そう。
    • 関節はエッジを追加して付け加える必要があるが、ポリゴン数を最小に押さえたスキンメッシュを作るにはこちらを使うべきかも。
  • いずれにしても作業前に頂点のマージやクリーンアップ、四角化などはやっておいたほうがよさそう。

ボクセルで作りにくい単純なメッシュ(たとえばマイクラでいう柵とか、ビルボード使った草とか)は今まで通りMayaLTやFusion360で編集していけばよさそう。

検討課題

  • レベルデザインをどうするか。今の所、普通にUnityのエディタ上で配置しようと思っている。MagicaVoxelで大きくレベル全体を作ってしまえるので、あとは動くものやイベントを発生させるものだけ別に作って配置すればいい。
    • タイルエディタで作って配置するのもお手軽なのだが、たとえば壁メッシュをタイルごとに複製していると、たとえ結合しても見えない面が残ってしまって効率が悪いのがどうしても気になる。
  • キャラクターの表情変化をどうするか。今の解像度だと顔の領域が8x3ボクセルしかないのでさすがに表情を描くのは無理がある。
    • 方法1:漫符だけで乗り切る。ラグナロクオンラインのように、吹き出し+漫符を頭の上にビルボードででも表示する。
    • 方法2:顔を別マテリアルにして顔だけ描く。絵作業が必要になってしまうのだが、いろんな漫画のデフォルメ表情や顔文字を参考にイラレで乗り切る。そこだけボクセル表現じゃなくなってしまうのが統一感上やや難点。
  • リギングは、人型は最小限のhumanoidに合わせたHumanIKでやればいいが、人型以外の生き物も多少は必要だろう。四足歩行動物と鳥くらいはテンプレートを作っておいた方がいいのかも。いずれ必要になったら頑張る。
  • アニメーション作成がまだまったく手つかず。今まではUnityちゃんとかイーサンのモーションだけで乗り切ってきたけど、さすがにそれで全部足りるということはないだろう。自力で作れるようにはなっておかなければ。

なんにしても、ついに自分が満足できるレベルの絵素材を作成できる能力を手に入れた。これは大きい。
プログラム的にはボクセル固有の技術は今の所使う予定がない(Unityちゃんでも他のどんなモデルでも使えるものしか使わない。最終的には単にFBXファイルにしている)ので、モデリングを外注するに当たっても問題は無い。

2016-12-27 (3).jpg
posted by NTak_Indies at 06:11| Comment(0) | TrackBack(0) | 日記

2016年12月28日

次回作開発に向けて研究中

ローポリモデリングからリギングまで

MayaLTによるモデリングとリギングの訓練。身体を一体で、重なる部分を出来るだけ少なくモデリングすることで、リギング作業を楽にしている。ひとまずMayaLTによるリギングはだいぶ上達した。これ以上は絵心の問題が出てくるかな……。

ボクセルにチャレンジ

MagicaVoxelでモデリングし(19x19x19)、それをCubikStudioにvox形式経由で読み込んでOBJファイルを出力してリギングした。上手く行っているようだ。作業がとにかく早いのが魅力(これだけドット荒いと、四体(実質三体)作るのに数時間程度で済んでいます)。途中で有料ツール(安いが)を挟むのがちょっと残念ではあるが。いくつか気付いたことをメモ。

  • なぜCubikStudioを挟んだかというと、MagicaVoxelのobj出力はメッシュを最適化してしまうからだ。CADのデータをobjで出したときみたいな、三角面でみっちり最適化してしまうので、格子で関節を取りたいときには使いづらい(もちろん動かないなら最適化したほうがありがたい)。

  • CubikStudioのobj出力(最適化せず色をテクスチャに出力)の場合、同じ色は同じUVで出力されるようだ。あとでMayaLTからそのUV部分をUVエディタで範囲選択すれば、同じ色、つまり顔だけを抽出できる。顔を差し替えるのは簡単そうだ。ワールドオブファイナルファンタジーのSDキャラみたいな感じの顔に出来ないか検討中。そこだけボクセルでなくなるのが不自然そうだったら、顔は変えずに漫符で解決するかも。どっちがいいのかなあ。

  • さすがにこれをStandardシェーダーでレンダリングするのはマシンパワーの無駄遣い感がある。レガシーのDiffuseシェーダーにするか(三枚目のゆかりさんは試しにそうしている)、いっそシェーダー書くべきか。演出が色々やれそうだし場合によっては頂点カラーによるレンダリングも出来る。

  • 次回作レベルエディタをどうするか。キャラがこういうのだしいっそまたタイルマップ式でもいいかなとか考えているのだが、一方で、ぼちぼちUnityの素のレベルエディタにも慣れておくべきかも知れないなあと。そもそも何を作るのかもまだ決めてないけど。

  • インディーズスマホゲームだとボカロやCevioの使用条件が実費程度までということになっていて、将来的に逸脱する可能性もあるかなと思うので(広告モデルからいずれそれなりに収益化を試していくつもりだし)、ゲームに使うのはオリジナルキャラにする予定。それを紹介する動画をボイロやCevioで作りたいのです。ニコニコ動画やYouTubeデビューも狙っている。

2016-12-18.jpg2016-12-27 (3).jpg2016-12-28 (1).jpg
posted by NTak_Indies at 13:06| Comment(0) | TrackBack(0) | 日記

2016年12月10日

Unityでゲーム初めて作った(「ゆにぜに!」)

部品ばっかり研究していたのですが、ようやくひとつ完成品ができましたよ。 作品紹介ページはたぶん別に作るので、これは作ったときに苦労した点や気づいた点などのメモ。

http://www.nscripter.com/UniZeni.zip

2016-12-09.jpg2016-12-07.jpg

3D迷路を走り回り、4種類ある罠をかいくぐりコインを集めるジャンプアクションゲームです。いろいろ勉強になりました。そこそこ遊べると思いますが、これは練習作のつもり。次から本気で収益化を狙った作品を作っていきますよ。まずはAndroidで無料広告モデルだ。
さて、このゲームの反省点について。

  • MoonSharpを使ってスクリプティングしてるんだが、このゲームではほとんど意味がない。ああいうのはADVとかで威力を発揮するものだ。多分次の作品で本格的に使う。
  • StandardAssetの出来合いのコンポーネントとやりたいことの埋め合わせに主に苦労した。まあ、ソースもあるしアセットフォルダに入るのはコピーされたファイルだし、いざとなったら解析して改造すればよい。ただ、TPSコントローラはたぶん次は自分で作ると思う。
  • マップはJSONから読んでオブジェクトを配置しているのだが、元々は読み込み実験がしたかっただけだったので、Unityのレベルエディタ上で作ったほうがいろいろリッチなものが作れるだろうとは思います。
  • ガチの3D迷路にしてしまったため、敵キャラを入れるのとかはちょっとゲーム性的に難しそうで断念した(これだと視界がほとんどないし、攻撃手段が踏むだけだとかなりヤな感じになりそう)。
  • ユニティちゃんが弾き飛ばされる演出でRigidBodyで計算して速度を与えて実装しようとしたけどどうも思うようにいかず、結局Transform.Translateで動かしたら一番すっきりした。加速度運動くらいなら時間との関数で簡単に書けるしね。
  • ふっとばされたユニティちゃんがダメージモーションの際に壁にめり込む問題の解決。弾き飛ばされてる間はTPSコントローラに最初からついてるカプセルコライダーをenabled=falseにして止め、お尻のTransformにつけたボックスコライダー(頭のほうまで大きめに入るようにしてある)をオンにして判定しうまくいきました。ちなみに両方オンにすると自分のコライダーに引っかかって動けなくなるみたい。レイヤを使って回避することもできるっぽい雰囲気だが今回は単にオンオフで対応。
  • 今回スキンメッシュはユニティちゃんのみ。あとはTransformを時間でアニメーションさせてます。不気味多面体や三面の壁や空の色アニメはマテリアルからシェーダーに変数を設定してます。このシェーダーの変数名については、公式サイトからシェーダーのソースを落とせるのでそれを解析すればだいたいわかる。
    補足:Animation Clipでもシェーダー変数含めだいたいのものはアニメーション出来るので、後でUnityエディタが他のツールからの使用をサポートしてくれる可能性を考えるとそっちで書くべきか。iTweenもループも含めだいたいのことはやってくれるので使用を検討。スクリプトで書くのは(コード量は小さいとはいえ)悪手かも。
  • モデルはほとんどプリミティブそのままなのが多いけど、テクスチャは3D-CoatやSubstancePainterの練習だと思って多少頑張ってみた。あとはIllustratorとPhotoshopかな。レベルエディットはTiled Map Editor、そのために使うマップチップ作成にはEDGEを使用しました。
posted by NTak_Indies at 14:31| Comment(0) | TrackBack(0) | 日記