24.1K Views
October 08, 19
スライド概要
講演動画:https://youtu.be/P1U7XkhB6VM
2019年10月6日に行われた「UNREAL FEST EAST 2019」における「UE4とBlenderでランニングコストを抑えるモダンなワークフロー」の登壇資料です。
●公式サイト
https://unrealengine.jp/unrealfest/
===
このセッションでは小規模でモダンなゲーム開発に興味があり、ツールの導入コストやランニングコストを抑えたい方を対象に、UE4とBlenderを実戦に投入した開発フローについてご紹介します。現場で問題になりがちなテクニカルな問題への対処や、UE4とBlenderを駆使した高速なイテレーションについても解説いたします。UE4やBlenderを現場で導入したい!という方にぜひ聞いていただきたい内容です。
Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/
UE4とBlenderでランニングコスト を抑えるモダンなワークフロー 株式会社 Indie-us Games 代表取締役 中村 匡彦 アートディレクター 坂井 真 #ue4fest
会社紹介 株式会社Indie-us Games 関西でUE4を使ったゲーム、映像、建築、VRなど、 ありとあらゆるプロジェクトをやってます! 最近関わったプロジェクト ・ドラゴンクエストVR ・ガールズ&パンツァー 最終章 第2話 ・FUJI ROCK`19 EXPerience #ue4fest
自己紹介 名前 : 中村 匡彦 株式会社Indie-us Games 代表取締役 ゲーム業界歴 12年。UE4の何でも屋。 UE4だけでなく、Blenderも推進中! #ue4fest
#UE4forB3D ぜひ実況お願いします! #ue4fest
なぜUE4とBlenderなのか? #ue4fest
開発ランニングコストの増加 昨今ではツールを維持するだけで相当の費用がかかるように。 サブスクリプション形式のツールが増えて、値上り傾向。 特に3Dアーティストの年間ソフト維持費は4,50万程度とも。 仮に100人のアーティストに全て与えると年間5000万もかかる計算。 これは経営者にとっても頭の痛いお値段! #ue4fest
UE4とBlenderは無料 UE4もBlenderも基本的には無料で使えます。 UE4はゲームを販売するまでは完全に無料! ※ライセンシー企業さんは別 導入までのハードルが低い! とりあえずの検証がしやすい! #ue4fest
Indie-us Gamesでの導入例 取引先企業さんに合わせてDCCツールを選択。 Mayaや3ds Maxも必要に応じて使用していますが、 ライセンスはあくまでも最低限に。 ワークフローがBlenderで完結する部分はBlenderオンリー。 本来でのサブスクの利点を活かしつつ、コストを削減。 小規模スタジオでは非常に大きなコスト削減効果があるはず! #ue4fest
Indie-us Games 作成アセット マーケットプレイスで販売中アセット もちろん全てがBlender製! 現在キャラ中心ですが、背景アセットも少 しずつ増やし、ブループリントアセットも 計画中! #ue4fest
無料だから機能が弱い? 『無料のツールなんて機能は対したことがない』 『無料だからサポートがない』 全然むしろ、そんなことはなく! オープンソース故の強みがあります。 #ue4fest
コミュニティが開放的 UE4もBlenderもコミュニティがオープン。 開発自体も非常に進化が速く、問題への対応も迅速。 バグがあれば開発者に直接報告が出来ます。 またオープンソースなので、自らがコントリビューターに! 世界的にもオープンソースは非常に大きい影響力となっています。 #ue4fest
強力なプラグイン&アドオン UE4ではアセット&プラグイン、Blenderではアドオンがあります。 これらを使いこなすことによって、開発コストを大幅に削減。 UE4のアセットはBlenderで利用することも認められています! もちろん自分で開発することも可能。 #ue4fest
Epic GamesがBlenderを支援 UE4の開発元である、Epic Gamesが助成金プログラムであるEpic Mega Grantsにより、Blenderに120万ドルの支援。 現在BlenderにとってもEpic Gamesは最大のパトロンに。 Blender Development Fund https://fund.blender.org #ue4fest
自己紹介 名前 : 坂井 真 株式会社Indie-us Games アートディレクター デザイナー暦30年… 3D CG暦25年くらい… UE4で結婚したひと #ue4fest
Blenderの歴史、知ってますか? • 90年代にオランダのCGスタジオにてAmiga向けのレイトレーサーとし て開発された。SGI IRIXなどに移植されBlenderと名称変更される。 • その後Ton Roosendaalが設立したNaN社(Not a Number Technorogies)がWindows版を開発(98年)当初は有料版があった。 • 2001年にNaN社は経営破綻…しかしTonは「ソースコード開放!」を合 言葉にBlender Foundation(Blender財団)を設立した。 • ※AmigaとかSGIに反応するひとは… #ue4fest
なぜ、今Blenderが注目されるの? #ue4fest
なぜBlenderなのか? • OSS(オープンソースソフトウエア)なのでUE4と同じく、何か問題が 生じたときにソースに当たれるのは強い • 基本的なポリゴンモデリング機能において、各DCC間の圧倒的なアドバ ンテージというものを探すのは難しいほど、これらの機能は枯れて(成 熟して)いる • 最新版2.8xにおいては、懸念だった右クリック選択などの独特すぎる操 作性が刷新され、他のDCCからの移行コストが大幅に削減された。 • Python周りについては後の解説で! #ue4fest
というような 環境的な良さは以後紹介しますが… #ue4fest
なんといっても 導入コストが無償であること! #ue4fest
CGを専門に学ぶ機会がなかった 多方面の人材が Blenderなら今すぐはじめられる! #ue4fest
これがなにを意味するのか? #ue4fest
3D CGの開放! #ue4fest
社会的には 3D CGが一部の特殊な技能では なくなっていくのかも知れない #ue4fest
3D CGという文化の底辺が広がり 様々な方面での サスティナビリティの向上が得られる #ue4fest
以上が、 なぜBlenderなのか?への IUGからの回答です。 #ue4fest
Blenderを主軸に据えたIUGのワークフロー #ue4fest
ワークフローでBlenderが担うパート #ue4fest
ZbrushとBlenderの連携:GoB • Zbrush to Blenderをワンボタンで実 現するソリューション • 2.8対応版は改良され、スムージング グループなどのエクスポートが可能 • 使い心地はGoZと変わらない https://github.com/JoseConseco/GoB #ue4fest
Substance PainterとBlender • 2.7x時代からSPで作成 したPBRテクスチャを利 用できるシェーダーはあ ったが、2.8xでは Eeveeで手軽にルックを 確認できるようになった • IUGの場合、Liveリンク は利用していないがむし ろそのほうがやりやすい #ue4fest
Blenderを普及させるために Indie-us Gamesの取り組み #ue4fest
Udemy講座が2.7x対応で配信されています! 【超初心者向け】Blenderでキャラクターをモデリングしてアンリアルエンジンで動かす講座【ハンズオン】 https://www.udemy.com/course/blender-unreal-engine4/learn/lecture/10994522#content #ue4fest
受講者数2200人突破。そろそろ2.8対応も…??? #ue4fest
機能検証1: Blender2.8で改善されたアレコレ #ue4fest
UIが劇的に改善。モダンで合理的な外観になった。 #ue4fest
Blender2.8のEeveeビューポート表示(ルックDev) #ue4fest
特筆すべき機能:グリースペンシル #ue4fest
Blender2.8グリースペンシルの強化機能 • • • • • • アノテーション(注釈)とグリースペンシルが分離 バケツツールが追加。閉領域の塗りつぶしが簡単になった 従来からあるストロークのスカルプトや変形が分かりやすく高速に グリースペンシル専用のモディファイヤ(ミラーなど)が用意された アニメーション機能も強化。リグを組んで動かせる! 専用の作業スペースが用意された。 • グリースペンシルの機能だけで講演できるほど多機能… #ue4fest
スカルプトモードも大幅強化 #ue4fest
Blender2.8スカルプトの強化機能 • • • • • • • EeveeによるPBR表示のままスカルプト作業ができる! 2.7xからあるDyntopoも高速化。さらにパフォーマンス向上される予定 全体的にスカルプトブラシの操作性・手触り感が向上 スカルプトにマスク機能が標準で入った モーフ(シェイプキー)の作成がはかどる! 2.81ではさらなるスカルプトモードの機能強化が進行中 自動リトポまわりのアドオンも続々整備されつつある #ue4fest
機能検証2: Blenderの基本的な特長・良さ #ue4fest
Poly Build #ue4fest
Blenderで法線のコントロール • 3つのCubeはすべて同じポリゴンモ デルで、エッジにベベルをかけている • それぞれに「重み付き法線モディファ イヤ」を付加し、法線をコントロール • この他にも「法線編集モディファイ ヤ」で放射状法線や他の形状からの法 線転写が行える #ue4fest
カスタム分割法線データ • 法線編集系のモディファイヤ を適用するとメッシュの頂点 データに「カスタム分割法線 データ」が付加される。 • ハードサーフェース・モデリ ングやブーリアンを多用する ようなモデリング、ローポリ モデルでベベルエッジの見栄 えを向上させるのに便利! #ue4fest
Blenderのボーンシステム「Armature」の特徴 ボーンチェーンの途中を接続解除してもチェーンとしての機能が保たれる。 これを利用して二重関節を自在に作成することができる。 #ue4fest
関節の接続を解除した「ずらしボーン」の動き リムの接続が自由なので通常は回転しかしない関節に移動のキーやエクスプレッションを 導入することで変形を補完したり自由度の高いアニメーションを作成できる。 #ue4fest
UE4のアンリアルスケルトン互換を考えると… • ボーンの接続を解除した場合、中間にリンクが生じる。 • そのため、アンリアルスケルトン互換とは言えなくなる。 • 一種の二重関節になるので便利ですが自社案件などで… • マーケットプレースのキャラクタアセットでは使えません。 ※「と思われます」の解釈でお願いします。 #ue4fest
ボーンと頂点グループの対応 • メッシュとアーマチュアのバインデ ィングを行うと頂点グループがボー ンに対応して作成される • バインディング後にボーンの名称を 変更すると自動的に頂点グループの 名称も変更される。 • バインディングの前後で自由にシェ イプキー(モーフ)の作成が可能 #ue4fest
ボーンと頂点グループの対応:2 例:Rootの名前をYasaiに変えたら頂点グルー プ名も自動で変更される。 #ue4fest
Blenderでスケルタルメッシュを作る・編集する • メッシュをアーマチュア(スケルトン)にペア レントする際「アーマチュア変形」を選択する ことで各ボーンに対応した頂点グループが作成 され、自動でウエイトを振ることができる。 • 頂点グループを自動で作成するかどうか、ウエ イトを振るかどうかは任意で選択可能。 • ボーン変形は「アーマチュアモディファイヤ」 が行うが、ウエイトデータはメッシュ自体が保 持しているのでアタッチ・デタッチを自在に行 える。 #ue4fest
アーマチュアモディファイヤ • アーマチュアモディファイヤは「メッシュのボ ーン変形」だけを制御している • 頂点グループとウエイトはメッシュそのものが持っている。 • デュアルクオータニオンは「体積を維持」で実 装されている(ゲームエンジンにはもちろん持 っていけませんが) • バインド対象を頂点グループとボーンエンベロ ープで選択できる #ue4fest
Blenderのモーフ(シェイプキー) • Blenderのモーフはシェ ↑の例ではポリゴン編集モードで頂点をプ ロポーショナル編集している イプキーと呼ばれている • メッシュをボーンにバイ ンドする前後で自由にシ ェイプキーの追加・編 集・削除が可能 • もちろんモーフターゲッ トを使ったシェイプキー も作れるが、Blenderな ら直接編集したほうが便 利だと思われる #ue4fest
シェイプキーとドライバ • Blenderでは「ドライバ」という機能で ボーンのトランスフォームとモーフをリ ンクさせることができる(エクスプレッ ションの一種) • これによりフェイシャルや関節変形の補 正にシェイプキーを利用することが楽に なっている • スクリプトやプラグインの支援なしにこ れらを実現できることは個人制作者や小 規模スタジオにとっては激しくありがた いことである。 #ue4fest
Blenderのモーフとスカルプトモード • モーフの作成には当然スカ ルプトモードも利用できる • シェイプキーを作成し 「値」を1に設定してから スカルプトモードに入れば 良い • ハイディティールのモーフ も作成できるので映像分野 では特に便利 • アドオンでVATにも対応で きる。 #ue4fest
Action Constraintについて • 左のGIFでキーを打っているのは spineとIKだけ • FootとToeはエクスプレッションで はなく、別のアクションをコンス トレイントで再生している • 一種のモーフターゲットの要領で 別のアクションをコンストレイン トとして利用できる #ue4fest
Action Constraintの使い方 • • • • 足のボーンFootとToeに上記の3つ(任意)のキーを打ち動きを作成 この動きを「foot」というアクションとして登録 アクションコンストレイントを追加 IKターゲットボーンのX回転(45度)でfootを再生させる #ue4fest
基本機能検証 Blender to UE4でアセット制作 #ue4fest
Blenderで作ったアセットをUE4で利用するために • スタティックメッシュでは何も問題なし • スケルタルメッシュでは経験と知識が必要。 • UE4はセンチが1単位→Blenderではメートルが1単位 • 座標系も違うのでスケルタルメッシュでは注意。 ※Blender側がすごい勢いで改良されているので1年後には解消されているかも… #ue4fest
UE4用スケルタルメッシュの座標軸とスケール調整 左:正面図 右:上面図 大前提としてUE4はZupのXfrontという特殊な座標系です。 BlenderはZupで-YがFrontという、ちょっと稀な座標系です。 #ue4fest
スケルタルメッシュの座標軸とスケール調整 BlenderでFBXを出力 する際、設定が間違っ ているとrootボーンに 回転のトランスフォー ム値が入った状態で UE4にインポートされ てしまう。 #ue4fest
Armatureの名称とrootボーンの設置 UE4 は FBX の 情 報 と し て 「Armature」という名称 でスケルトンが存在し、最 初の階層に「root」ボーン が あ れ ば 、 UE4 の root ボ ーンとして認識してくれる。 ※Armature.001というように修飾子がつくとダメです。ここ大事。 #ue4fest
Armatureとメッシュのスケール合わせ メッシュはトランスフォームのスケールが1になるように設定する。 アーマチュア(スケルトン)は0.01(1/100)に設定する。 #ue4fest
UE4用スケルタルメッシュのスケール設定手順 1. 2. 3. 4. 5. 6. 通常の手順でアーマチュアとメッシュをスキニングする。 アーマチュアのスケールを100倍に巨大化(数値入力) アーマチュアのスケールを適用(フリーズ)する アーマチュアのスケールを0.01倍にする。(元の大きさに) メッシュのスケールを適用する→スケールが1になる。 アーマチュアは0.01スケールのままでOK ※現在IUG社内でこの手順を自動化しようとしています。 #ue4fest
Blender標準FBXエクスポーターの設定 FBX出力の際、rootボーンがワー ルド座標系でどこを向いているか? を指定する。BlenderはZupなの でプライマリにZ軸を指定し、セカ ンダリには正面から見たときの水平 軸になるX軸を設定すれば良い。 注意:タンジェントとスムージング(グループ)の説明は割愛します。 ※ここの設定がもう少し分かりやすければ…とは思いますが2.7xからの伝統です。 #ue4fest
アドオンでこれらの設定を自動化することもできます! • BlenderからキャラクターをUE4に持って行くのが面倒! • スケール合わせもスケルタルメッシュでは「まだ」必要… • キャラクタアセットならAutoRigProでほぼ問題解決! • 総合的UE4アセットはBlender-For-UnrealEngine-Addons ※アドオンの個別紹介は後のスライドでも行います。 #ue4fest
機能検証3: 厳選!Blenderを拡張するアドオンたち #ue4fest
Animation nodes Blender2.7x時代から存在するノードベース アニメーションを実現するアドオン。非常に 強力なプロシージャルアニメーション環境を 実現。2.8対応は現在「試験的」だが、そこそ こ安定して使用できる。 https://github.com/JacquesLucke/animation_nodes/releases #ue4fest
ちょっとAnimation Nodes 1. 簡単なステージを用意。背景とライ トを置いたらメタボールをひとつ作 成して中央に配置 2. Animation nodesの専用エディタで ノードを追加。→Object Instancer 3. ノードでインスタンス数に20を入れ ると複製(インスタンス)が20個作 成される 4. Object Transform Outputを用意し ておく #ue4fest
もうちょっとAnimation Nodes 1. Vector Wiggleノードを追加 2. 各ノードをこんな風に接続 3. 結果↓ #ue4fest
さらにもうちょっとAnimation Nodes • Time Infoノードを Evolutionに接続すれば アニメーション開始 ↑最終的なノード構成 #ue4fest
Auto-Rig Pro 有償アドオン。IUGの人型キャラクタ制作を支え るアドオンと言って過言はない。UE4をはじめ、 ゲームエンジン向けの独自FBXエクスポーターを 搭載しており、めちゃくちゃ多機能。 作者による更新も恐ろしく活発で、2.8向けの新機 能の実装やバグFixも頻繁に行われている。 https://blendermarket.com/products/auto-rig-pro #ue4fest
Fluent 有償アドオン。主にハードサーフェース系のモデ リングを支援する、ブーリアン、配列複製、ベベ ル処理、法線制御などに特化したアドオン。 これ単体で何かを作ることはあまりないが、モデ リング工程を合理化したり非破壊的にメッシュを 加工する強力なツール群となっている。 https://blendermarket.com/products/fluent #ue4fest
Meshmachine 有償アドオン。ハードサーフェースツールキット とキットバッシュモデリングのツールを統合した アドオン。Fluentと似た部分はあるが強力なブー リアン最適化機能やベベルエッジのコントロール、 ポリゴンフローの改善ツールなどが搭載されてい て手放せない。めっちゃ便利! https://blendermarket.com/products/MESHmachine #ue4fest
Curves To Mesh 有償アドオン。いわゆるカーブモデラーの機能を Blenderで実現するアドオン。標準でもベジェや NURBSは扱えるがこのアドオンがあればサーフェ ースモデラー並みの機能拡張が実現できる。カー ブからのメッシュ変換を最適化する機能更新がア ナウンスされている。 https://blendermarket.com/products/curves-to-mesh #ue4fest
Quick Draw 有償アドオン。グリースペンシルのストロークを 直接押し出したり、囲み領域をポリゴン化するこ とができる。ターゲットポリゴンのブーリアンに も対応しており、3Dコンセプトアート作成の高速 化を支援する。 https://blendermarket.com/products/quickdraw #ue4fest
Lazy Weight Tool 有償アドオン。3dsMax風の頂点ウエイト設定ツ ール。かゆいところに手が届く系。他のことはな にもできない代わりに低価格で必要十分な機能を 満たしている。便利なアドオンの見本。 https://blendermarket.com/products/lazy-weight-tool #ue4fest
制作事例紹介: Blenderで UE4物理ビークルを作ってみよう。 #ue4fest
最近、社内制作でこれを作ったり… #ue4fest
こんな乗り物?を個人制作していました。 #ue4fest
まず、UE4の物理ビークルについて #ue4fest
UE4物理ビークルはプラグイン機能です。 #ue4fest
サンプルコンテンツは2種類用意されていて… 今回セットアップするサンドレーサーもサスペンションの仕様は この「青いクルマ」と基本的に同じ仕組みです。 #ue4fest
UE4物理ビークルの「個人的な」感想:初見 • • • • • 良くある「物理的な挙動」のクルマ そのままだと「あーアレ!」って感じ あくまで「物理的な感じ」で、リアルとは言えない 現実のパラメーターに縛られ過ぎで、それが爽快さを阻害 設定も色々面倒くさそうで、本気で触る気になれなかった… #ue4fest
UE4物理ビークルの「個人的な」感想:現在 • • • • • 実はセッティングを詰めると激しく面白くなる 非物理なキャラクタアセットでは実現しづらい動きが可能 工夫すれば四輪車をベースに「見た目n輪車」もできそう 設定できる項目が実車に基づいていて分かりやすい 本気で触る機会があったので、かなり詰めて研究した! 超いーじゃん! #ue4fest
超いーじゃん! #ue4fest
UE4の物理ビークルを作成する上でのポイント • • • • 基本はBoxと円柱が4つ、あとは骨を入れれば動きます。 ビークルの場合、XフロントでFBX出力する必要がある。 サスペンションをきちんとセットアップするには知識が必要。 四輪車が基本。二輪車や多輪の場合は工夫が必要。 #ue4fest
Unreal Festでデモになるアセットにしよう! 伝統的スーパーカー要素 マッチョなV8的要素 オフローダーがいいな! やっぱオーバーフェンダー #ue4fest
よし!モデリングしちゃう!!! 考えるより先に作っちゃう派なので、あっと言う間に試作の クルマ素体が積みあがっていく…若干迷走する… #ue4fest
うーん…だが…だがしかし 基本に戻って考えよう… #ue4fest
脳内を整理する(あまり考えていない) #ue4fest
あっ…これ?この感じええんとちゃう? #ue4fest
ここで、実車だったら?という設計を考える。 • • • • • • • 駆動方式は四輪駆動(All Wheel Drive) エンジン+電気モーターのハイブリッド型 エンジンとモーターはリヤ・ミッドに搭載している。 過給機への冷気導入はフロントバルクヘッドのICで行う。 重たいバッテリーもフロントに搭載して重量バランスさせる。 フロントサスペンションは変形ダブルウイッシュボーン リヤサスペンションはストラット式 #ue4fest
なぜ、そこまで考えるかというと… 現実に、こういうクルマの設計や走行イベントの主催に関わっていたからです。 ※2017年にお手伝いしたイベントでの撮影 #ue4fest
以上を踏まえて、詳細を モデリングしていきます。 #ue4fest
できました。(土日の作業でした) #ue4fest
テクスチャ、よし! #ue4fest
ディティールチェック… あって良かったSubstance Painter #ue4fest
それでは、UE4でビークルとして 走れるようにボーンを組みます。 #ue4fest
できました 寝ている間に無意識のうちにスケルトン完成! #ue4fest
足回りだけにするとこんな #ue4fest
フロントサスペンション 見えない部分なのでドライブシャフトとタイロッドはオミットしました。 #ue4fest
リヤサスペンション モデリング時もリグ入れ時も常にEeveeでルック確認できる! #ue4fest
物理サスペンション・リグの設計 物理ホイールと表示用ホイールでボーンを別々に用意 #ue4fest
物理サスペンション・リグの設計:2 作例ではphys_wheelがレイキャストで上下動するので、そのチャイルドに lowerarm_targetボーンを設置し、ロワアームのボーンがそれをLook at(注視点)ノード で追跡することで円弧の動きを作り、ロッカーアームやハブの位置決めを行うことにした。 #ue4fest
デザインアイディア:インナーホイールモーター 従来はホイールとタイヤが一体になって駆動方向に回転していたが、インナーホイール型の駆 動装置を想定するとホイールが駆動装置と操舵装置を兼ねるような設計が可能。一部のEVでは 実用化もされている。ハブ位置の自由度が向上するので近未来的なレイアウトが可能。 #ue4fest
リアルタイム向けプロシージャルリグの特徴 • キーフレームアニメーションを使わないのでアニメーション用 コントローラーが不要(ぶっちゃけ骨だけあれば良い) • 動作を検証・確認する場合、DCC側ではコンストレイントの設 定だけを行う • UE4にはBlenderのコンストレイントは持って行けないので、 アニメーションBPで動作を再構築することになる #ue4fest
ダンパー(ショックアブソーバー)のウエイト ダンパーについては、上下にボーンを設置し同軸上に配置する。(分割して方向反転) その上で、フォーク部分とケース部分に1.0のウエイト値を設定してスキニングする。 #ue4fest
【重要】ビークルをFBX出力する 通常のキャラクターはBlender標準の-Yフロントのまま先述のFBX設定を行えば良いが、物理 ビークルの場合は+Xが前方になるようにアーマチュアの向きを変更する必要がある。 #ue4fest
DCCツールからUE4ビークルを出力する際の注意 • 公式ドキュメント「ビークル(乗り物)アートの設定」 • https://docs.unrealengine.com/ja/Engine/Physics/Vehicles/VehicleConte ntCreation/index.html • ビークルのメッシュはX軸上に沿って正のX方向を向く • ジョイント(ボーン)もX軸が前方向(ロール)、Y軸が縦回転 (ピッチ)、Z軸が左右回転(ヨー)になるように設定する。 #ue4fest
アーマチュア(スケルトン)の調整:1 1. アーマチュアを回転 2. RootボーンをX90度回転 3. ロール角を0に キャラクターであれば、rootボーンは直立(Z軸に沿う)した状態が扱いやすいが、物理ビークル の場合はY軸に沿った状態で「寝かせる」と正常に動作する。 #ue4fest
アーマチュア(スケルトン)の調整:2 左側のボーンはrootに合わせてロール角を0に。右側のボーンは-90を設定する。 なお、スケルタルメッシュのスケール合わせについてはキャラクタアセットと同様に行う。 #ue4fest
FBX出力の設定(アーマチュアのタブ) • パーツの位置決めをするための非デフォームボーンが 大量にあるので「デフォームボーンのみ」を外す • プライマリボーン軸はrootボーンがY軸に沿っている のでYになる。 • • • セカンダリボーン軸はX その他の設定は通常のキャラクタと同じ UE4キャラクタ、UE4ビークルという風にオペレータ ープリセットを保存しておくと楽 BlenderからFBX出力する際のアマーチュアの項目にあるプライマリとセカンダリのボーン軸の設 定は、rootボーンがワールド座標でどこを向いているのか、を設定すれば良い。 #ue4fest
ビークルFBXのUE4インポート かんたん! 特に特別な設定はありません。 普通にFBXをD&Dすれば読み込める。 #ue4fest
ビークル用スケルタルメッシュのインポート確認 • Rootボーンを選択してトラン スフォームを確認 • 左のスクショにある程度の誤 差は問題ない • 位置・回転は0、スケールは1 になっていること ←のスケルトンツリーで、グレー表示されているのは非デフォームボーン。物理ビーク ルではソケットが使えないようなので必要になる。 #ue4fest
ここからはUE4でビークルを セットアップしていきます。 #ue4fest
できました! #ue4fest
とばしすぎの スピード違反や! #ue4fest
反省して手順を解説します。 #ue4fest
UE4にビークルのスケルタルメッシュをインポート • スケルタルメッシュ • スケルトン • 物理アセット まずはスケルタルメッシュとして正しい状態になっているかをチェックし、 物理アセットについてはビークル用の設定を行わなければなりません。 ※なお「SKL_」や「PHYS_」はIUGのアセット命名規則に従っています。 #ue4fest
物理アセットをPhATでセットアップ この手順を間違えると物理ビークルは動かない #ue4fest
物理アセットの設定は揺れモノと同じように行う • • • • Rootの骨に物理アセットを作成 Physics TypeはDefaultで Angular Dampingを適時上げる Inertia Tensor Scale超大事! #ue4fest
メッシュは見た目だけやりましょう いい感じにマテリアルを設定してください! マテリアルのネタは別の機会にじっくり やりましょう! #ue4fest
UE4ビークルアセットに必要なBPとデータ • • • • タイヤデータ Vehicle Wheel BP ビークルアニメーションBP Wheeled Vehicle Pawn (BP) ※物理ビークルは基本どれでも同じなのでサンプルコンテンツをDLすれば同じモノが用意されています。 #ue4fest
最もシンプルなビークルアニメBP とりあえずこれだけあれば動きます。 でも、せっかくなので… #ue4fest
物理ビークルの動きはアニメーションBPで決まる! スケルタルのプロシージャルな動作はアニメBPで制御する。 #ue4fest
ただし、使うノードはほぼ3つだけ! • 「Wheel Handler」が物理ビー クルのタイヤの動きを決定する。 • 「 ボ ー ン を コ ピ ー 」 で 移 動 and or回転を別のボーンにコピーする。 • 「注視点(Look at)」でターゲ ットとなるボーンの方向にジョイ ントを「回転追尾」させる。 スケルトンの位置と親子関係(ツリー構造)さえ 適切なら、サスペンションのプロシージャルアニ メーションはこの3つのノードだけで作成できる。 物理ビークル専用のVehicle Anim Instanceが親クラスになります。 #ue4fest
物理ビークルのサスペンション設定ガイド • 公式ドキュメント「ダブルウィッシュボーン式サスペンション」 • https://docs.unrealengine.com/ja/Engine/Physics/Vehicles/DoubleWishboneVehicle/index.html • 『つまり、表示される車輪とシミュレーションされた車輪は実 は全く別の 2 つオブジェクトであり、後者は全く表示しなくて もよいのです。』 #ue4fest
シミュレーションタイヤと表示されるタイヤ • シミュレートされるタイヤは上下移動だけ行う(レイキャスト) • シミュレートされるタイヤは必ずしも表示する必要がない • リアルさを求めるビークルでは、表示されるタイヤはサスペンションに拘 束されて円弧の運動を行う • シミュレートされるタイヤ(phys_wheel)と表示用のタイヤ (vis_wheel)の位置をボーンのコピーとLook atで制御する。 #ue4fest
ロジックを整理 物理ホイールが 回転・上下運動 Visホイールが物 理ホイールの回 転をコピー 物理ホイールにロ ワアームがLook at ロワアームの先端 でハブposが移動 ダンパー上下がそ れぞれをLook at ダンパー下部がダ ンパーposの位置 をコピー ハブがハブTarget をLook at ハブposの位置に ハブとvisホイール が移動コピー ※この物理ビークルを駆動しているのは表示されていない物理ホイールで、表示されているVisホイールはあくまでア ニメーションをプロシージャルに再生しているだけ。 #ue4fest
実際のアニムグラフ:1(全部見せ) #ue4fest
実際のアニムグラフ:2 • たったこれだけ。超かんたん! • 制御する骨の数がちょっとだけ多いのでノ ードで参照する時間違えないように注意 • その他に物理で動く揺れモノなどがある場 合はRigid Bodyノードで制御する ■やろうと思ったけどやめておいたこと →速度で可変するリヤウイングのフラップや エアダムをやろうかと思ったのだけど、工期 の関係で今回は見送った。 #ue4fest
Vehicle Wheel Blueprintで設定するもの • ホイール(タイヤ)の大き さと重量 ステアリング操舵角度 縦と横のグリップ力 減衰力 ブレーキング係数 • • • • • サスペンションストローク 実車を知っていれば分かりやすいが、知らな いとけっこう大変な設定作業になるかも… #ue4fest
Vehicle Wheel Blueprintの最重要ポイント • Lat Stiff Max Load • 速度に対する操舵応答性 • Lat Stiff Value • 横方向のタイヤグリップ力 • Long Stiff Value • 縦方向のタイヤグリップ力 ドキュメントを見ても分かりにくいが、だいたいこういう捉え方で設定ができる。 #ue4fest
Tire Config(タイヤデータ)で設定するもの • タイヤのグリップ力 これだけです。 ただし、前後のタイヤに違うデータを持たせることができるので、こだわってもOK #ue4fest
Wheeled Vehicle Pawn (BP_SandRacer) • 基本的な構成はキャラクタBPと同じ • Movementコンポーネントが物理ビークル 専用のものになる。 • メッシュやカメラのコンポーネントは通常の Pawnやキャラクタと一緒 今回のデモ用アセットはサンプルコンテンツの中身を改造して作成 #ue4fest
VehicleMovementコンポーネント:1 Mechanical Setup項目 • • • • • • • エンジン出力(トルク)と回転数 ディファレンシャル(差動装置) 駆動方式(FF、FR、4WD) トランスミッション(変速装置)のギヤ比 欲を言えばLSD(差動制限装置)のトルクバイアスレシオだとかロック比 などを設定できると嬉しい。 クラッチ強度の項目がちょっと繊細すぎる感じ ギヤ比だけでなく段数が設定できればなお良い #ue4fest
VehicleMovementコンポーネント:2 SteeringとVehicle Setup項目 • • • • • 速度に応じたハンドル切れ角 ホイールとボーンの対応 Vehicle Wheel Classの設定(参照) 車体の重量やサイズの設定 Deprecated Spring Offset Mode(重要) #ue4fest
BP_SandRacer:イベントグラフ1 インプットイベントからビークルを動かす。空中制御を加えました。 #ue4fest
BP_SandRacer:イベントグラフ2 ハンドブレーキのインプットからスピンターン用の関数を追加 #ue4fest
BP_SandRacer:関数「Air Control」 ビークルの空中制御用関数。通常だとメッシュコンポーネントに物理力を働 かせたくなるが、物理ビークルでは囲みにあるUpdate Primitiveに対して Angular Velocityを付加している。 #ue4fest
BP_SandRacer:関数「Is Air Check」 なんの変哲もないレイキャスト。「body」のボーンが300単位なににも触 れていなければ「Is Air」のフラグを立てるだけ。関数はシンプルだが数値 が敏感すぎるとちょっとした跳ね上げでIs Air判定してしまうので注意。 #ue4fest
BP_SandRacer:関数「Hand Brake Turn」 サイドブレーキターン(スピンターン)用関数。空中制御の関数と内容はほ ぼ一緒。DirectionZ(ヨー回転)だけに作用する。キモは最後のAngular Velocityを「in Radian(ラジアン)」で付加していること。 (360度=2πRad) #ue4fest
ビークルが暴れすぎるときは? みんな大好きInertia Tensor Scale(慣性量倍率)を調整。 タイヤやサスペンションをセッティングしているよりてっとり早くコーナ リングを落ち着かせたり、ドリフト風セッティングも可能 #ue4fest
以上がUE4ビークル制作の解説でした。 それでは物理ビークルの デモンストレーションをご覧ください。 #ue4fest
#ue4fest
今後の展望 • 四輪車だけではなく二輪車(バイク)も作りたい • Wheeled Vehicle Pawnは四輪車用のクラスなので、工夫をかなり行わ ないと二輪車やn輪車は実現できない。 じゃぁやろう! #ue4fest
BlenderでのPython #ue4fest
BlenderでのPython Blender 2.8でのPythonのバージョンは3.7.0 ほぼ最新バージョンのPythonが利用可能。 Blenderのインターフェースなどのガワ部分はほとんどPythonで記述され ており、C/C++部分はコア機能部分に留まっています。 逆を言えばビルドなしでありとあらゆる部分を変更可能。 #ue4fest
#ue4fest
2.79までと2.80のPython 2.79bのPythonのバージョンは3.5.3。 2.80ではPythonのバージョンだけでなく、API自体も大きく変更されてお り、より合理的になっている分、過去のアドオンとの互換性がありません。 Blender 2.80: Python API Changes https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API #ue4fest
とりあえず使うまで #ue4fest
ファイルを追加する Scriptingタブを開いて、『+ 新規』ボタンでテキストを追加し、スクリプトを書く。 #ue4fest
スクリプトを実行 『スクリプト実行』から現在のスクリプトを実行。Alt+Pでショートカット可能。 #ue4fest
Python使いならすぐに慣れる 別のDCCツールを使ったことがある人なら、おそらくすぐに慣れます。 値のデバッグ表示はシステムコンソールから確認。 APIをワンライナーで実行でするPythonコンソールもあります。 #ue4fest
既存アドオンの2.80対応 IUG内でもいくつかの既存アドオンを2.80に対応させています。 Vertex Animation Texture https://github.com/t-sumisaki/unreal_tools/tree/dev_blender280 ネットのリソースも参考に、独自でカスタマイズしています。 Blender 2.79 のスクリプトを 2.80 にアップデートする https://dskjal.com/blender/script-279-to-280.html #ue4fest
Blenderのライセンス #ue4fest
BlenderのライセンスはGPL v3 企業で扱う上で非常に厄介なGNU Public License Version 3。 じゃあ作ったアセットも全てGPLだから公開? いいえ、違います。 #ue4fest
あくまでもソフトウェアに対して GPLの効果があるのはあくまでもソフト側。 そこで作ったアセットに対しては一切制限がありません。 ただし作成したアセットに別のライセンスが含まれているような場合、そ ちらの影響を受ける可能性はあります。 Blender is released under the GNU General Public License https://www.blender.org/about/license/ #ue4fest
スクリプトやアドオン ただし、スクリプトやアドオンは別。 Blender Python APIを利用した時点でGPLが強制されます。 公開するスクリプトコードは必ずGPLにしておく必要があります。 有料販売する場合、DL販売に限定され、必ずコードを含むようにします。 Sharing or selling Blender add-ons (Python scripts) https://www.blender.org/about/license/ #ue4fest
作ったものは必ず公開? いいえ。 内々で作成されたスクリプトはGPLでも公開する必要はありません。 判断材料はパブリックに公開されているものかで、異なります。 仕事の中で作成したものは公開の義務はありませんので、安心して作成し たものを利用しましょう。 公開した場合は必ずGPLを付与しておきましょう。 #ue4fest
IUG内でも独自のアドオン開発中! Blender to Unreal Exporter 面倒な設定をせずにワンボタンでUE4へインポート! BlenderからUE4へのトライ&エラーを高速化。 #ue4fest
最終目標 BlenderとUE4をリアルタイムに繋ぐ、Live Link機能 まだまだ検証段階。出来ればやってみたい。 UE4側に機能は用意されているので、仕組み上は可能なはず。 Live Link プラグイン https://docs.unrealengine.com/ja/Engine/Animation/LiveLinkPlugin/index.html #ue4fest
最終目標2 BlenderマテリアルをUE4上で再現 PBRマテリアルをそのまま持っていけるようにしたい。 FBXにはPBRの情報がないので、独自フォーマットが必要。 glTFベース? まだglTFがUE4では上手く扱えないため、もう少し時間がかかりそう。 #ue4fest
最終目標3 いいもの出来たら公開したい! GitHubから誰でもアクセスできるようにする。 特にワークフロー改善は多くの人にとって有用。 UE4もBlenderもコミュニティの善意で成り立っているものが多い。 少しでもコミュニティに貢献したいです。 #ue4fest
まとめ UE4とBlenderを使うことで、ランニングコストが抑えられる! 導入のハードルは非常に低く、どちらも無料で使える! 別のDCCツールはサブスクで必要なだけを確保し、基本的にBlenderでも 可能な部分は全てBlenderでなんとかする。 浮いたコストは別の部分へ投資!(できればみんなのお給料へ) #ue4fest
まとめ2 Blenderコミュニティは非常に活発。 開発者との距離が近く、問題があれば報告することで解決することも多い。 2.8で非常にフレンドリーとなったので、キーマップ含め、他のDCCツール からの移行もしやすくなっています。 Eevee、グリースペンシルなど先進的な機能が盛り沢山! #ue4fest
まとめ3 Blender 2.8のPythonは最新バージョンの3.7.0。 Pythonを他のDCCツールで書いたことのある人ならすぐに慣れる。 2.79bとはBlender Python APIが色々と変わっているので、修正が必須。 ライセンスはGPLだが、必ずしも公開は必須ではない。 #ue4fest
UE4とBlender 相性はとてもいいので、 ぜひ使っていきましょう! #ue4fest
ご清聴ありがとうございました! #ue4fest