Mais conteúdo relacionado Semelhante a UE4の新機能のご紹介、ライブコーディングもやるよ!C++だけど何か? (9) Mais de エピック・ゲームズ・ジャパン Epic Games Japan (20) UE4の新機能のご紹介、ライブコーディングもやるよ!C++だけど何か?1. April 18, 2015
Unreal Fes 2015 Osaka
UE4の新機能のご紹介
ライブコーディングもやるよ!
C++だけど何か?
シモダジュンヤ Jun Shimoda
Developer Support Manager, Epic Games Japan
2. April 18, 2015
Unreal Fes 2015 Osaka
自己紹介
シモダジュンヤ(@junyash)
• アンリアル・エンジンの利用経
験をきっかけとして2010年2月
からエピック・ゲームズ・ジャ
パンでサポート・マネージャー
としてアンリアル・エンジンの
普及・サポート活動を行ってい
ます。
• PC-1251とMZ-2000でBASICを
覚えて、Z80, 8086, 6502,
65c816くらいまではアセンブラ、
MIPS, ARM, PowerPC世代は主
にC++。
• DirectXとOpenGLは素で書いて
いたけど、最近UEがあるから書
いてない。
• C#はにわか…
Terrariumの頃から嗜む程度
3. April 18, 2015
Unreal Fes 2015 Osaka
本日のメニュー!
• UE4の最新ニュースと機能のご紹介
– GDC 2015より
• IF YOU LOVE SOMETHING, SET IT FREE
• 「Open World Demo Collection」等解説
• ライブコーディング
– C++のコードコーディング
5. April 18, 2015
Unreal Fes 2015 Osaka
IF YOU LOVE SOMETHING,
•SET IT FREE
– UE4は無料で利用できるようになりました!
– 4半期で3,000ドルを越える売上に対して5%のロイヤリティ
で開発を支援を。ぜひビッグヒットを!!
• 映像作品やアーケードゲーム等はロイヤリティはかかりません
6. April 18, 2015
Unreal Fes 2015 Osaka
Tim Sweeney
Epic Games, Founder 創業者 & CEO
振り返ってみると
僕らがプログラミングを始めた頃は
雑誌に沢山のサンプルプログラムが載っていて
それを打ち込んで動作を理解できたんだよ
ここ20年ほどゲーム業界の暗黒時代というか
沢山のゲームがリリースはされてきたけども
ソースの公開は限定的で、そこから勉強すると
いうことができなくなっていたんだよね
この現状を打開するためには
UE4のソースコードを公開して勉強できるよう
にするしかないと思ったんだ
GitHub OctoTales / Epic Games
https://www.youtube.com/watch?v=L8d0G7Duz9A
11. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ:広大な自然表現
• ロケ地探し
– Google Earth
– Panoramio
– 500 Pixels
– Flickr
13. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ:広大な自然表現
• 要素を分類
地面
地面のカバー
大きな岩
地形から剥きだした岩
小さな岩
植生
小道
崖面
中くらいの岩
14. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ:広大な自然表現
• 撮影地決定
– ニュージーランド2名
• 日中の12時間
• 開花した植物系
• 晴れ
– イギリス2名
• 天候は良くなかった
• でも実際のUK素材を取り込めた
15. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ:広大な自然表現
• 取り込むカテゴリ
参照画像
Plants, Bushes, Flowers, Water, Distant Objects, Landscapes
実物取り込み
3D mesh 2D ground tile Tree bark
16. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ:広大な自然表現
• 参照画像
– クロマキー用背景
– カラーチェッカー
– 円偏光フィルター
– 三脚
– 深い被写界深度
– ブラケット撮影!
19. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ:広大な自然表現
• 機材
– キャノン 5D MKIII x 3
– シグマ 8mm f/3.5
– キャノン 24-70mm f/2.8L
– カラーチェッカー
– Roundshot VR Drive
– 一脚
– 伸縮ポール
– リモートライブビュー
– グレーと金属球リグ
26. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ:ライティング
• 完全に動的なライティング
– 広大なアウトドア
– 日中の時間変化
– 即座に変更可能(ビルド時間なし)
– 広い視野範囲
27. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ:ライティング
• 3つのライティング要素
太陽からの間接光
(グローバルイルミネーション)
太陽からの直接光
スカイライト
28. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ:ライティング
• 太陽からの直接光
– カメラ付近のカスケーデッドシャドウマップ(CSM)
• フォーリッジのアニメーションに対応
• トライアングルからの大きなコスト
CSM
29. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ:ライティング
• 太陽からの直接光
– レイトレースディスタンスフィールドシャドウ(RTDF)
• 広い視野範囲には3倍効果的
• 全ての距離でディテイルを保てる
RTDF
Shadows
CSM
31. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ:ライティング
• スカイライト
– HDR Cubemapから事前計算で異なるラフネスレベルに対応
(GIやイメージベースドライティングができる)
ラフネス 0.0 1.0
32. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ:ライティング
• スカイライト
– シャドウイング
• Screen Space Ambient Occlusion (SSAO) を凸凹や近距離に
• Distance Field Ambient Occlusion (DFAO) を中距離に
SSAOのみ SSAO+DFAO
33. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ:ライティング
• スカイライト
– Distance Field Ambient Occlusion
• メッシュディスタンスフィールドからコーントレースして空の
可視判定を行う
• ワールドスペースの遮蔽計算(スクリーンスペース問題なし)
35. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ:シェーディングとポスト
• サブサーフェーススキャッタリング
– スクリーンスペース
– ディフュージョンプロファイルで制御(肌専用のものではない)
SSSなし SSS
36. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ:シェーディングとポスト
• モーションブラー
– スキャッターアズギャザー技法
– フル解像度
– モーション幅の制限なし
– スムースなエッジ
– 未だ実装中で公開はまだ先の予定
37. April 18, 2015
Unreal Fes 2015 Osaka被写界深度(DOF)
• スキャッターアズギャザー技法
– 近景と遠景の統合
– 円形のボケ
• フォーカスのインアウトのスムーズな変化
– フルと半解像度のサンプリング
– ソフトフォーカスのアーチファクトなし
• 現実のカメラパラメータで制御
– レンズ口径(Aperture)
– 焦点距離(Focal length)
– 集束距離(Focal distance)
43. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ: フォーリッジ
• 樹木
• 樹木、岩・・・
• コリジョンあり
• 手動 / プロシージャル配置
• 草
• 草、花、小石・・・
• コリジョンなし
• マテリアルに応じた配置
44. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ: フォーリッジ
• 階層的にインスタンシングされたスタティックメッシュ
– 100万超インスタンスの描画
– メッシュをBSPライクなツリーで管理
(Binary Space Partitioning)
– ピクセル単位でLOD変化
53. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ: AI
• 群衆シミュレーションで樹木と別の鹿を避ける
• 4足歩行での挑戦
– 点上での転回
– 加速までの時間
55. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ: AI
• ナビゲーションメッシュ
– 事前計算するには大きな世界
• 5GBもメモリを使う!
– タイルを動的に必要に応じて生成
• 複数のコアに作業を分配
57. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ: AI
• アニメーション
– 合成されたルートモーション
• AIがゴールを設定
• ステートマシンが
ベストなアニメーションを探す
67. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ: キャラクター
• キャラクター向け技術
– 映画指向のフェイシャルリグ
• フェイスリグと
500以上のブレンドシェイプ
– 制御可能なボディシェイプ
• ポーズに適したメッシュの見栄えを
アーティスティックに制御できる
– スキンシェーダーの向上
• カスタムSSSディフューズプロファイル
69. April 18, 2015
Unreal Fes 2015 Osaka
Kiteデモ: ストーリーテーリング
Unreal Engine 4を使った
あなたのストーリーをぜひ見せてください
(映像利用はロイヤリティーがかかりません)
72. April 18, 2015
Unreal Fes 2015 Osaka
C++ライブコーディング
• UFOの挙動を変えてみよう!
– ワールドアウトライナから「TP_FlyingPawn」を見つけて「開く ゲーム名
Pawn.h」をクリックでVisualStudioが起動します
– ゲーム名Pawn.cppに
UFOの挙動が実装されています
– FlyingのUFOの場合は
Aゲーム名Pawn::Tick(float DeltaSeconds)
があるので主にそこを変えればOK
73. April 18, 2015
Unreal Fes 2015 Osaka
C++ライブコーディング
• UFOの挙動を変えてみよう!
– 例えば前進速度を10倍にしてみる
void Aゲーム名Pawn::Tick(float DeltaSeconds)
{
const FVector LocalMove = FVector(CurrentForwardSpeed * 10.f *
DeltaSeconds, 0.f, 0.f);
:
– 変更して保存したらエディタから
「コンパイル」してみよう
(VisualStudio側でビルドでもOK)
– コンパイルができたら「プレイ」
74. April 18, 2015
Unreal Fes 2015 Osaka
C++ライブコーディング
• 独自のブループリントのノードを作ってみよう!
– ゲーム名Pawn.h
UFUNCTION(BlueprintCallable, Category = Flying)
void Drunk(float HowMuch);
– ゲーム名Pawn.cpp
void Aゲーム名Pawn::Drunk(float HowMuch)
{
CurrentYawSpeed = HowMuch;
}
– コンパイル!
75. April 18, 2015
Unreal Fes 2015 Osaka
C++ライブコーディング
• 独自のブループリントのノードを使ってみよう!
– コンパイルが終わればすぐにエディタ上で使えるようになります
– レベルブループリントから使ってみよう!
• Get Player Pawn
• ゲーム名Pawnへキャスト
• Drunk呼び出し
• あとはイベントBegin PlayやTick等を繋げるだけ!
76. April 18, 2015
Unreal Fes 2015 Osaka
C++ライブコーディング
• 敵を作ってみよう!
– 「ファイル」メニューから「プロジェクトにコードを追加」
– 親クラスを「Pawn」にして「MyEnemy」等の名前でクラス
を作成
78. April 18, 2015
Unreal Fes 2015 Osaka
C++ライブコーディング
• コンパイルが終わればコンテンツブラウザのC++クラス内
のゲーム名フォルダにMyEnemyが現れるのでレベル上にド
ラッグ&ドロップできます
– でもメッシュがないので
詳細タブの
コンポーネントを追加
から球を
79. April 18, 2015
Unreal Fes 2015 Osaka
C++ライブコーディング
• 敵もTickがあるので
– MyEnemun.cpp
void AMyEnemy::Tick( float DeltaTime )
{
const FVector LocalMove = FVector(500.f * DeltaTime, 0.f, 0.f);
AddActorLocalOffset(LocalMove, true);
Super::Tick(DeltaTime);
}
– あとはファイルを保存して「コンパイル」して「プレイ」!
– ゲームをプレイしながら「Shift+F1」や「F8」で抜け、コードを書き換え
て「コンパイル」でリアルタイムの反映も可能!
(500.fを2000.fとか変更して試してみよう!)
80. April 18, 2015
Unreal Fes 2015 Osaka
他にもいろいろ
• 50分に詰め込むには・・・ちょっと時間不足ですみません
– もっと内容とライブコーディング凝りたかったんですが…
• ホワイエにドスパラさん(サードウェーブデジノスさん)の
最新マシン上で「Showdown」デモをOculusで体験できます
– それと、VR関係のお話もしたかったんですが…
• 4/24(金) OGCに出展します、夜はとげとげさんの「UE4の歩き
方」出版パーティーもあります
• 4/25(土),26(日) 東京オッキューランド@ニコニコ超会議!
• 4/27(月) おきゅっていいとも!(桜花一門さんのニコ生配信)
でVR関連のネタをお見せできると思います。