331 Views
July 03, 24
スライド概要
2024.6/28 TBS & Alche UE/UEFN Meetup
UEFNタイトルであるHUMAN HEAD CLIMB の 制作フローや開発知見を紹介した講演資料です。
この講演では動画を多く使用していますので、以下のYoutube動画のご視聴を推奨します。
https://youtu.be/SPdgUriIdpo
登壇者は以下の2名。
・Jun Ozaki(@O685463)
・Takumi Goto(@kazaumi)
HUMAN HEAD CLIMB の 制作フロー Houdini / Verse
introduction
● 横浜国立大学建築学科 建築家育成大学院) 妹島和世スタジオ原広司賞 受賞等 Jun Ozaki ● アトリエ建築設計事務所 @O685463 ● Alche, inc. - Creative Director ( A S G - Y i n i d u 、空間デザインや演出、キャラクターシステム、体験に関わる実装など o H - ● 東京工業大学附属科学技術高等学校 建築デザイン分野
● 静岡大学工学部システム工学科 Yuichi Taguchi @tguchi4 ● アリアーレビューティー専門学校 ● フリーランス r e n g i s e D s u o l e v r r a e n M g i s e . c D s n i t , c e e f h f c l エフェクト制作、 E A - ● 愛知県立刈谷北高校 での衣装製作等
● 電気通信大学 大学院情報理工学研究科 情報学専攻 Takumi Goto ● Alche, inc. - UE / UEFN Creator t n e d u t S e s r u o C D e . s r h P やキャラクターモーションなどの調査・実装など e - V ● 千葉県立佐倉高等学校 普通科
What is "HUMAN HEAD CLIMB"?
https://youtu.be/V95qsqQKVSs?si=7EcsP3JT7jg1kOvp
structure
effects table of contents ・顔パーツ ・頭部 モジュラー化 足場 のデザイン ・スケルタルメッシュベースエフェクト facial parts ・ステージセレクト 、セーブ機能など head baby creepy madonna snow woman ] n f e u + i ] n i e ] d s e r u n i e o v g h [ n [ ] e i i n i n i d d u u o o h h [ [ I U + verse [stage select menu, score save, player management] + fl oors kafun
プロシージャルデザイン 主な条件 ・顔パーツのサイズは、数に応じて調整 ・顔パーツは、一部固定する ・顔パーツは、複数バリエーション想定する ・・・ ・フロアは、顔パーツの位置に合わせて生成 ・フロアは、大きくぐるっと螺旋を描く ・フロアは、場所によりタイプを切り替える ・・・
early process
gray-boxing - decal - scale
vdm vector displacement map
fl at face study - 2d face - animation parts
player skill test よじのぼりあり ・垂直跳び ・水平跳び よじのぼりなし ・垂直跳び ・水平跳び 4 m 0 c / m m m c c c 0 3 0 0 0 3 0 / 9 6 7 m 4 m m m 0 2 2 7 5 1 0 2 (計測日 )
facial parts
facial parts section timeline model animation modular parts iOS App ARkit game assets skeletal mesh + fx FaceMotion3D cc4 blender blueprint actor PDG Export houdini unreal engine
base mesh
https://www.reallusion.com/jp/character-creator/
FaceMotion3D FaceMotion3D iOS App iOS App ARkit FaceMotion3D Blender Plugin
https://www.facemotion3d.net/
ARKit:https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/
fi blender alembic (.abc) lename.$F.bgeo.sc
ジオメトリー数 アニメーション数 × フレーム数 = →破綻確認も増える
P U 占有率
IN IN IN IN IN IN ORIGINAL ANIM IN IN PARTS EDIT OUT OUT OUT OUT IN IN IN OUT OUT OUT OUT IN IN IN IN OUT OUT OUT OUT UE ASSETS × アニメーション数 💦💦💦 OUT OUT OUT
PDG procedural dependency graph
man ow woman ow fl fl fl export baby ow
その他の例・・・
100 ASSETS BAKE SETTING BAKE + M_ID ASSIGN
a r a g a デバイス用スケルタルメッシュエフェクト i N アニメーションアセット
fl head + oor design
head section timeline bool geo boolean edge adjust base mesh merge modular guide extract centroid assign instances
fl fl oor section at step hang hill spiral
point unreal path
deformed path △ modular path ◎
https://blog.alche.studio/
https://blog.alche.studio/posts/35Je9SKJ7WixH1Y4rasys4/
プロジェクトサイズ減量の話・・・
project size 82% → 63% 約20%減
fi https://dev.epicgames.com/documentation/ja-jp/unreal-engine/mesh-distance- elds-in-unreal-engine
effects
https://www.sidefx.com/ja/docs/houdini/character/kinefx/skeletons.html SOP=Surface Operator
n i a t n u o デフォルトの f a r a g a i N 数を調節できる 風スケルタルアニメーション
h s e M l a t e l e k S を使ったお邪魔エフェクト制作
ダメージ 吹っ飛び 速度 スリップ effects player N W O D お邪魔エフェクト
ベース 作業量膨大 😱 作業量激減 🙌 h ジョイントにデバイスをアタッチ s シーケンスでデバイスを追従 e Skeletal Meshの M Niagaraのパーティクルに合わせ l a a r t a e l g e a i k N S ベース
側でアニメーション調整可能 ・ジョイントの情報がデバイスに反映される(位置、回転、スケール) の メリット i n i d u o H h s e M l a t e l e ・効率的であるのに加えて、シーケンスで追従させるよりも正確 k S ・一度アタッチしてしまえば、
制作例①:坂を滑る氷
s r o t a r e p O c i m i a n n i y D d = P u P O o 位置・回転・スケールなど必要なアトリビュートをつくれれば、方法は何でも良い。 O D H D などを使い、ジョイントを滑らせる
注意点 ①ジョイントの数は一定 ②ジョイントのスケール は G N 0 a r a g a i N ※ のように、パーティクルを徐々に発生・消滅させることはできない
スポーン・デスポーンの疑似表現 ①すべてのジョイントのスケールを”ほぼ ”にする 邪魔にならない場所に移動 疑似 spawn 可 視 範 囲 ②スケールを にする 疑似 despawn ③すべてのジョイントのスケールを”ほぼ ”にする 0 0 1 邪魔にならない場所に移動
UEFN シーケンスで、ジョイントにデバイスをアタッチ ジョイントが多いと大変
完成!
制作例②:赤ちゃん涙 涙が常にプレイヤーの方向を向く
i n i d P u O o D H などを使い、ジョイントを飛ばす
a r a g a i N n o i t a c o L h s e M l a t e l e k S 等で ボーンの位置、回転、スケールを に適用
UEFN シーケンスで、ジョイントにデバイスをアタッチして完成!
制作例③:鼻水、レーザー(連撃系)
出来るだけボーンの数が抑えて、ループするように
制作例④:ティッシュ、新聞紙 マテリアルで紙っぽい動きに
アタッチしたデバイス
verse
effects table of contents ・顔パーツ ・頭部 モジュラー化 [houdini] 足場 のデザイン [houdini engine] ・スケルタルメッシュベースエフェクト [houdini + uefn] facial parts ・ステージセレクト 、セーブ機能など head baby creepy madonna snow woman ] e s r e v [ I U + verse [stage select menu, score save, player management] + fl oors kafun
Verse+デバイス軸 Verseがゲーム性に介入する要素は少ない (Effectなどのレベルデザインによるアスレチックがメイン) ゲームロジックはデバイスやFortnite軸 Verseはデバイスとデバイスをつなぐ
例)ステージ選択用Teleporter制御 選択したステージに対応したテレポータにプレイヤーをテレポート
Verseでつなぎたいもの ● プレイヤごとのスコア(タイム)管理 ● プレイヤごとのシーケンサ制御 ● プレイヤの島の進行状態のセーブ ・・・など
Verseでつなぎたいもの ● プレイヤごとのスコア(タイム)管理 ● プレイヤごとのシーケンサ制御 ● プレイヤの島の進行状態のセーブ ・・・など
ステージを彩るシーケンス
シーケンスを再生したい場面 ● プレイヤが島に入った時 ● プレイヤがゴールした時 ● プレイヤがステージ 選択画面に入った時
Cinematic_sequence_deviceは 複数のプレイヤが同時に異なるタイミングで アクセスすることが難しい. (1つのデバイスが複数の再生位置を持つことができない) プレイヤーの数に対応するシーケンサと シーケンサに拘束されるデバイス,メッシュを用意
Fortniteのチーム分けを利用して分配 Fortniteのチームは配置される 最大人数を設定可能. PlayerCounterを使うと万が一溢れても すぐに別のチームに割り振れる.
Verseでは現時点で プレイヤーのチームやクラス(Fortnite)の値を参照できない →チーム変更イベント(クラスセレクタ)と, 起動にチーム制限があるデバイスから取得可能. 今回はMutatorZoneで チームを分類.
チーム(=プレイヤ)ごとにVerseで UIにかかわるイベントを処理するクラスを作成し, それぞれシーケンスを割り当てる Verse側の制御で 割り振り可能に 本当はもっと切り分けるべき
UIパネルのメッシュ ステージごとにスクロールさせる実装のため,Verseの MoveToを利用. メッシュを空のcleative_deviceクラスとしてデバイス化 WorldPartitionによってアンロードされることがなくなるデメリットもある
セーブ機能 Verseによるセーブ機能を利用 (プロジェクト発足当初はセーブデバイスで所持品をごにょごにょする予定だったが, 途中でFNの更新によりVerse単体で可能となった) 1つの島につき2つまでプレイヤごとの 永続化データ(weak_map)を作成可能 クラス(verse)が使えるので,さらに複数のデータが扱える
保存したい情報 タイムとその評価 プレイ回数 クリアしたときの落下数 クリアしたコース 各ステージの情報として クラスを作る
保存したい情報 セーブデータ用クラスの値として 各ステージデータのクラスを置く
読み書き プレイ中のみ使う変数(タイムや落下数)を含めた補助クラスを用意し, プレイ中(=ステージ上)での変化は補助クラスを更新 値の更新にはクラスごと varの使用 そのプレイでの落下数とタイム 再生成する必要あり セーブ読み書きをUI選択画面に戻った時(ステージクリア後含む)に絞る (永続化データ読み書き関連の不具合リスクを軽減?)
ご清聴ありがとうございました!