GenerativeArt—MadewithUnity
Unityではじめる
オープンワールド制作
アーティスト編
自己紹介
大下岳志
Unity Technologies Japan
エバンジェリスト
・前職は関西の開発会社Artist、TA
・パイプライン・ワークフロー構築
・Game Creators Conference 実行委員
・CEDEC 2014~2018 運営委員
山村達彦
Unity Technologies Japan
エバンジェリスト
・フィールドエンジニアとして
Unityユーザーのサポート
Unityではじめるオープンワールド制作
3
アーティスト編 エンジニア編
広域で大量のオブジェクトを扱うオープンワールド風フィールドをUnityで、
どう作る? どう動かす?
アーティスト編・アジェンダ
サンプル紹介
ワークフローの構築
工程とデータの作り込み
LWRP
アーティスト編・まとめ
サンプル紹介
6
Open World Demo
7
・1000m×1000m×500m
・約42000個の配置オブジェクト
・Terrain機能による地形作成
PC版、iOS版
プレイアブルデモ展示中
・データ制作 2人月
・モバイル向け調整 1人月
Open World Demo
8
Unity 2019.1.x
・LightWeight Render Pipeline
・Post Processing Stack V2
・Shader Graph
・Terrain / Terrain Tools
・H-LOD
・DOTS
DOTS?
9
Data-Oriented Technology Stack
Unityで大量のオブジェクトを
効率よく動かす機能群
詳しくはエンジニア編で
C# Job System
Entity Component System(ECS)
Burst Compiler
ワークフローの構築
ワークフローの構築
11
・プロジェクト… Standard-Asset-Characters
・広さ… とりあえず1km四方
・配置物量… まずは必要なだけ
・配置物種類… まずは必要なだけ
Unityの機能、特にTerrainの確認から
やってみないとわからない事だらけ
(締め切りだけは決まっている)
オープンワールド背景を作ろう!
ワークフローの構築
12
・ただしデータは独自形式
・ランタイムで3D化。LODが強力
Unity Terrain
・画像ベースの地形生成機能
Heightmap
Splatmap
Treemap
Detailmap
…地形の高さ情報
…草など小物の分布
…質感の分布
…樹木の分布
ワークフローの構築
13
Unity Terrain
・ただしデータは独自形式
・ランタイムで3D化。LODが強力
・画像ベースの地形生成機能
Heightmap
Splatmap
Treemap
Detailmap
…地形の高さ情報
…草など小物の分布
…質感の分布
…樹木の分布
広範囲の地形生成に向いている機能
ワークフローの構築
14
・Terrainの不足を拡充する機能セット
Package Managerからインストール
Unity TerrainTools
「新機能のTerrain Toolsパッケージで
作業を高速化させよう」
https://blogs.unity3d.com/jp/2019/05/2
8/speed-up-your-work-with-the-new-
terrain-tools-package/
・Terrainエディターにスカルプトなど機能追加
・Terrain Tool Box …プロジェクト全体のTerrain
ユーティリティー。Terrainの分割、結合、
グループ化、プリセットの設定など
ワークフローの構築
15
・Replace Splatmaps
・Export Splatmaps
・Export Heightmaps
Unity TerrainTools
import Raw… Export Raw…
TreemapとDetailmapは現状入出力できない
ワークフロー構築に重要な機能
ワークフローの構築
16
・Replace Splatmaps
・Export Splatmaps
・Export Heightmaps
Unity TerrainTools
import Raw… Export Raw…
TreemapとDetailmapは現状入出力できない
ワークフロー構築に重要な機能
ワークフローの構築
17
Unity Terrain / TerrainTools
地形生成
質感設定
オブジェクト配置
Heightmap:import / Export 可
Unity、他ツールでの作成も可能
Splatmap:import / Export 可
Unity、他ツールでの作成も可能
Detailmap import / Export 不可 Unityでの作成は可能
DOTSを活かすためにも、GameObjectでの配置を検討
ワークフローの構築
18
Height
Splat
Bitmap
Asset
FBX
Placement
???
何らかの方法
ワークフローの構築
19
Placement
Height
Splat
Asset
Bitmap
FBX
???
ワークフローの構築
20
ノードベースのテクスチャコンポジットツール
SBS / SBSAR形式、Bitmap出力
PBR用テクスチャ生成
Substance Designer
Height
Road
Bitmap Height
Splat
Detail
Bitmap
ワークフローの構築
21
【検証結果】
PNG・TGAは〇、RAWは×
→PhotoshopでPNG(16Bit)に変換すれば〇
Substance Designer
Height
Road
Bitmap Height
Splat
Detail
Bitmap
Possible
ワークフローの構築
22
・プロシージャルコンテンツ作成ツール
・柔軟なノードベースワークフロー
Houdini
Height
Splat
Detail
Bitmap
Placement
???
ワークフローの構築
23
【検証結果】
・各種mapをFileノードで入力
・Point Attributeを使って配置情報を生成
Houdini
Height
Splat
Detail
Bitmap
Placement
???
CSV?
・CSV Exporter (GameDevelopmentToolset)
ワークフローの構築
24
・CSVファイルからAssetPrefabのインスタンスを生成
・対応するPrefabがない場合はCubeを作りインスタンス
Unity エディタ拡張
Houdini CSV importer
Placement
CSV
ワークフローの構築
25
【検証結果】
・配置情報をCSV Expoeterで出力
・Unityエディタ拡張でCSVファイルから配置を生成
Houdini
Height
Splat
Detail
Bitmap
Placement
CSV
Possible
ワークフローの構築
26
総合3DCG制作ソフト
・UnityへのFBX入出力
・キャプチャー素材の編集
Maya
Asset
FBX
Asset
FBX
Possible
ワークフローの構築
27
Placement
Height
Splat
Asset
Bitmap
FBX
???
ワークフローの構築
28
Placement
Asset
Height
Road
Height
Splat
Detail
Height
Splat
Asset
Bitmap
Bitmap
Bitmap
FBX FBX
CSV
工程とデータの作り込み
工程とデータの作り込み
30
Placement
Asset
Height
Road
Height
Splat
Detail
Height
Splat
Asset
Bitmap
Bitmap
Bitmap
FBX FBX
CSV
31
Placement
Asset
Height
Road
Height
Splat
Detail
Height
Splat
Asset
Bitmap
Bitmap
Bitmap
FBX FBX
CSV
工程とデータの作り込み
Unity 地形生成
工程とデータの作り込み
32
・プレイアブルな確認環境
→ビジュアルだけではない、
プレイフィールドとしての地形
Unity 地形生成
工程とデータの作り込み
33
・プレイアブルな確認環境
→ビジュアルだけではない、
プレイフィールドとしての地形
Unity 地形生成
・Terrain、TerrainToolBox
→フィールド全景の起伏(Heightmap)作成
→街道の大まかな情報(Roadmap)作成
階層構造による迷路
34
・Raise or Lower Terrain
→おおまかな形状を作成
Unity 地形生成
工程とデータの作り込み
35
・Raise or Lower Terrain
→おおまかな形状を作成
Unity 地形生成
工程とデータの作り込み
・Sculpt/Terrace
→フィールド部分を階層化
36
・Raise or Lower Terrain
→おおまかな形状を作成
Unity 地形生成
工程とデータの作り込み
・Sculpt/Terrace
→フィールド部分を階層化
・Set Height
→階層構造の微調整
37
・Raise or Lower Terrain
→おおまかな形状を作成
Unity 地形生成
工程とデータの作り込み
・Sculpt/Terrace
→フィールド部分を階層化
・Set Height
→階層構造の微調整
・Sculpt/Bridge
→階層同士をスロープで接続
38
・階層構造の作成後、大小の
演出的な起伏を追加
Unity 地形生成
工程とデータの作り込み
・Paint Texture
→本来はSplatmapを作る機能
白黒でおおまかな道の情報を作成
39
Placement
Asset
Height
Road
Height
Splat
Detail
Height
Splat
Asset
Bitmap
Bitmap
Bitmap
FBX FBX
CSV
工程とデータの作り込み
Substance Designer
工程とデータの作り込み
40
Substance Designer
工程とデータの作り込み
41
・4枚のHeightmapを1枚に
・イテレーション向上のため
サンプルイメージを固定
Substance Designer
Heightmapと
Roadmapの
スロット
SD作業時に
結果を確認する
ためのテスト画像
本番とテスト画像を
切り替えるノード
工程とデータの作り込み
42
・傾斜が大きい箇所
=周囲との輝度差
・基準より高い場所
=しきい値より輝度の高い箇所
・Roadmapの加工
歪み、濃淡、ノイズなどで
自然な街道を形成
Substance Designer 傾斜が大きい
箇所を抽出
基準より高い場所を
抽出
Roadmapを加工し、
自然な街道を生成
工程とデータの作り込み
43
・傾斜、高地、街道を除外した
箇所が草原の候補地
・草原からさらに条件を絞った
箇所に樹木を生成
・傾斜、樹木、街道の近くが
茂みの候補地
Substance Designer
草原の発生する
Densityを生成
樹木の発生する
Densityを生成
茂みの発生する
Densityを生成
工程とデータの作り込み
44
・必要な情報をまとめて画像化
・Hegihtmapは街道の影響を
加味して再出力
Substance Designer
Splatmapを
生成
Detailmapを
生成
Heightmapを
生成
工程とデータの作り込み
45
Substance Designer
Heightmap × 4 (L16)
Roadmap (L8)
Heightmap × 4 (L16)
Splatmap × 4 (RGBA8)
Heightmap (L16)
SplatmapRGB (RGB8)
Detailmap (RGB8)
SplatmapA (L8)
Unity Houdini
Input
工程とデータの作り込み
46
Substance Player
・Substanceのプレビュー
・Bitmapのエクスポート
公式の無償ツール
工程とデータの作り込み
47
Substance Player
・Substanceのプレビュー
・Bitmapのエクスポート
公式の無償ツール
工程とデータの作り込み
48
Substance Player
・Substanceのプレビュー
・Bitmapのエクスポート
公式の無償ツール
49
Placement
Asset
Height
Road
Height
Splat
Detail
Height
Splat
Asset
Bitmap
Bitmap
Bitmap
FBX FBX
CSV
工程とデータの作り込み
工程とデータの作り込み
50
Houdini
工程とデータの作り込み
51
Houdini
Terrain形状を、
Houdini内で復元
各マップを
インポート
Splatmapと
Detailmapの
情報を付加
Texture解像度に
合わせたGridを生成
工程とデータの作り込み
52
Houdini
崖配置 樹配置 草配置 茂み配置
ポイント散布
Prefabの割り振り
Densityが
低い箇所を
削除
面積を測定
工程とデータの作り込み
53
Houdini
全ポイント統合
Attributeを整理
工程とデータの作り込み
54
Houdini
全ポイント統合
Attributeを整理
工程とデータの作り込み
55
Houdini
プレビュー生成
工程とデータの作り込み
56
Houdini
プレビュー生成
57
Placement
Asset
Height
Road
Height
Splat
Detail
Height
Splat
Asset
Bitmap
Bitmap
Bitmap
FBX FBX
CSV
工程とデータの作り込み
Maya
工程とデータの作り込み
58
Maya
Unity Asset Store
・Book Of The Dead: Environment
・Buried Memories Volume 1: Yggdrasil - Icon Pack
・The Blacksmith: Environments
スキャンデータの加工
工程とデータの作り込み
59
Maya
Unity Asset Store
・Book Of The Dead: Environment
・Buried Memories Volume 1: Yggdrasil - Icon Pack
・The Blacksmith: Environments
スキャンデータの加工
工程とデータの作り込み
60
Maya
スキャンデータの加工
・Houdini仮モデルに合わせた
形状調整
UVとTextureを改変しない
(時間短縮のため)
・Soft Selectionで頂点移動
Meshの継ぎはぎ
工程とデータの作り込み
61
Maya
スキャンデータの加工
・Houdini仮モデルに合わせた
形状調整
UVとTextureを改変しない
(時間短縮のため)
・Soft Selectionで頂点移動
Meshの継ぎはぎ
工程とデータの作り込み
62
Maya
スキャンデータの加工
・Houdini仮モデルに合わせた
形状調整
UVとTextureを改変しない
(時間短縮のため)
・Soft Selectionで頂点移動
Meshの継ぎはぎ
工程とデータの作り込み
63
Maya
スキャンデータの加工
・Houdini仮モデルに合わせた
形状調整
UVとTextureを改変しない
(時間短縮のため)
・Soft Selectionで頂点移動
Meshの継ぎはぎ
64
Placement
Asset
Height
Road
Height
Splat
Detail
Height
Splat
Asset
Bitmap
Bitmap
Bitmap
FBX FBX
CSV
工程とデータの作り込み
Unity インポート/修正作業
工程とデータの作り込み
65
Unity インポート/修正作業
工程とデータの作り込み
66
Unity インポート/修正作業
作
業
効
率
工程とデータの作り込み
67
Unity インポート/修正作業
非可逆的作業
作
業
効
率
工程とデータの作り込み
68
Unity インポート/修正作業
草 ×
Objectの大きさ、配置量に課題
接地がシビアなので処理の作り込みが必要
樹木 ◎
接地面積が小さく法線にも沿わないので低難度
分布のバリエーションもイメージ通り
茂み 〇
ほぼ現状で問題なし。形状が街道を塞ぐ事が
多かったので配置制限を調整したい
崖 △
スキマや重なりが不均一。法線への追従も
要調整
工程とデータの作り込み
69
LWRP
LWRP
71
2019.3から名称が変わります
Universal Render Pipeline
LWRP(Universal RP)
72
Lighting
・Directional Light ×1
・Light Probes
・Refrection Probe
・Shadow map
・Lit Shader(Physically based)
Post Processing Stack V2
・Color Grading
・Bloom
・Vignette
・(Depth Of Field)
LWRP(Universal RP)
73
Shader Graph
Unity Learning Materials
https://learning.unity3d.jp/3007/
Unity道場8月〜イケてるエフェクト
の作り方と、Uniteを256倍楽しむ為
に知っておくべき知識〜
アーティスト編・まとめ
アーティスト編・まとめ
75
・Unityで大量のオブジェクトが扱える
・グラフィックス表現、Terrain機能も進化
・様々なDCCツールと柔軟に連携
今後もフィールド生成のプロジェクトは
継続したいと考えています。興味のある方、
すでに作られている方などいましたら
ぜひ情報交換しましょう。
・Unityで大規模なゲーム開発を!
76
DAY2
15:30~ Unityとプロシージャルで作るオープンワールド背景
GenerativeArt—MadewithUnity
Thank you.
エンジニア編に続く

Unityではじめるオープンワールド入門 アーティスト編