学生向け・Substance Desinger、Substance Painter事始め(1)
2018年現在、私は大学生なのですが、今更言うまでもなく、学生は教育向けという名目で様々なサービス、ソフト、ハードを破格の価格で手に入れることが出来ます。
PBRマテリアルを作成できるSubstance Painter、プロシージャルなテクスチャを作成できるSubstance Desingerの開発元として知られるAllegorithmic社も学生向けサービスを展開しており、なんと学生であれば上述のSubstanceソフト等を無償で使用できます(商用利用不可)。私も学生証を手元のスマホで撮影し、それをAllegorithmic社に送ると数分で学生ライセンスを得ることが出来ました。本当に審査しているのだろ(ry
Substance DesignerもSubstance Painterも現在多くの有名タイトルに採用されており、UE4との連携も容易に出来ます。ツールに頼りきるのは本当の実力にならず良くないですがSubstanceについては十分学ぶ価値があると思います。どちらのソフトも基本的な操作は有志が公開しているチュートリアル動画を見て勉強できますが、細かい仕組みはそれだけでカバー出来ません。
「Substance Share」 というAllegorithmic社が公式で運営しているコミュニティサイトを利用すればSDについては多くのことを学べます。有志が作成したハイクオリティなマテリアルをダウンロード出来、その中身を見ることができるからです。無償でSDを手にしている学生ユーザーでもDLまでできる優しい仕様。
こちらのサイトでDLしたレンガのマテリアルを参考にした結果、まだ使い慣れていない私でも以下のようなマテリアルを作成することが出来ました。
ちょっと改良して完成 pic.twitter.com/EYpYPEH5A3
— ai (@ai_9684_dct) 2018年3月28日
Substance Designerは使いこなすとエフェクト用のテクスチャ等多くの事に使えます。プロが使うソフトを制限なしに無償で使い倒せるのは非常に稀なので、学生でCG、ゲーム制作に興味のある方は是非DLしてみて下さい。
(追記)ブログでのしっくりくる文体が定まらない…暫く口語調だったり文語調だったりコロコロすると思います…
特定のBPインターフェースを実装しているか判定する関数(Does Implement Interface)
超小ネタ。
特定のインターフェースを実装しているかどうかで処理を分けるには、「Does Implement Interface」という関数を使えば良さそう。
上の画像は現在制作中のゲーム。青色の矢印床には「インターフェースA」を実装しており、橙色矢印床には実装されていない。このアクターは全てOverlapするBox Collisionコンポーネントを持っている。
これは緑色の砲台から発射される弾のBP。何かがOverlapした時、それが「インターフェースA」を実装していたら「EndEvent」、そうでなければ「False」と表示する。
castを使えばもっと単純に処理を書けますが、インターフェースを通じてアクセスすることで依存性を下げることができます。
ぶっちゃけBPインターフェースについてはよくわかってないのでもっといい方法があるかも……?
今期アニメの「宇宙よりも遠い場所」にドハマリしている件(ほぼネタバレなし)
今更言うまでもないですがアニメ、「宇宙よりも遠い場所」が面白い。ドハマリして10周くらい見返してしまっている。
話題の問題作「ポプテピピック」、放映前から原作が人気で注目されていた「ゆるキャン」、「からかい上手の高木さん」の影に隠れ10話までニコニコのアニメランキングでも中々上位に上がれないでいましたが、11話で一気に注目され、12話でオリジナルの1クールアニメとしては数年に一度クラスの大傑作と評判になり、ニコニコランキング、Amazon BD、DVDランキングでも上位に上がってきてる。
私は主人公の玉木マリを演じる水瀬いのりのファンで、かつ最近井口裕香のラジオでの一人喋りに引かれ「井口裕香のむ〜〜〜ん ⊂( ^ω^)⊃」ラジオ等をよく聞いている為キャスト陣を見た瞬間これは視聴確定した。(井口裕香さんのラジオは本当に面白いのでぜひ聞いてほしい。文化放送だけにとどめておくのは勿体無いレベル。)
そんなこんなで視聴した一話。キマリに一緒に南極に行く?と尋ねるシーン、約束に遅刻したキマリと新幹線で再開するシーンで報瀬が見せたこの二つの笑顔を見た瞬間鳥肌が立った。これは私がせなばならない宿命で、周りがどう思おうが勝手に行動すればいい、友達なんていらないと口では言っていたのに、いざ味方・友達が増えた時の嬉しさ、小悪魔的なからかいの感情、今度は裏切られなかったという安堵。そういった諸々の感情が劇伴歌に合わせどっと押し寄せてきたからだ。表情でここまで伝わってくるカットは中々見れるもんじゃない。この2シーンだけでこのアニメは傑作になれると確信した。以前同じような心境になったのはFate/SN(UBW)16話で遠坂凛に故障したお前は正義の味方だと涙ながらに指摘された時の士郎の機械じみた表情だったか。
それは置いといて。このアニメの一番凄いところは2話以降も全てが面白いところ。ありがちな作画節約回、説明回、中だるみを一切感じなかった。安定した美しい作画、小気味いいテンポと間、作品とマッチした素晴らしい挿入歌、くどくない心理描写、考え込まれた画面構成と脚本……。何度も見返したくなるような仕掛けも沢山仕掛けられていて、相当時間をかけてこの作品を作ったのだろうと思わせる完成度の高さである。ラブライブプロジェクトやらで多忙なはずなのに花田先生は凄すぎる……
声優陣の演技も文句なしに素晴らしい。メインキャストの女子高生を演じる水瀬いのり、花澤香菜、井口裕香、早見沙織。四人を支える立場にある大人たちを演じるのは能登麻美子、日笠陽子、Lynn、松岡禎丞、小松未可子、阿澄佳奈など…一人で主役を張れるような人気者、実力者揃いで安心してみていられる。特に小淵沢報瀬役、花澤香菜の演技は神がかっているとしか形容できない。11話、12話でのあのセリフは目を閉じて聞いても泣かされる。12話まで見れば必ずあなたも花澤香菜の虜になっているだろう。私はなった。
本作のメインキャスト四人が歌うED曲、「ここから、ここから」に『バカにされたって構わない 信じていこう』という歌詞がある。アニメを見るまでもなく良いフレーズであるがアニメを見ればこの言葉の重みがぐっと伝わってくる。最終回は今週の火曜夜。バカにされながら自分のやりたいことにまっすぐ突き進む彼女達の旅の終わりに幸あらんことを。ティッシュボックス片手に見ます。
MagicaVoxelで作成した3DモデルをBlender経由でUE4に持っていく方法・改良版2
注)今回紹介する方法もモデル次第では問題が発生する可能性があります。
前回までの振り返り
二回に渡りMagicaVoxelで制作したモデルをBlender経由でFBXを作成する方法を模索中。前回までの方法では影の付き方が変になってしまっていた。
改良版・UE4にボクセルモデルをインポートする方法
この手法ではMagicaVoxelで制作したモデルをPly形式で書き出す。
Blenderにplyでインポートする。
編集モードに切り替え。「A」キーを二回押して全ての頂点を選択したらツールシェルフ -> 重複頂点を削除を選択。
- データ -> UVマップの右側にある + をクリック。これで新しくUV情報を持つことができる。
「U」キー -> スマートUV展開を選択。島の余白を1.00に設定する。
fbx形式でエクスポートする。
UE4にモデルをインポートする。この時 Vertex Color Import Option を Replace に設定する
インポートしたモデルのマテリアルを「M_VColor」に切り替える。
LightMap Resolutionを256に設定。
完成!
UE4 ForLoopwithBreakの改造(デクリメントとDelayを実装)
超小ネタ。以前の記事で「For Loop With Delay」マクロを自作したが、
これに加えてBreakとデクリメントでループを回す必要がある場面に遭遇したので「For Loop With Break and Delay Decrement」マクロを自作した。
ForLoopをグラフに配置してダブルクリックするとStandardMacrosのBPを見ることができる。今回はそれを見ながら実装した。StandardMacrosには他にも FlipFlopやDoOnceといったFlow Control系のマクロ、一部のMathマクロの中身が見ることができる。一度見ておくといいのかも。
MagicaVoxelで作成した3DモデルをBlender経由でUE4に持っていく方法・決定版(にしたかった)
前回の記事 ではply形式でexportし、スマートUV展開して頂点カラーを焼き込んでテクスチャを作成、そのテクスチャとfbxで書き出したモデルを取り込むという手法を紹介したが、この方法では色とUV座標がズレが生じ、色の位置がずれてしまう問題が発生していた。
消化不良のまま前回記事を書いた後に大学のテストがありずっと解決できずにいたが、テストも終わり、漸く(とりあえずの)解決策が見つかったので紹介する。
Blenderでの設定方法(決定版にしたかった)
今回はMagicaVoxelで作成したモデルを obj形式でexport する。
前回記事同様にBlenderにImportしてライティングとサイズを調整する。
サイズ調整の方法
UE4.18.2時点ではBlender上での1mはUE4では100mになっている。これはシーン設定の単位プリセット、長さをメートル法に、単位の倍率を0.01にすることでBlender上での大きさとUE上での大きさを揃えることができる
作業し易いように3Dビューを左上の三角を左にスライドし、2画面にする。続けて左画面の左下にあるアイコンを押し、表示を「3Dビュー」から「UV画像エディタ」に切り替える。
「+新規」を押し、「Lightmap」と名付ける。
モデルを選択し、オブジェクトデータ→UVマップの+を選択。新たに作られたUVMap_001の右側にあるカメラマークを選択状態にする。
tabを押して編集モードに切り替え。Aキーを二回押してモデルの頂点を全て選択する。
左画面にLightMapが表示されていることを確認してから(真っ黒の正方形が表示されていればいい。されていなければ「画像」のすぐ右側にあるアイコンを選んでLightMapに切り替える)Uキー→スマートUV展開と進み、島の余白を0.05程度にして実行。
UE4にインポートする
前回同様fbx形式でエクスポートする。終わったらfbxをUE4にImportする。この際、Generate Lightmap UVsにチェックが入っていることを確認する。
自動生成されるマテリアルの名前が必ずpaletteになっているはずなので適切な名前に書き換える。こうしないと同じフォルダにボクセルモデルをインポートする時マテリアルが上書きされてしまう。
このようにインポートしたモデルは色のズレもなく、Light Buildしても真っ黒にならず影がつくはず。
おわり。
解決できなかった問題点
上の画像を見てもらうと分かる通り、気味の悪い影の付き方をしている。「Movable」に設定した時の影(下画像)は違和感がないのだが、Staticなのに何でもかんでもMovableに設定するのもよろしくない。Staticに設定したときもMovableと同じ影の付き方に出来れば良いのだが……
(02/22追記)改良版を公開しました。
MagicaVoxelで作成した3DモデルをBlender経由でUE4に持っていく方法
追記: 色々な問題を解決したverを公開しました
最近MagicaVoxelというボクセルモデリング(3Dドットモデリング)ツールで3Dモデルを制作している。Minecraft感覚でモデルを製作でき、BlenderやMayaと言ったDCCツールよりはるかに覚えることが少ないため、絵が全く描けない自分でも使いはじめて3時間で下部画像程度のクオリティのモデルを制作することが出来た。
Voxelアルトリア pic.twitter.com/Ds70CIVI8Q
— ai (@ai_9684_dct) 2018年1月13日
だがこのモデルをBlender経由でUE4にFBX形式でImportするのにかなり苦労してしまった(Blenderの使い方を理解していないせいであるのだが)。色々な人の力を借り、四苦八苦しながらなんとか出来た。そこそこの作業量が多く、すぐやり方を忘れてしまいそうなので、ブログにメモを残しておく。なお、この記事は こちらのブログ をかなり参考にしている。
最も単純な方法
obj形式でexportしBlenderに取り込む
MagicaVoxelで作成したモデルをobj形式でexportする
Blenderを開き、初期状態で配置されている立方体を削除する
先程exportしたモデルをimportする。
調整
alt+Zでテクスチャを表示する……のだがこのままだと真っ暗になってしまう。
原因はライトの位置。右上でLampを選択し、3Dビューでモデルに光が当たるようにうまく配置する。
このままのサイズだとロクに使えないのでSキーを押しサイズ調整。調整が終了したらCtrl+Aを押し回転と拡縮を適用する。こうすることで今の回転を(0,0,0)に、拡大縮小を(1,1,1)にすることができる。
UE4にexportする
ファイルからエクスポート->fbxを選択、設定は変更せず名前を付けて保存する。
UE4に移動、コンテンツブラウザに先程書き出したFBXをドラックアンドドロップでImportする。設定を変更せずに「Import All」を押すとモデルとテクスチャとマテリアルが自動生成される。
完成。
問題点
- 複雑なモデルの場合ポリゴン数が莫大に増える
今回使用した単純な人型位なら問題ないが上の写真くらいになると、ポリゴン数が約14000。流石にこれじゃロクにFPSがでない。
- 後から質感の調整を掛けるのが難しい
この方法でImportするとテクスチャにMagicaVoxelで使用したPaletteの色を左から帯状に並べたものが選ばれている。このままでは後からある部分だけ金属っぽい質感にしたいと言ったことが難しく取り扱いにくい。
- Lightingがうまくいかない
この方法ではLightingMapを持たないため、Staticだと影が焼き付き真っ黒になってしまう。Movableにすれば解決するのだがなんでもかんでもMovableにするのは問題。
問題点を解消した手法(ply形式でexportする)
Blenderに書き出し
その後の最適化の都合でMagicalVoxelで作成したモデルを頂点カラーがついている形式であるply形式でexportする。
Blenderを開き、初期状態で配置されている立方体を削除する。
先程exportしたplyモデルをimportする。
調整
alt+Zでテクスチャを表示。ランプの位置を3Dビューでモデルに光が当たるようにうまく配置する。
Sキーを押しサイズ調整。調整が終了したらCtrl+Aを押し回転と拡縮を適用する。
頂点数を減らす
編集モードに切り替えツールシェルフにある「重複頂点を削除」を押せば、重複している頂点を削除することができる。これでもまだ余計な頂点が存在するがその作業は後で。
UV展開しテクスチャを作成する
続けて「U」キー → 「スマートUV投影」を実行。
画面上部「スクリーンレイアウトを選択」から、UV Editingを選択する。
UV展開されたテクスチャが左画面に表示される。左下の「新規」を押して、新たにテクスチャを作成。名前は適当に決めておく。
スクリーンレイアウトをDefaultに戻す。プロパティウインドウ内、「レンダー」タブ内のベイクパネルを開く。ベイクモードを頂点色に変更し、ベイクボタンを押す。
UV Editingレイアウトに戻ると、先程作成したテクスチャに頂点カラーが焼きこまれていることが分かる。
このテクスチャをUE4のマテリアルで貼り付けるので個別にpngで書き出しておかねばならない。UV Editingレイアウトの左下にある画像を選択。「画像を別名保存」を押すとpngで保存することができる。
これで頂点カラーは必要なくなった為、削除する。
編集モードで全ての頂点を選択してから、Spaceキーを押し検索バーに「頂点色を削除」と入力。実行することで頂点の色を削除することができる。
頂点数を更に減らし最適化する
「ポリゴン数削減」モディファイアを追加。
平面を選択し、適用。消してほしくない頂点が削除される場合もあるので要注意。
可能ならここから手動で更に必要ない頂点を削除していく。
FBX Export
File->Export->FBXを選択。設定は変更する必要はないはず。任意の名前を付け保存する。
UE4でテクスチャを貼り付ける
ドラックアンドドロップで作成したテクスチャとFBXをImportする(設定は変更しなくて良いはず)。
取り込んだpngテクスチャを右クリックし「Create Material」を選択。自動でマテリアルが作成される。
作成したマテリアルをStaticMeshに適用すれば完成。面倒な作業だがここまでやれば描画負荷も高くなく、ライティングもうまくいっているはず。
SkeletalMeshとしてImportする場合
SkeletalMeshとしてImportするとどういうわけか全体的に丸い質感になってしまう。そうなった時場合は以下のようにImport Settingを変更してReimportすると治るはず。
まだ残る問題点
- 角を見ると他の場所の色がぼんやり滲んでしまっている。遠目で見ても気づくレベルでこれはよろしくない。
これはUV展開する際、自動で生成したため、ベイクした色矩形とUV座標が僅かにずれてしまうことに起因している。調べると、とりあえずの解決方法を発見した。
1. スマートUV展開をする際、「島の余白」を0.05に設定する。
2. 頂点色をベイクする際余白を1pxに設定する。
これで解決。遠目で見ればこれで全く問題なさそう。
としたいところだが大きく拡大してみてみるとまだ多少のズレが認められる。
これを直す手段は分からなかった。これが自動でUV展開する限界か。Blenderに詳しい方に聞くと、「スクリプトを組めば解決するかも……」との話だが自分には出来ないので誰かやってください。
以上。UnityにはVoxel Importerなるものがあるらしいが…UE4にもください。
(02/22追記)これらの問題を解決した改良版を公開しました。