---
title: ゼロから始めるプロシージャル入門！| EGC2024 (Kazuhisa Minato)
tags:  #ue5 #egc2024  
author: [エピック ゲームズ ジャパン](https://www.docswell.com/user/EpicGamesJapan)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/P7RWGLGKE9.jpg?width=480
description: 現代のゲーム開発で求められる物量とクオリティを克服するカギの一つにプロシージャルによる生成が挙げられます。ゲーム開発におけるプロシージャル生成の歴史は長く、実績も数多くあり、そのアプローチも多岐に渡りますが、近年では各ツールやエンジンに共通してみられる要素も増えてきました。  本講演ではそうした要素を、プロシージャルで（特に背景配置の）タスクに取り組む際の共通の「作法」と考え、その基本的な考え方を解説しています。ごく基本的な内容ですが、YouTubeやネットで見つけられるプロシージャル入門動画や記事をスムーズに理解できる下地を整えることを目標に準備しました。  なお本講演は、Unreal EngineやそのプロシージャルツールであるPCGの利用経験がなくてもご覧いただけます。
published: April 30, 24
canonical: https://www.docswell.com/s/EpicGamesJapan/K4Q8Y8-EGC2024_Procedures
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/P7RWGLGKE9.jpg)

ゼロから始める
プロシージャル入門！
Kazuhisa Minato
Epic Games Japan, Developer Relations
2023 Private &amp; Confidential


# Page. 2

![Page Image](https://bcdn.docswell.com/page/PJXPXWX5EX.jpg)

プロシージャル（”手続きの”）とは？
● “一定のアルゴリズムに従って、特定のアセットを自動生成
すること” （「ゲームメーカーズ」用語集より）
● 生成AIが創造性を人工知能にゆだねるのに対し、
プロシージャルでは手続きを人間が定めて、コンピュータ
に実行させる
● 「意外な結果が見られて面白い」などはないが、
コントローラブルで工数削減に役立つ


# Page. 3

![Page Image](https://bcdn.docswell.com/page/3JKDWVWR7D.jpg)

本日の講演のねらい
● 「プロシージャル的なもの」は種類も豊富で、型もない
● 一方、背景配置などの分野では「お作法」的なものが固まりつつある
● サンプルプロジェクトやYouTube動画等、学習リソースはマジ潤沢
● →デモ ナニイッテルノカ ヨクワカラナイ…
● 何か考え方自体が違うっぽい
● 本日はそうした学習リソースを理解していくための下地となる知識
（すなわち「お作法」）をこれからプロシージャルを学びたい人たち
と共有できればと思います


# Page. 4

![Page Image](https://bcdn.docswell.com/page/LE3R1M1G75.jpg)

本日の流れ
● プロシージャルの分類とUE5の新ツールの紹介
● 基本３単語の解説
○ ポイント
○ ボリューム
○ アトリビュート
● 次のステップ
● まとめ


# Page. 5

![Page Image](https://bcdn.docswell.com/page/8EDYX6XNEG.jpg)

プロシージャルテクスチャやプロシージャルサウンドを
うっちゃりつつ・・・
プロシージャルを（私的に）分類したい
● プロシージャルによる組み立て
● プロシージャルによるモデリング
● プロシージャルによる配置


# Page. 6

![Page Image](https://bcdn.docswell.com/page/V7P6PYPNJ8.jpg)

プロシージャルの（私的）分類
プロシージャルによる組み立て
● あの面倒なモジュラーパーツの組み合わせを自動化
出典: 『Assassin&#039;s Creed Syndicate: London Wasn&#039;t Built in a Day』(GDC2016)


# Page. 7

![Page Image](https://bcdn.docswell.com/page/2JV32G2YEQ.jpg)

プロシージャルの（私的）分類
プロシージャルによるモデリング
●
パラメータに従い、オブジェクトのジオメトリ自体を生成、加工


# Page. 8

![Page Image](https://bcdn.docswell.com/page/5EG3R8RW7L.jpg)

プロシージャルの（私的）分類
プロシージャルによるモデリング
●
パラメータに従い、オブジェクトのジオメトリ自体を生成、加工
出典:
『Lyra Starter Game』(Epic Games - UEサンプルプロジェクト)


# Page. 9

![Page Image](https://bcdn.docswell.com/page/4JQ5V9VQ7P.jpg)

プロシージャルの（私的）分類
プロシージャルによる配置
● 規則とパラメータに従って、空間にオブジェクトを配置
出典:
『Making Assassin&#039;s Creed Unity: Part 2 - Next Generation Technology』(IGN, 2014)


# Page. 10

![Page Image](https://bcdn.docswell.com/page/K749MXMYE1.jpg)

このうち本日扱いますのは
プロシージャル配置


# Page. 11

![Page Image](https://bcdn.docswell.com/page/LJ1K8N8N7G.jpg)

*GDC講演などの公開情報からの筆者の推測に基づきます
世間のプロシージャル配置の実現例
独自のプロシージャル機能を Houdiniなどのプロシージャ 『Houdini Engine』を用い
ルに強い外部DCCツールを てHoudiniの機能をゲームエ
自前実装
サポートに利用
ディタに統合


# Page. 12

![Page Image](https://bcdn.docswell.com/page/GJWDZ4GM72.jpg)

そして新たな選択肢…
Procedural Content Generation Framework
(PCG)
UE5内で完結した汎用プロシージャルコンテンツ生成ツール


# Page. 13

![Page Image](https://bcdn.docswell.com/page/4EZG12LMJ3.jpg)

フォリッジツール（植生ペイント）と違うの？
フォリッジは3Dオブジェクト
をスプレーで吹きかけるツー
ル
ヤバッ生やしすぎた！！（汗
その工程で
消去→設定変更→再スプレー
のトライ＆エラーが必須
移動も面倒くさい…


# Page. 14

![Page Image](https://bcdn.docswell.com/page/Y76YLVW5EV.jpg)

PCGであれば指定ボリューム内にコンテンツを配置
パラメータ変更だけで再生成ができる
PCGボリュームを配置して、グラフを
指定すると、一発で森が形成される例
木を減らす場合は密度パラメータを調
整して再生成するだけ
減らすも増やすも数値調整だけで済む


# Page. 15

![Page Image](https://bcdn.docswell.com/page/G75G1DMG74.jpg)

技術的にも十分成熟！始めるならいま！
え？プロシージャル勢の用語が分からない？
いやあ～
テングンが…
大丈夫！今日学べます！
ほー
スキャッター
ですなあ


# Page. 16

![Page Image](https://bcdn.docswell.com/page/9J2Y189DJR.jpg)

プロシージャル配置の学習を始めるために
本日覚えて帰っていただきたい３単語
● ポイント
● ボリューム
● アトリビュート


# Page. 17

![Page Image](https://bcdn.docswell.com/page/DEYGZ64MEM.jpg)

ポイント


# Page. 18

![Page Image](https://bcdn.docswell.com/page/VJNG3ZY378.jpg)

プロシージャルの基礎知識／ポイント
ゲームのマップで森を作ることを考えてみよう
木をテキトーな場所にたくさん配置す
ればよいハズ！？
この手続きをコンピュータで処理する
のだから...こう?
// 20回繰り返す
for (int i = 0; i &lt; 20; i++)
{
// テキトーな位置に
Locate(Rand(), Rand());
// 木を植える
Populate(Tree);
}
●
●
●
これでもよい
しかし…
HoudiniやPCGで主流のアプロー
チではない


# Page. 19

![Page Image](https://bcdn.docswell.com/page/YE9W9ZPPE3.jpg)

プロシージャルの基礎知識／ポイント
HoudiniやPCGでメジャーなやり方とは…？
1.
地面に点を散布（スキャッター）
2.
ノイズ関数で点に濃淡（確率密度）をつける
3.
一定密度以上の点をフィルタリング
4.
残った点にオブジェクトをスポーン
点を種、密度を発芽確率と置き換えると
分かりやすいかもしれない
点が群れをなすことから、
これらの点を点群（ポイントクラウド）と呼ぶ
1
2
3
4


# Page. 20

![Page Image](https://bcdn.docswell.com/page/GE8N91DX7D.jpg)

実践…草生える


# Page. 21

![Page Image](https://bcdn.docswell.com/page/LELPWQMN7R.jpg)

スプラインに沿って一定間隔に点を置けば
街灯設置ツールなども簡単に作れる


# Page. 22

![Page Image](https://bcdn.docswell.com/page/4JM491YQ7W.jpg)

ポイント
結論（雑）
● プロシージャル配置をや
る人はだいたい点が好き
● 点が群れをなすので、
点群と言ったりする
ポイントクラウド


# Page. 23

![Page Image](https://bcdn.docswell.com/page/PJRWGL9K79.jpg)

ボリューム


# Page. 24

![Page Image](https://bcdn.docswell.com/page/PEXPXWQ57X.jpg)

● 自然界を考えてみる
● 風や鳥が種を運び、大
地に種がスキャッター
される…


# Page. 25

![Page Image](https://bcdn.docswell.com/page/3EKDWV9RJD.jpg)

● それはやがて花となり


# Page. 26

![Page Image](https://bcdn.docswell.com/page/L73R1MWGJ5.jpg)

● 枯れて
● また次の種を地面にス
キャッターする
● これを繰り返す


# Page. 27

![Page Image](https://bcdn.docswell.com/page/87DYX6KN7G.jpg)

● 季節はめぐり、時に別
の種類の種がやってく
ることもあるだろう


# Page. 28

![Page Image](https://bcdn.docswell.com/page/VJP6PYKNE8.jpg)

● それは長い年月を経て
力強く成長し


# Page. 29

![Page Image](https://bcdn.docswell.com/page/2EV32GVY7Q.jpg)

● 近くの種の成長を阻み


# Page. 30

![Page Image](https://bcdn.docswell.com/page/57G3R8LWJL.jpg)

● 結果、でかい木の根元
に花が咲かなくなるこ
ともあるだろう
咲けぬ！
咲けぬ！


# Page. 31

![Page Image](https://bcdn.docswell.com/page/4EQ5V9YQJP.jpg)

● 自然界なら時間の経過
によって自然に起こり
えること
● でも仮想世界では？
発芽せず


# Page. 32

![Page Image](https://bcdn.docswell.com/page/KJ49MXWY71.jpg)

● 植生再現のためとはい
え、何世代もシミュ
レーションを回せない
● 点を撒いた時点で右図
のような最終像を決定
しておくのが望ましい
発芽予定
発芽予定
発芽せず
発芽予定
発芽せず


# Page. 33

![Page Image](https://bcdn.docswell.com/page/LE1K8NYNJG.jpg)

えっ何を根拠にどうやって…？
「点」情報だけじゃ無理では


# Page. 34

![Page Image](https://bcdn.docswell.com/page/GEWDZ41MJ2.jpg)

そこでボリュームの出番です


# Page. 35

![Page Image](https://bcdn.docswell.com/page/47ZG12PME3.jpg)

ボリューム
点だけでは無理でも
体積付きなら！


# Page. 36

![Page Image](https://bcdn.docswell.com/page/YJ6YLVM57V.jpg)

● 点だけで考えると、全
部、発芽して育ちそう
な感じがする


# Page. 37

![Page Image](https://bcdn.docswell.com/page/GJ5G1DZGJ4.jpg)

● しかし、育ち切ったと
きのボリューム感は、
それぞれこんな感じ


# Page. 38

![Page Image](https://bcdn.docswell.com/page/LE3R1M9P75.jpg)

● そこで、点の位置に、
そのボリューム感を重
ねてみる


# Page. 39

![Page Image](https://bcdn.docswell.com/page/8EDYX6G3EG.jpg)

● すると、ボリューム同
士が重なっているとこ
ろが分かる


# Page. 40

![Page Image](https://bcdn.docswell.com/page/V7P6PY3PJ8.jpg)

● ボリューム情報を根拠
に、花の点群から木の
点群と交差する点を除
去


# Page. 41

![Page Image](https://bcdn.docswell.com/page/2JV32G4VEQ.jpg)

● これなら全部発芽して
オッケー
発芽予定
発芽予定
発芽予定


# Page. 42

![Page Image](https://bcdn.docswell.com/page/5EG3R8117L.jpg)

● 各点にオブジェクトを
配置
● ハイ！一発でいきまし
た～！


# Page. 43

![Page Image](https://bcdn.docswell.com/page/4JQ5V9DN7P.jpg)

ボリュームによる交差除去


# Page. 44

![Page Image](https://bcdn.docswell.com/page/K749MXZ3E1.jpg)

草と木だと分かりづらいので岩で…
ボリュームによる交差除去


# Page. 45

![Page Image](https://bcdn.docswell.com/page/LJ1K8NRZ7G.jpg)

道のスプラインに沿ってボリュームを配置して道を開く
ボリュームによる交差除去


# Page. 46

![Page Image](https://bcdn.docswell.com/page/GJWDZ41672.jpg)

ボリューム
結論（雑）
● プロシージャルやる人は
だいたいボリュームも好
き


# Page. 47

![Page Image](https://bcdn.docswell.com/page/4EZG12PRJ3.jpg)

アトリビュート


# Page. 48

![Page Image](https://bcdn.docswell.com/page/Y76YLVM1EV.jpg)

（本来）点とは
● 大きさがなく位置だけをもつ図形
しかし・・・？


# Page. 49

![Page Image](https://bcdn.docswell.com/page/G75G1DZL74.jpg)

点でやってきたことをふりかえる
濃淡情報でオブジェクト配
置の有無を決定
ボリューム情報でほかの
点群との共存具合を決定
→位置以外にもめっちゃ
情報あるやんけ！
そう、
プロシージャル界の
「点」は付随情報をたく
さん持てるのである！


# Page. 50

![Page Image](https://bcdn.docswell.com/page/9J2Y18R3JR.jpg)

属性は自由に追加できる
● 河口からの距離を属性とし
て点に加えれば、点群処理
の文脈で処理可能
川上ほど石が大きくゴ
ツゴツで
川下にいくほど小さくて
丸い


# Page. 51

![Page Image](https://bcdn.docswell.com/page/DEYGZ6D8EM.jpg)

実践
道のそばに生えている木を切り倒し、
雑草は除草剤で枯らしたようなマップに仕上げたい
木は木の点群の位置に木のオブジェクトを置いているだけ、
草も同様だった
…どうすれば切り倒したり、枯らしたりなんてことができる？


# Page. 52

![Page Image](https://bcdn.docswell.com/page/VJNG3Z6978.jpg)

実践
木のポイントに道の点群（再近傍）からの距離を
Distance属性として与えて…
● 一定距離でフィルタリング
を行い…
● 一定距離内の木の点には伐
採済みのメッシュを配置！


# Page. 53

![Page Image](https://bcdn.docswell.com/page/YE9W9ZL3E3.jpg)

実践
草のポイントに道の点群（再近傍）からの距離を
Distance属性として与えて…
● 一定距離でフィルタリング
を行い…
● 一定距離内の草の点には除
草剤浴びた系メッシュに！


# Page. 54

![Page Image](https://bcdn.docswell.com/page/GE8N91XL7D.jpg)

結果
パスを動かすと、森の中で自由に道の位置を変えられるようになった
このようなマップ調整は手配置のマップでは（作業負荷的に）不可能


# Page. 55

![Page Image](https://bcdn.docswell.com/page/LELPWQ8Q7R.jpg)

ボリューム
結論（雑）
● プロシージャルやる人は
だいたいアトリビュート
も好き


# Page. 56

![Page Image](https://bcdn.docswell.com/page/4JM491XK7W.jpg)

以上、本日覚えて帰ってもらいたいこと３つでした
ポイント
ボリューム
アトリビュート


# Page. 57

![Page Image](https://bcdn.docswell.com/page/PJRWGLN679.jpg)

最終形


# Page. 58

![Page Image](https://bcdn.docswell.com/page/PEXPXWND7X.jpg)

侮ってはいけない、、
似たようなロジックでアセットを入れ替えれば
超リアルな背景が作れる
出典: 『7 Minute Photoreal Forest! Procedural Content Generation PCG in Unreal Engine』
(YouTube)


# Page. 59

![Page Image](https://bcdn.docswell.com/page/3EKDWVNDJD.jpg)

次のステップ


# Page. 60

![Page Image](https://bcdn.docswell.com/page/L73R1MVPJ5.jpg)

プロシージャル配置、何を使って学べばよい？
● おススメは Unreal Engine 5 のPCG
(もちろんSideFXさんのHoudiniも選択肢）
● UE5のPCGの利点は無料で始めることができ、UE5内で完結
● また、ほかのプロシージャル技術も学べる
● 各種「お作法」は他のツールに通じるところがあり、
学んだことが無駄にならない


# Page. 61

![Page Image](https://bcdn.docswell.com/page/87DYX6837G.jpg)

次の段階に進みましょう
● もう皆さんはPCGでプロシー
ジャル配置技術に手をつける
準備ができてます！
● YouTubeのプロシージャル系
ビデオを理解できるはず！
● 『7 Minute Photoreal Forest!
Procedural Content
Generation PCG in Unreal
Engine』→


# Page. 62

![Page Image](https://bcdn.docswell.com/page/VJP6PY8PE8.jpg)

PCGの学習リソースは？
● Procedural Content Generation in UE5 | GDC2023
● Adrien LOGUT氏のチュートリアルシリーズ


# Page. 63

![Page Image](https://bcdn.docswell.com/page/2EV32GNV7Q.jpg)

よりディープな学習に！ （要ハイスペックマシン）
● Electric Dreams 環境サンプルプロジェクト
(https://www.unrealengine.com/ja/electric-dreams-environment)
● Unreal Engine 5 ElectricDreams環境サンプルにみるプロシー
ジャル生成テクニック【CEDEC 2023】
● Deep Dive into the Electric Dreams Project | Inside Unreal


# Page. 64

![Page Image](https://bcdn.docswell.com/page/57G3R8K1JL.jpg)

まとめ


# Page. 65

![Page Image](https://bcdn.docswell.com/page/4EQ5V9NNJP.jpg)

まとめ
●
プロシージャル技術は生成AIより制御性が高く、理想的には人間が手作業で
行っていた手順／工程を自動化に貢献できる
●
●
→メッシュの組み立て、モデリング、背景配置について実績がある
３つの基本を理解することが大切
●
ポイント：点（空間における位置情報）のこと
●
ボリューム：点に大きさをもたせ、生成時に空間を占める面積・容積を前もって主張
●
アトリビュート：点に付随させる任意の追加情報
●
UE5を使えば無料でプロシージャルを動かし、学ぶ環境が整う
●
学習に使うプロジェクトや、学習教材は無料で公開されている
●
→「PCG」でYouTubeやGoogleを検索しよう


# Page. 66

![Page Image](https://bcdn.docswell.com/page/KJ49MXG371.jpg)

ご清聴ありがとうございました
謝辞（ライセンス）
&quot;Low poly trees&quot; (https://skfb.ly/opJMP) by Aditya Graphical is licensed under
Creative Commons Attribution (http://creativecommons.org/licenses/by/4.0/).
&quot;Low Poly Pack Oasis - Desert&quot; (https://skfb.ly/6CGr6) by Ergoni is licensed under
Creative Commons Attribution (http://creativecommons.org/licenses/by/4.0/).
2023 Private &amp; Confidential


