
English: 
>>Mattias: Good morning.
Thank you so much for coming.
This is our series
of tech talks for today.
This is the first one.
It is called, Causing Chaos:
The Future of Physics and
Destruction in Unreal Engine 4.
I am Matthias Worch,
I am the Design Lead
at Epic Games
Special Projects,
and I am one
of four speakers today.
I am going to tell you
a little bit
about how to build interactive
experiences using Chaos.
Joined by two coworkers today.
First we have Jim VanAllen,
Senior Technical Artist.
He’s going to talk
about the art of destruction.
Mike Lentine, the lead
physics programmer on Chaos,
will illuminate
the tech behind Chaos.
We are also joined
by Jeff Rous from Intel,
and he’s going to talk
a little bit about
how we made Chaos fast.
Chaos is our upcoming
physics system,
which is going to be the main
physics system in Unreal Engine.
It is still
in active development,
so we are working
on it right now,
but there is going to be
an early access version of it
in 4.23,
which is coming out very soon.

Japanese: 
>>Matthias: おはようございます
お越しいただき誠にありがとうございます
これは 今日の一連の技術トークです
これがその 1 番目です
タイトルは
「カオスの発生： Unreal Engine 4 に
おける物理および破壊の未来」です
私は Matthias Worch と申しまして
Epic Games の
特別プロジェクトの設計主任で
今日の 4 人の講演者の 1 人です
Chaos を利用してインタラクティブな体験を
構築する方法について
少しお話ししたいと思います
今日は同僚 2 人にも参加してもらいます
1 人目は シニア テクニカル アーティストの
Jim Van Allen さんです
彼には破壊のアート面について
話してもらいます
Chaos の主任物理プログラマである
Michael Lentine さんには
Chaos の背後にある技術を
中心に話してもらいます
さらに Intel 社さんの
Jeff Rous さんにも参加してもらって
Chaos の高速化方法について
少し話してもらいます
Chaos は弊社の次期物理システムで
Unreal Engine のメインの
物理システムになる予定です
Chaos はまだ開発途中で
今もまさに作業中ですが
まもなくリリースされる 4.23 には
そのアーリー アクセス バージョンが
付属する予定です

Chinese: 
>>Mattias：早上好
欢迎大家光临
现在是我们今天的系列技术讲座
这是第一个讲座
它的题目是：制造混乱：
虚幻引擎4中的
物理和破坏效果的未来
我叫Matthias Worch
是Epic Games
特殊项目部门的技术主管
我是今天的四名主讲者之一
我要稍微和你们讲一下
如何使用Chaos构建交互式体验
今天还有两位同事和我一起演讲
首先是Jim VanAllen
他是资深技术美术师
他将会谈谈破坏的艺术
Mike Lentine是负责Chaos的
首席物理程序员
他将介绍Chaos背后的技术
来自英特尔的Jeff Rous
也会和我们一起演讲
他将要稍微谈一谈
我们如何提高Chaos的速度
Chaos是我们即将推出的物理系统
它将成为虚幻引擎中
主要的物理系统
它仍处于积极开发阶段
所以我们正在改进它
不过它将会有一个抢先体验版本
在4.23中推出
很快大家就能见到了

Japanese: 
このバージョンには
コードのすべてと
これからお見せするデモの作成に使われた
コンテンツの例が収録される予定です
Chaos は完全な物理システムです
Chaos は Unreal Engine の
物理エンジンに期待される
あらゆることを実現する予定です
また Chaos はたまたま破壊をとても
得意としているので
Chaos を GDC で
世界に紹介しようと思ったときに
作ったのがそれでした
つまり この破壊のデモを作ったのです
皆さんがすでにこのデモを
ご覧になっているとよいのですが
このデモは昨日の「リアルタイム ライブ」でも
お見せしましたが
ここにそのショート クリップがあります
このデモは何回見ても十分ということはないので
皆さんがすでにご覧になっていたとしても
楽しんで頂けると思います
>> ニュース速報：ロボット レジスタンスの
リーダーである K-OS は
Robo Ready Research
研究所に侵入して 最高機密の
軍事ハードウェアを盗みました
そして回収エージェントが派遣されました
さあ エージェント 38
反逆ロボットの回収の時間だ
[レーザー発射音]
>> 好都合なことに今日は銀行休業日だ
奴は逃げたぞ！
ロケット ブースターを
有効にして奴を追跡せよ

Chinese: 
它将包含所有的代码
以及一些内容示例
我们就是用它们制作了
现在展示的演示
Chaos是一个完整的物理系统
它将能做到你在虚幻引擎中
对物理系统期待的一切
而且它也很擅长表现破坏
所以当我们想在GDC上
向全世界展现它的时候
我们就做了这个
我们制作了这个破坏演示
我希望你们
到现在为止已经看过了
我们昨天也在RTL展示了它
不过我这里有一个很短的剪辑
我对它是百看不厌
所以即使你们已经看过了
我还是希望你们喜欢
>> 突发新闻：
机器人抵抗运动首领K-OS
闯入一个Robo
Ready研究实验室
盗走了绝密的军用硬件
召回特工已经出发
好了 38号特工
现在是叛乱分子召回时间
[激光爆射]
>> 好在今天银行休息
她逃走了！
启动火箭助推器
追上她

English: 
It is going to have
all of the code
as well as some content examples
that we used to make the demo
that we are showing.
Now, Chaos is a complete
physics system.
It is going to do everything
that you expect a physics system
to do in Unreal Engine.
It also happens to be
really good at destruction,
so when we wanted to reveal it
to the world at GDC,
that’s what we created.
We created
this destruction demo.
I hope you have seen it
at this point.
We showed it at RTL
as well yesterday,
but I do have a short clip here.
I cannot get enough of it,
so even if you have seen it,
I hope you like this.
>> Breaking news:
Robo resistance leader K-OS
has broken into a Robo
Ready Research lab
and stolen top
secret military hardware.
A recall agent
has been dispatched.
Okay, Agent 38,
it is renegade recall time.
[LASER BLASTS]
>> Good thing it is
a bank holiday.
She is getting away!
Activate rocket boost
and get after her.

Chinese: 
我正在用更大口径的武器
来弥补你的技术缺陷
她又跑了！
我们等她从那里传送出来
现在真是好机会
可以知道那东西到底有什么用了
[不祥的音乐]
[楼房坍塌]
>> 哦 那可不妙
从好的一面来说
你已经被批准强制加班了
[音乐]
>> Mattias：
好 那么就让我们
首先谈谈使用Chaos进行设计
以及如何围绕这种系统
创作交互式体验
这个演示本身是你们可以试玩的
它背后的创新
解释起来很容易
我们想要创作一个向老式的
光线枪游戏致敬的演示
你们在玩它的时候
实际上要操作两个Vive控制器
你们可以随意射击
因此能享受到很多乐趣
你们可以摧毁整座城市
我们想保证你们
在这个过程中有一个目标
所以你们要追杀这个小机器人
她叫K-OS
或K-O-S

Japanese: 
君の技術不足を大口径の武器で補っている
奴がまた動きだしたぞ！
奴はテレポートして脱出した
では 奴が実際に何をするのかを見てみようか
[不吉な音楽]、[ビルが崩れ落ちる音]
>> ああ これはマズいな
幸いなことに
君は強制残業を許可された
[音楽]
>> Matthias: よろしいでしょうか
ではまず Chaos を利用したデザインについて
そして Chaos を中心としたインタラクティブ
体験の作成方法からお話しましょう
このゲームとして遊べるデモの背後にある
アイデアについて説明するのはむしろ簡単です
私たちは 昔のライトガン シューティング
ゲームのオマージュを作りたかったのです
このゲームをプレイする際には
実際には VIVE コントローラを
2 つ持って撃つことができ
そのおかげでとても楽しいゲームになっています
このゲームでは街全体を
ぶっこわして遊ぶことができます
壊すときの目標をはっきりさせたいと思ったので
K-OS という名前の小さいロボットを

English: 
I am compensating
for your lack of skill
with higher caliber weaponry.
She is on the move again!
Let us see her teleport
out of that one.
Now would be a good time
to figure out
what that thing actually does.
[OMINOUS MUSIC],
[BUILDING CRUMBLING]
>> Oh, that is not good.
On the bright side,
you have been approved
for mandatory overtime.
[MUSIC]
>> Mattias:: All
right, so let us start
by talking about
designing with Chaos
and how you create interactive
experiences around this.
The creative behind this demo
itself which you can play,
is rather easily explained.
We wanted to create an homage
to old light gun games.
When you are playing this,
you actually have
two Vive controllers
and you get to shoot at it,
and it makes it a lot of fun.
You get to smash up
an entire city.
We wanted to make sure that you
actually had a goal during that,
so you are going after
this little robot called K-OS,
or K-O-S.

English: 
You get to use destruction
as a tool.
If you want to author
something like this,
I want to give you
a little bit of an idea
of what you have to play with.
Everything that you have seen,
everything that is in this demo
was completely created
in Unreal Engine.
We did not use any outside tools
other than obviously you go
into Photoshop
to create Textures, et cetera.
But all the destruction tools
are actually in Unreal Engine.
The reason I like pointing this
out is because it shows
you how tightly integrated Chaos
is with Unreal Engine 4, right?
It is actually part
of the Engine.
We will come back to that
again and again.
Everything you see in this demo
and that you can play is
rendered in real-time as well,
and we are using a regular
high-end gaming PC
that you could buy
in stores right now.
There is a difference between
rendering something in real-time
and actually simulating
something in real-time,
and obviously everything here
is super heavy on simulation.
Let us unpack that
statement a little bit.
Everything that we show you is
simulated in real-time as well,

Japanese: 
追いかけるようにしました
そうすれば破壊を道具として
使うことができますから
このようなものをオーサリングしたいときに
使う必要のあるものについてのイメージを
少しお教えしたいと思います
ご覧いただいた動画の中のものすべて
このデモの中のものすべては
完全に Unreal Engine の中で
作られました
テクスチャを作るのに
Photoshop を使ったとか
そういうものを除けば
外部のツールは何も使っていません
破壊ツールのすべては
実際には Unreal Engine のものです
このことを指摘したのは
Chaos がいかに密接に
Unreal Engine 4 に統合されているかを
示しているからです Chaos は実際に
Unreal Engine の一部なのです
このことは何度も繰り返し触れるつもりです
このプレイできるデモに表示されているものは
すべてリアルタイムでレンダリングされており
今すぐお店で買うことのできる
普通のハイエンドの
ゲーミング PC を使っています
何かをリアルタイムでレンダリングすることと
何かをリアルタイムで
実際にシミュレートすることは別で
このデモの中のシミュレーションは
明らかにとても処理の重いものばかりです
この話をもう少し掘り下げてみましょう
お見せしたデモは全てリアルタイムでシミュレート
されていますが 1 つ但し書きがあります

Chinese: 
你们可以使用破坏作为工具
如果你们要编写像这样的作品
那么我就会让你们稍微了解一下
需要使用哪些功能
你们看到的所有东西
这个演示中的一切
都是完全在虚幻引擎中创作的
我们基本上没有使用任何外部工具
不过显然我们需要
进入Photoshop
创建纹理之类东西
但是所有的破坏工具
都是虚幻引擎自带的
我很喜欢指出这一点
因为这证明了
Chaos与虚幻引擎4的集成
是多么紧密 对吧？
它实际上是引擎的一部分
我们将会一次又一次地
重温这一点
你们在这个演示中看到的一切
和可以操纵的一切
也都是实时渲染的
我们使用的是普通的高端游戏PC
你们现在就可以去商店买到
实时渲染某些东西
和实时模拟某些东西
是有区别的
显然这里的一切都大量运用了模拟
让我们稍微讲解一下
我们向你们展示的一切
也都是实时模拟的

Japanese: 
それは リアルタイムでシミュレートするのは
必要なときに限る ということです
それについて さらに掘り下げてみましょう
そうすれば Chaos の内部の
仕組みについての
イメージがつかめるでしょう
私たちが作ったデモ全体を通して見ると
3 つの場面に分かれています
1 つ目の場面では
K-OS を街中で追跡します
K-OS はいろいろな柱の
陰に隠れようとするので
それを追い立て続けます
この場面は 100 パーセント
すべてリアルタイムです
この最初のセクションは
すべてストリーミング読み込みしています
その辺はあまり工夫していません
この場面の途中ではプレイヤーが
何処を撃つかわからないので
これらはすべて100 パーセント
1 回しか起こりません
そして ビルの方に移動します ここで最初の
セクションのストリーミングは終わります
そしてこちらをストリーミング読み込みします
ここから K-OS がビルの中に隠れだすので
プレイヤーの方も武器をアップグレードして
ビル中を壊しだします
ここでも Robo Ready の本社を
含むすべてのビルが
100 パーセント実行時の
リアルタイム処理です
ここでは何も特別なことはしていません
すべてが実行時にシミュレートされています
そして 3 つ目の場面に移りますが
これはこれまでの場面とはちょっと違います

English: 
with one caveat.
We only do it when needed.
We are going to go into that
a little bit deeper.
It gives you a really good idea
of how Chaos works
under the hood.
As I go through the demo
that we created,
there are three
distinct sequences.
There is the first one
where we are hunting K-OS
through the streets
and she is trying to hide
behind various pillars
and we keep flushing her out.
Everything here
is 100 percent real-time.
We have the entire first section
streamed in as well.
We are not being
really creative about it.
We do not know where
you are going to shoot,
so as we are going past this,
all of this is happening
100 percent at one time.
Then we go over some buildings.
We stream out the first section.
This stream this one in,
and this is where K-OS
starts hiding inside buildings,
so we upgrade our arsenal
and we just start smashing up
the entire buildings.
Once again,
both of these buildings,
including Robo
Ready Headquarters,
100 percent just runtime
in real-time.
We do not do
anything special here,
and everything here
is simulating at runtime.
Then we get to
the third sequence,
which is a little bit different.

Chinese: 
不过附带一条说明
我们只在需要的时候才模拟
让我们稍微深入讲解一下
这可以让你们很好地了解到
Chaos内部的工作原理
看看我们创作的这个演示
它有三段不同的序列
这是第一段
我们正在穿过街头
追猎K-OS
她想躲在各种柱子后面
我们不停地炸掉柱子
把她逼出来
这里的一切都是100%实时的
我们还流送了整个第一段
我们在这里没有发挥多少创意
我们不知道你会朝哪里射击
所以在我们播放这一段的时候
这些破坏都是100%实时发生的
然后我们转到一些楼房上
我们流送了第一部分
这段流送
这是K-OS
开始躲进楼房里的地方
所以我们升级了武器
我们开始摧毁整幢大楼
和前面一样
这两幢楼房
包括Robo
Ready总部
是100%实时运行的
我们没有在这里
做任何特别的事情
这里的一切都是在运行时模拟的
然后我们转到第三段序列
它有一点不同

English: 
This is a cut scene
at the very end
where we are crumbling an entire
city block as this huge robot--
Somebody told me
she is called Mildred.
I did not know that.
It is rising and crumbling
the entire city block.
This one was actually
pre-simulated.
We did this in Chaos, but then
we baked this out as a cache
which we are playing back
at runtime.
Now, even though we are
playing back a cache,
it does not mean that this is
not still a dynamic system.
If you understand
that a little bit better,
I think you have
a really good idea of what Chaos
is actually doing under
the scene, behind the scenes.
We can, if we want to,
actually pre-cache simulation
and we can bake them out.
That is actually
really useful to us
and to you
because it allows us to
[inaudible]
something, right?
If we have a really
good destruction
that we do not
want to be dynamic,
that we want
to make sure happens
exactly at the same time
every single time,
we can actually do that
and we can pick the perfect one.
It also allows us to do
mass destruction at performance,

Chinese: 
这是最后的一个过场
我们让整个街区坍塌
同时这个巨大的机器人--
有人告诉我 它叫Mildred
我不清楚
它站起来把整个街区都弄塌了
这家伙其实是预模拟的
我们在Chaos中做了模拟
然后以缓存形式烘焙出来
在运行时播放
尽管我们是在播放缓存
但这不表示它不是动态系统
如果你们对它多了解一点
我认为你们就能真正明白Chaos
在这些场景背后究竟做了什么
如果我们愿意
实际上可以预缓存模拟
然后把它们烘焙出来
这对我们、对你们都是
非常有用的
因为它允许我们
[听不清]
某些东西 对吧？
如果我们有一个
非常好的破坏效果
我们不希望它是动态的
我们希望确保它
每一次都准确地
在同一时间发生
我们是可以做到的
而且可以选择完美的一个
他也允许我们以出色的性能
做出大规模破坏效果

Japanese: 
これは最後のカットシーンで
街の区画全体が崩壊しています
この巨大なロボット…
名前はミルドレッドというらしいですが
それは私も初めて知りました
そのミルドレッドが立ち上がり
街の区画全体が崩壊しています
この場面のシミュレーションは
実際には事前に行われたものです
このシミュレーションも
Chaos で行われましたが
その後キャッシュにベイクして
実行時に再生しています
でも キャッシュを再生しているからといって
これが動的システムで
ないというわけではありません
この辺をもう少し理解していただくと
実際にシーンの下、シーンの裏で
Chaos が何をしているかについて
イメージがつかめるようになると思います
Chaos のシミュレーションは
必要に応じて事前キャッシュし
ベイクすることができます
これは 私たちにとっても皆さんにとっても
実際にとても役に立ちます
というのは
何かを [聞取不能] することができるからです
動的にしたくないような
毎回正確に同じタイミングで
起こるようにしたいような
とてもよくできた破壊がある場合には
実際にそのようにして
完全なものを選ぶことができます
また パフォーマンスを維持しながら
大量破壊を行うこともできます

English: 
because something like
that third sequence
where we are crumbling
an entire city block -
you could not do
that at current hardware.
Even though we are
caching this out,
everything that we are doing
in a pre-cache simulation
is still created
using exactly the same tools,
it is using the same data
type behind the scenes.
It is called
a GeometryCollection,
which has all of
this destruction in it.
What is really cool about Chaos
is that even though
something is pre-cache,
any part
of the pre-bake simulation
can still become active
at any time.
As we are replaying
these giant caches,
if you now want to make it
an interactive experience,
for example,
by giving a player
or any other interactor
a weapon,
the parts that you
start interacting
with can become active.
You might have
10,000 rigid bodies -
I am kind of making up
a number -
falling down,
and that is pre-cached
and it is playing back
perfectly at performance.
But then you shoot
at a small portion of it,
and 400 of those
actually become active.
They start interacting,
and they do exactly -

Chinese: 
因为像第三段序列这样的
让整个城市街区坍塌的效果
用目前的硬件是做不出来的
尽管我们是把它缓存下来的
但我们
在预缓存模拟中所做的一切
仍然是使用同一批工具创建的
这些场景背后
使用的是同样的数据类型
它叫做几何体集合
所有这些破坏效果都在它里面
Chaos特别棒的一点是
即使有些东西是预缓存的
预烘焙模拟的任何部分
仍然可以随时成为活动的
当我们回放这些巨大的缓存时
如果你们想让它成为交互式体验
比方说 给玩家
或者任何其他交互者一件武器
开始交互的部分
就可以成为活动的
也许场景中可以有10000个刚体
这数字是我随口说的
它们掉下来
这是预缓存的
以很高的性能完美播放
但是然后你射击其中的一小部分
其中的400个实际上
就会变成活动的
它们开始活动
它们的行为-

Japanese: 
というのも 3 番目の場面のように
街の区画全体を崩壊させるようなことは
現在のハードウェアではできませんから
キャッシュに出力しているとは言え
この事前キャッシュされた
シミュレーションでやっていることは
すべてまったく同じツールを
使って作成されており
シーンの裏で使っているデータ型も同じです
このデータ型は
GeometryCollection という名前で
その中にはこの破壊のすべてがあります
Chaos の非常に優れたところは
その一部が事前キャッシュされている場合でも
事前にベイクされた
シミュレーションの任意の部分を
いつでもアクティブにできるところです
このような巨大なキャッシュを
再生している途中で
たとえば プレイヤーや
他のインタラクタに武器を与えたりして
それをインタラクティブな体験にしたい場合
そのインタラクションを始めた部分を
アクティブにすることができます
これはたとえばの数字ですが
1 万個ぐらいの剛体を落下させて
事前キャッシュし
完全にパフォーマンスを維持したまま
再生しているとしましょう
でもその後 その一部に対して発砲し
そのうちの 400 個の剛体が
実際にアクティブになったとします
アクティブになった剛体は
互いに相互作用を開始し

Japanese: 
正確に 外部からのあらゆる刺激に
予想どおりに反応します
Chaos において
静的な破壊というものはありません
まったく同じものを同じように再生するだけ
というような静的なキャッシュは
存在しないのです
Chaos は実際には投入された
あらゆるものに反応できます
Chaos は動的なワールド ステートに
反応することができるので
それにより すばらしい見栄えで
驚くべきパフォーマンスで
なおかつ 実行時に必要な
あらゆるものに反応できるようなものを
作成できます
たとえば プレイヤーをこのビルの
一番下に配置したけど
そのプレイヤーが実際に
どこに移動するかはわかっておらず
またプレイヤーの上に
巨大な残がいの塊が落ちてくるので
それに対応させたい
プレイヤーに武器を与えて
実際にそれを撃てるようにしたい
そういうシーンを作りたいとしましょう
Chaos を使えばそれが可能です
もしこれが 外部のパッケージから持ってきた
完全に静的な事前に
ベイクされたシミュレーションで
Alembic か何かとして
再生しているだけだったら
そういうことはできません
でもこの場合 プレイヤーは
インタラクションをしたい
シミュレーションの特定の部分を
撃って粉々にし

Chinese: 
它们会按照你的预期
对每一个外部刺激作出反应
在Chaos中
破坏从来都不是静态的
这从来都不是只会按照相同方式
播放相同内容的静态缓存
它实际上可以对你朝它
投掷的任何东西作出反应
Chaos可以对动态的
世界场景状态做出反应
通过这种方法
你们可以创作一些效果惊人的内容
有着不可思议的高性能
但是仍然能够对
你在运行时
需要的所有东西作出反应
如果你要创建一个场景
例如将玩家
放在这座建筑的底部
但是你不知道玩家
究竟会站在什么地方
而且你有希望玩家作出反应
因为有一些巨大的砖石碎块
朝她落下来
你要给她一件武器
然后你希望玩家能够真正
把砖石开枪打碎
那么用Chaos就能做到
如果这是完全静态的预烘焙模拟
是由外部软件包提供的
你只是把它作为alembic
之类的东西播放
那么你就做不到
但是在这里
玩家可以射击
模拟的特定部分
她想要与之交互的部分

English: 
they react to every outside
stimulus that you would expect.
In Chaos, destruction
is never static.
This is never a static
cache that just plays back
exactly the same thing
the same way.
It can actually react to
anything that you throw at it.
Chaos can react to
the dynamic World State,
and by doing it, you create
something that looks amazing,
is incredibly performant,
but still can react
to everything
that you need to at runtime.
If you wanted to create a scene
where you put a player
at the bottom of this building,
for example,
but you do not know
where the player
is actually going to stand
and you want the player to react
because there are giant chunks
of debris
falling down on her
and you give her a weapon
and then you wanted to actually
be able to shoot that up,
you can do that with Chaos.
If this was a completely static
pre-baked simulation
which came out
of an outside package
and you just played that back
as an alembic
or something,
you could not do that.
But here, the player can shoot
at the specific parts
of the simulation
which she wants
to interact with,

Chinese: 
她可以把砖石打碎
在这个场景里活下来
这是真正颠覆业界的东西
因为我已经做了20年游戏
许多时候
遇到这类情况
只能把玩家放在一个罩子里
因为你需要知道
玩家究竟会站在什么地方
因为各种碎块像雨点一样落下来
无法和它进行任何形式的交互
这就是重大的区别
Chaos能够做到所有这一切
因为它是一个系统
它是虚幻引擎中的一等公民
它和所有其他系统
在一开始模拟运行时场景的系统
是并列的
Chaos可以被触发
可以被查询
它实际上还可以
向其他系统发送事件
可以与之交互
这就在所有系统之间
造就了不可思议的紧密集成
你们都知道
在虚幻中有那么多功能
都是因为所有游戏性系统
可以真正实现紧密集成
这对我们很重要
因为Chaos太酷了
因为它是个很复杂的系统

English: 
and she can crumble that
and survive that situation.
That is actually a game changer,
because I have been
making games for 20 years,
and a lot of times
in these kinds of situations,
you have to put the player
in a bubble.
Because you need to know
exactly where the player
is going to stand
because everything
that is raining down
will not be able to interact
with it in any shape or form.
That is the big difference here.
Chaos can do all of this
because it is a system.
It is a first-class citizen
in Unreal Engine,
and it lives alongside
all of the other systems
that simulate your runtime world
in the first place.
Chaos can be triggered,
it can be queried,
and it can actually send events
to the other systems as well
and can interact with that.
That creates some incredibly
tight integration
between all of the systems.
You know all of the things
which are going on in Unreal
because all of
the gameplay systems
can really tightly integrate.
This was important to us
because Chaos is so cool
because it is a messy system.

Japanese: 
その状況を切り抜けることができます
これはまさに革命的です
というのは
私は 20 年間ゲーム開発をしてきて
この種の状況に何度も遭遇しましたが
その場合にはプレイヤーをある
意味隔離するしかありませんでした
それは プレイヤーがどこに移動するかを
正確に知る必要があるからで そうしないと
プレイヤーと落ちてくる
あらゆるものとの相互作用が
いかなる形でも不可能になるからです
そこがこの場合の大きな違いです
Chaos ならこのようなこと全てに対応できます
というのは Chaos はシステムだからです
Chaos は Unreal Engine における
第一級のオブジェクトで
ランタイムの世界をシミュレートする
他のあらゆるシステムと
最初から共存しています
Chaos に対してトリガー呼び出しや
問い合わせをすることも
Chaos から他のシステムに
イベントを送信して
やりとりすることもできます
これにより あらゆるシステム間の
驚くほど密接な統合が生み出されます
ゲームプレイ システムはすべて
とても密接に統合されているので
Unreal 内で行われている
あらゆることを知ることができます
このように Chaos が
うまくできていることは大事なことです
というのは 破壊はとても
入り組んだシステムだからです

Chinese: 
你永远都不会确切地知道
下一个破坏效果
将会如何发生
这很酷
这是令人满意的体验的一部分
不过这也确实使它不可预测
因为任何东西
都不会按同一个样子播放
更何况玩家还会增加一些不确定性
作为设计师
你需要确保
如果你将这
作为交互式体验来创作
那么你必须有工具能真正处理它
Chaos允许你创建AI
之类的运行时系统
可以处理所有的混沌
因为它们可以在事后与破坏交互
我要给你们看一些例子
让你们知道这究竟是怎么发生的
当我们谈到
创作完全交互式的体验时
也许可以在以后进行连接
这个话题我们可以谈很长时间
不过我要举出一些
我们在演示中做的简单例子
来让你们知道怎样可以
和Chaos交互
一个特别简单的例子是销毁场
如果使用完全预烘焙的
静态顶点缓存
你们可能遇到的问题之一就是

Japanese: 
次の破壊がどのように起こるかは
決してわかりません
それはいいことであり
満足のいく体験の一部です
でも そのおかげで
破壊は予測不能になります
特にプレイヤーがそこに
不確実性を加えたりすると
まったく同じ結果になることは決してないので
デザイナがインタラクティブな
体験を生み出す際には
実際にこれに対応できるツールを
確保する必要があります
Chaos では 破壊された
後の結果とインタラクションできるので
破壊のすべてを操作できる
AI のようなランタイム システムを
作ることができます
これが実際にどのように行われるかを示す例を
いくつか紹介したいと思います
完全にインタラクティブな体験の
作成に関する話を聞きたい方は
後から声を掛けていただいた方が
よいかもしれません
この話題は少し時間がかかる
可能性があります
でも このデモの中で
Chaos とやりとりをする方法を示すために
作った例…とても簡単な例は
実は Kill フィールドでした
完全に事前ベイクされた
静的な頂点キャッシュについて
直面する可能性のある問題の 1 つは

English: 
You never quite know
how the next destruction
is going to happen.
That is cool.
That is part of
the satisfying experience.
But it does make it
unpredictable,
and because nothing
ever plays out the same,
especially if the player
adds some uncertainty into it,
you need to make sure
as a designer
if you are creating this
as an interactive experience
that you have tools
to actually deal with that.
Chaos lets you create
runtime system like AI,
et cetera, that can account
for all of that chaos
because they can interact with
the destruction after the fact.
I am going to give you
some examples
of how that actually can happen.
When we are really talking about
creating completely
interactive experiences,
maybe you can hook up
afterwards.
This is a topic
we could talk about for a while.
But some simple examples
of what we did in the demo
to kind of demonstrate how
you can interact with Chaos -
the super simple one
is actually a kill Field.
One of the issues
you might again
have with a completely pre-baked
static vertex cache is that once

English: 
you are bring that down
on part of the playing Field,
that part is off limits because
you have just blocked it off
and you cannot do anything
about it anymore.
AI couldn't navigate
through it anymore.
If you accidentally
block an exit,
the player will not
be able to exit anymore.
It is very feasible to just
create a simple kill Field,
rain down destruction on
that entire street right there,
but then create kill Fields
that only crumble
the specific parts of that area
that you need to crumble.
You can also create AI
that actually shoots that up.
You can pretty much sanitize
the part of the playing Field
that you are interested in
and make sure
that the action can continue
in a runtime environment.
Now we come back to Chaos
never being static.
The destruction is not static,
so it is never this all
or nothing proposition.
You either completely clutter
it up
and then it is off
limits or not.
Now of course,
as we are talking about systems,
AI is one of the big ones
that we immediately think about
because when we are creating
an interactive experience,
we have autonomous
agents, right?
We have AI like enemies that
actually want to interact with,

Chinese: 
一旦让游戏场的那一部分坍塌
那一部分就在范围外了
因为你把它堵死了
你再也不能对它做什么
AI再也无法找到穿过它的路线
如果你不小心堵住了一个出口
玩家就再也不能离开了
有一个可行的做法是
创建简单的销毁场
在整个街道上降下破坏效果
但是然后创建销毁场
使得那个区域中只有你需要坍塌的
特定部分坍塌
你还可以创建射击它的AI
你可以清理你感兴趣的
那一部分游戏场
确保
动作可以在运行时环境中继续
现在我们又要重申一下
Chaos从来都不是静态的
破坏不是静态的
所以绝不是这种要么全有
要么全无的选择
你要么彻底搞乱
然后让它变成范围外
要么不是这样
当然了
在我们谈到系统的时候
AI是我们立刻会想到的
大问题之一
因为在我们创作交互式体验时
会设置自主代理 对吧？
我们会有AI类的敌人
我们希望与之交互

Japanese: 
それがプレイ用のフィールドの一部に落ちると
その部分は閉鎖されて入れなくなり
以後その部分に関しては
何もできなくなってしまうということです
AI もそれ以上その中を
ナビゲートできなくなります
もし偶然出口が塞がってしまったら
プレイヤーはそこから出られなくなります
でも 破壊の破片が
街全体に降り注ぐようにしながら
その領域の中の壊す必要のある
特定の部分だけを壊すような
単純な Kill フィールドを作成することは
十分に可能です
さらに その破片を撃つような
AI を作ることもできます
そして プレイ用フィールドの
該当する部分を文字どおりきれいにして
実行時環境において
動作が続くことを保証することができます
ここでまた Chaos は
静的ではありえないという話になります
破壊は静的ではないので
これはオールオアナッシングの
命題ではありえないのです
破片を全面的にまき散らかしても
ナビゲートできなくなることも
そうでないこともあります
そしてもちろん システムの話題で
真っ先に思い付く大きなシステムの
1 つは AI です というのも
インタラクティブな体験を作成しているときには
必ず自律的なエージェントが存在するからです
わかりますよね

Japanese: 
実際にインタラクティブにプレイヤーと
やり合ってプレイヤーの標的となるような
AI 的な敵が存在し
そのような敵はこのような破片の中を
ナビゲートできる必要があります
私たちはいろいろな下地を作って
Chaos が AI システムを
サポートできることを保証しました
GeometryCollection では
NavMesh を全面的にサポートしており
この例でも この地面は
実際にはスタティックメッシュで
それが MavMesh を保持しており
さらにその上に
GeometryCollection があり
その上を AI がナビゲートすることができます
これにより AI に期待される
あらゆることが可能です
実際 残がいによって変更可能な
動的な NavMesh を作成することもできます
パフォーマンスには影響しますが
この橋を破壊して
大量の残がいで下の
NavMesh を無効にした後で
そこを AI にナビゲートさせるようなことを
したいと思えば まったく可能です
このデモでは 必要がなかったので
実際にはやっていませんが
私たちが実際に作ったのは
除雪器や排障器のようなものです
この名前はたぶん
主任技術者の Jeff がつけたものですが
AI が歩きながら残がいの一部を蹴っ飛ばして
残がいと衝突しないことを
保証することができます

English: 
that we want to interact with
and shoot at,
and they need to be able
to navigate all of that.
We have done a lot of heavy
plumbing already and made sure
there is support for Chaos
when it comes to AI systems.
NavMesh is fully supported
on GeometryCollections,
so in this example,
it is actually a Static Mesh
in here at the bottom,
and that has NavMesh,
and then we have
Geometry Collections on the top
and AI
can navigate on that
and they can do everything
that you expect
an AI to do.
You could actually
create dynamic NavMesh,
which could be
modified by debris.
You are going to have some
performance implications there,
but if you wanted to have
that bridge destroyed
and have piles of
debris invalidate
NavMesh down at the bottom
and then AI can navigate around
it, that is totally possible.
We did not actually
do this for our demo
because we did not need it.
We created something like
a Snow Plow or a Cow Catcher,
I think is what Jeff,
our lead engineer, called it,
where AI could walk
and kick away some of the debris
to make sure that they do
not collide with it correctly.

Chinese: 
我们希望与它们交互
朝它们射击
而它们必须能够自主寻路
我们已经做了许多连接工作
确保
AI系统支持Chaos
在几何体集合上完全支持
寻路网格体
所以在这个示例中
其实有一个静态网格体
在这底部
而且它有寻路网格体
然后我们在顶部
有几何体集合
AI可以在上面寻路
它们可以做你期望
AI做到的任何事情
你其实可以创建动态的
寻路网格体
而碎块可以修改它
这对性能会有一些影响
但是如果你想要摧毁那座桥
让成堆的碎块使
底部的寻路网格体失效
然后AI可以绕过它来寻路
这都是完全能实现的
我们在演示中没有这么做
因为我们不需要它
我们创建了“扫雪机”
或“排障器”之类的东西
我想这就是我们的首席工程师
Jeff对它的称呼
通过它AI可以走到某些碎块前面
把它踢开
正确地确保它们不会碰撞

English: 
But you can dream big
if you really want to think
about using this in the game
or something
that is truly interactive,
because the AI can query
all of this destruction,
so they might be able to use
a large chunk of debris
as dynamic cover,
for example,
and you can create
a really cool cover
shoot out of it,
something along those lines.
An AI of course needs to react
to the destruction as well.
This is really where these kinds
of systems come alive
when you have a robot
standing in the scene
and they are reacting
to all the destruction
that is happening around them.
Again, we put in this demo
to make sure that some of
this support is already there.
The first thing you are going to
think about of course is that
you want to use destruction
as a tool to kill people.
These are some early examples of
when we actually brought
this online.
Every Chaos destruction event
is going to give you information
about what the debris
actually is
and how much mass it has.
Then you can trigger
appropriate effects.
If it is big enough,
you are going to trigger death
right here.

Japanese: 
でも Chaos をゲームや
真にインタラクティブな何かに
使うことを真剣に考えれば
夢はさらに広がります
というのは AI はこのような
あらゆる破壊の状態を取得できるので
たとえば 大きな残がいの塊を
動的な遮蔽物として使えるかもしれないし
その線で行けば
そこからうまく宣伝用画像を
作成することも可能です
もちろん AI は破壊に対して
リアクションを行う必要もあります
シーンの中にロボットが立っていて
周囲で起きているあらゆる破壊に
反応しているような状況こそ
まさに この種のシステムが
真価を発揮するところです
このデモを作ったのは
そのようなサポートが実現されていることを
確認するためでもありました
皆さんが最初に考えるのはもちろん
破壊を人を殺すための道具として
使いたいということでしょう
これらは 実際にオンラインで
公開した初期の例から持ってきたものです
Chaos の破壊イベントはすべて
残がいが実際何でできていて
どの程度の質量があるのかという情報を
与えてくれます
そして それに応じて
適切なエフェクトを起動することができます
残がいが十分大きい場合には

Chinese: 
不过你们可以有更大的设想
如果你们真愿意考虑
在游戏中或者
真正有交互性的其他项目中
使用它的话
因为AI可以查询所有这些破坏
比方说它们可以利用一大块碎石
作为动态的掩体
你们可以利用它创作出非常酷的
掩体射击游戏
诸如此类
当然 AI还需要对破坏效果
作出反应
这就是这类系统发挥作用的地方
如果有一个机器人站在场景中
对周围发生的各种破坏
作出反应
我们在这个演示中放入它
是为了确保某些这类支持
已经存在
当然 你们首先会考虑的是
想利用破坏作为杀死敌人的手段
等我们真正让它上线的时候
你们会看到一些早期示例
每个Chaos破坏事件
都将为你提供信息
让你知道碎块实际是什么
它有多大质量
然后你就可以触发相应的效果
如果它足够大
你就可以在这里触发死亡

English: 
If it is small enough, you might
just play a flinch or hit react
where the AI reacts to stuff
hitting it but does not die.
You can of course take this
a little bit further
because you also
get a location
where these hit events
actually happen.
You are going to hear
a little bit later
of how you can actually filter
and make sure you are not
getting information overload
from all the destruction
happening around you.
In this case,
we can play a flinch event
and jump to the side
because of where the destruction
actually happens.
Of course,
if something happens above,
we can play the appropriate
reaction as well.
If you are thinking
about using this
in an interactive experience
or even making
a game around this,
this is how AI can start
really integrating with Chaos
in the first place.
These are autonomous AI agents.
As a designer, I want to be able
to work with Chaos as well
and have some tools
so I can actually get events
and act on those as well.
I want to give you
some examples here.
One of them is just,
how do I detect damage
and how do I react to a pillar,
for example, getting shot up?

Japanese: 
その場で「デス」を起動することになります
残がいが十分小さい場合には
自分に何かが当たったけれど
死ななかったときの AI の反応である
狼狽や衝突のリアクションを
再生するだけかもしれません
もちろん このような衝突イベントが
実際に起こった
場所も取得できるので
少し離れた場所に
落ちた残がいにも反応できます
周囲で起きたあらゆる破壊からの情報で
情報過多にならないように
フィルタリングを行う方法については
少し後でお話しします
この場合には
狼狽イベントを再生して
破壊が実際に起こった場所に応じて
脇に跳んでよけることができます
もちろん 上で何かが起きた場合にも
適切なリアクションを再生することができます
これをインタラクティブな体験に利用したり
これを元にゲームを
作ったりすることを考えたことが
そもそも実際に AI と
Chaos の統合が始まった
きっかけです
これが自律的な AI エージェントです
私がデザイナとして思ったのは Chaos を
操作できるようになりたいというだけではなく
実際にイベントを取得して
それに応じて処理を行うための
ツールが欲しいということです
ここでいくつか例を紹介したいと思います
その 1 つは ダメージを検出する方法
そしてたとえば 砲撃された柱に対して
リアクションをする方法です

Chinese: 
如果它足够小
你也许可以播放躲避或击中反应
使AI对击中它但没有让它死掉的
东西作出反应
当然 你们还可以更进一步
因为你们还会了解到
这些命中事件实际发生的位置
稍后会有人给你们讲解一下
怎样对信息进行过滤
确保当周围发生各种破坏时
你们不会遇到信息过载
在这个例子中
我们可以播放躲避事件
跳到一边去
因为我们知道了
破坏实际发生的位置
当然
如果上方发生某些事
我们也可以播放相应的反应
如果你考虑将这个
用在交互式体验中
甚至围绕它做一个游戏
那么这就是一开始
AI可以和Chaos
真正集成的方式
这些是自主AI代理
作为设计师
我还希望能使用Chaos
并且有一些工具
这样我就能得到事件
并且对这些事件进行操作
我在这里要给你们看一些例子
其中一个就是
我要怎样探测到破坏
比方说 一根柱子被打烂
我要怎样作出反应？

English: 
Which is what happens a lot
in these kinds of demos,
in this demo specifically.
We created a little Blueprint
which we call
the Destruction Detector,
and it was listening to
how much damage has been dealt
to a specific
GeometryCollection
that we put inside that volume.
We could have listened
to everything everywhere,
but I am very
specifically interested
in what is happening
to this pillar.
Then I can subscribe to that
and I can create an event
and I can say for example,
if this specific pillar
is getting destroyed,
trigger an event and move on.
All of the demo progression that
you see in our playable demo
is gated that way.
You actually see that happening.
I am shooting a specific pillar
and enough damage has been dealt
and then we are moving on.
Instead of just listening
to damage dealt
to a Geometry Collection,
I could also look at the mass
and I could detect
how much debris has fallen
and how much a pillar has been
destroyed along those lines.
This is the Blueprint
that we are actually using here.
You can see we are getting
a ChaosBreakEvent

Chinese: 
在这类演示中发生了许多
这样的事件
特别是这个演示中
我们创建了一个小蓝图
我们称它为
Destruction Detector
它会侦听我们放在该体积中的
特定的几何体集合
受到了多少伤害
我们可以在所有地方
侦听所有信息
不过我特别关心的是
这根柱子发生了什么
然后我就可以订阅它
我可以创建一个事件
比如 我可以说
如果这根特定的柱子被摧毁
就触发一个事件并继续
在我们这个可试玩演示中
你们看到的所有演示变化
都是按这种方式配置的
你们可以看到它发生
我射击一根特定的柱子
给了它足够的伤害
然后我们继续
我不光是侦听对
几何体集合造成的伤害
我还可以观察质量
我可以探测有多少碎块落下来
柱子被打坏了多少
根据这些连线就可知道
这就是我们在这里使用的蓝图
你们可以看到
我们获取了一个ChaosBreakEvent

Japanese: 
これは この種のデモでよく発生することで
実際にこのデモでも発生しています
私たちは Destruction Detector という
ささやかなブループリントを作りました
このブループリントは
このボリュームの中に配置された
特定の GeometryCollection に
どの程度のダメージが
加わったかをリッスンします
リッスンの対象はどこの何でも可能ですが
私が特に知りたいのは
この特定の柱に何が起こっているかです
そうすれば この柱の状態を監視して
イベントを作成し
たとえば この特定の柱が破壊されたら
イベントをトリガーして
先に進めと指示することができます
先ほどのプレイ可能デモで
お見せした進行のすべては
そのようにして制御されています その現場は
皆さんも実際にご覧になったはずです
特定の柱を撃って
そこに十分なダメージが加わると
先に進むようになっています
単に GeometryCollection に
加えられたダメージを
リッスンする代わりに 質量を監視して
崩れ落ちた残がいの量から
その時点で柱がどの程度破壊されているかを
検出することもできます
これは ここで
実際に使われているブループリントです
このブループリントは
ChaosBreakEvent を取得して

English: 
and I can act on that.
I get information
like the location,
but I can also get mass.
If I wanted to create
something like, fill a container
with enough debris and there is
a scale or something like that,
and then I want to act
when that entire container
has been filled,
this is how I could do it.
I can also integrate that back
with what the AI is doing.
What I want to do
in these kinds of games
or interactive experiences
in the first place
is have AI react to it.
If I want to invalidate cover,
I can tie those together
and say, you know what,
this is valid cover
until it has been destroyed
to a certain degree,
and after that, move on.
You actually see K-OS
do that a lot.
Whenever she is zooming around
in the first section,
it usually happens because I
smashed up one of those pillars
and I invalidate cover that way.
This hopefully,
especially if you are a gameplay
programmer, you have done this.
It gives you a good idea of the
heavy plumbing is there.
Chaos as a system
can fully communicate
with the gameplay systems
and it can go both ways

Japanese: 
それに応じて動作していることがわかります
このイベントからは
位置のような情報も取得していますが
質量を取得することもできます
入れ物に十分な残がいを溜めていって
そこに秤のようなものがあって
入れ物全体が一杯になったら
何かを実行したいというような場合には
こうすればそれができます
また これを逆に AI が
やっている処理に取り入れることもできます
そもそも この種のゲームや
インタラクティブな体験でやりたいのは
AI にリアクションをさせることです
弾除けの遮蔽物を無効化したいなら
これらを組み合わせて
この弾除けはある程度破壊されるまでは
有効だが 破壊されたら先に
逃げるように指示することができます
これは実際に K-OS が何回も
やっているところをお見せしました
最初の場面で
K-OS が動き回っているときには
プレイヤーがこのような柱を破壊して
弾除けを無効化しているので
だいたいこれが起きています
こういう処理はたぶん
特にゲームプレイのプログラマなら
一度は作った経験があるはずです
そういう方なら 仕組みについての
イメージはつかみやすいでしょう
Chaos はシステムとして
ゲームプレイのシステムと
全面的にやりとりすることができ
そのやりとりは双方向にできるので

Chinese: 
我可以对它进行操作
我获得位置之类的信息
我也可以获取质量
如果我要创建
比方说 在容器中填充
足够的碎块
而且有一个标尺之类的东西
然后我要在整个容器被填满的时候
进行操作
那么我就可以用这样的办法
我还可以把它和AI做的事
集成起来
我在这些类型的游戏
或者交互式体验中
一开始想做的
就是让AI作出反应
如果我要使掩体失效
可以把这些关联起来
然后说 知道吗
这是有效的掩体
当它被破坏到一定程度就无效了
然后继续
你们已经看到K-OS
有很多这样的行动
每当她在第一段场景中
绕来绕去的时候
通常她这样跑是因为
我打坏了其中一根柱子
我就这样使掩体失效了
我希望
尤其如果你是游戏性程序员的话
你已经这么做过
这样你就能很好理解
这里面的大量连接工作
Chaos作为一个系统可以和
游戏性系统进行全面通信
而且可以是双向通信

English: 
and you can start
building things around that.
One final piece of information
before I hand it off,
because this is a question
that everybody is going to have
and we probably get asked,
and that is networking.
This is a big topic
and there are more qualified
people to talk about it.
What I will tell you
as a designer looking forward
is that Chaos is built
with networking in mind
because it is going to be
our primary physics
system of the future.
What I like about Epic is that
we are a production company.
We make these tools
to make our own games,
and you know what kinds
of games we make.
Then we also hand them
off to you.
If you look at the kinds
of games that we are making,
we are certainly thinking
about networking
and we are going to make sure
that Chaos is supported
in the kind of experience
that we create
and I think also
the kind of experience
that you are creating.
With that, I am going
to hand it off,
because I think we should hear
a little bit more about
how you actually
make stuff look good
and what is happening
under the hood.
I am going to give it
to Jim VanAllen.
[APPLAUSE]

Japanese: 
それを中心にしてゲームの
開発にとりかかることができます
最後に これは誰もが抱く疑問であり
たぶん聞かれることだと思うので
次の人に交代する前に
ネットワーキングについてお話しします
ネットワーキングは大きなテーマで
この話をするには
もっと適任の人がたくさんいます
私がデザイナとして言っておきたいのは
Chaos は弊社の将来の
主力の物理システムになる予定なので
ネットワーキングを念頭において
作られているということです
私が Epic を好きなところは
Epic は製作会社だということです
このようなツールは
弊社自身のゲーム製作のために作られたもので
弊社がどのようなゲームを作っているかは
皆さんご存じでしょう
そしてそのツールを皆さんに
提供しているのです
弊社が作っているゲームの種類を見れば
弊社は確実にネットワーキングを想定していて
弊社で作っている種類の体験においても
皆さんが作っている種類の体験においても
Chaos がサポートされていることを
保証しようとしています
では ここらで
もっと見栄えの良いものを作る方法や
内部で何が起こっているかについての話を
少し聞いた方がいいと思うので
次の人に代わりたいと思います
Jim Van Allen に代わってもらいます
[拍手]

Chinese: 
而你可以围绕这个进行构建
在我离开讲台前
还要最后说一条信息
因为这个问题可能每个人都会问
我们很可能会被问到
那就是联网问题
这是个很大的话题
有些人比我更有资格谈它
我作为一个设计师
只想告诉你们
Chaos在构建时就考虑了联网
因为它将成为
未来我们的主要物理系统
Epic有一点我很喜欢：
我们是生产公司
我们制作这些工具是
为了做我们自己的游戏
你们也知道
我们做的是哪些类型的游戏
然后我们也把这些工具交给你们
你们只要看一下我们做的游戏类型
就知道我们肯定会考虑联网
我们会确保Chaos
在我们制作的
体验类型中受到支持
我认为
也会在你们创作的体验类型中
受到支持
说到这里
我要把讲台交给下一个人
因为我认为我们应该多听一听
怎样使画面变得好看
而在后台又发生了什么
我要把讲台交给Jim VanAllen
[掌声]

English: 
>>Jim: Thanks, Matt. Thanks for
coming out today, guys.
I am excited
to talk to you today
about the art side
of the Chaos demo.
We had a really talented team
on this project,
and I can tell you
it has been a lot of fun
playing with this system
over the past few months.
I was putting this
presentation together -
sorry,
I have to adjust the thing here.
I started to ask myself,
as an artist,
what do I really want
from a destruction system?
Here is what I want.
I want to take random geometry,
fracture it into
a random pattern,
allow a random user to hit it
with random forces
in random locations,
and control exactly
how it looks.
To boil it all down,
it all revolves around
one key word, control.
This is what I really want.
I want something that looks like
total chaos to you,
but behaves exactly like
I want it to, runs in real-time,
and maybe meets the needs
of our design environment art

Japanese: 
>>Jim： ありがとう Matt
皆さん 今日はようこそいらっしゃいました
今日は皆さんに
Chaos デモのアート面について
お話しできるということで興奮しています
このプロジェクトのチームは
とても才能のある人ばかりで
ここ数カ月このシステムに関わってきたのは
とても楽しかったと言ってよいでしょう
私はこのプレゼンをまとめながら…
ごめんなさい ちょっと調整します
アーティストとして
自分は破壊システムに本当は
何を求めていたのだろう と自問し始めました
これが私の求めていたものです
私は ランダムなジオメトリを取り込んで
それをランダムなパターンで破砕し
ランダムなユーザーがそれをランダムな場所で
ランダムな力で撃てるようにし
その見た目を正確に制御したかったのです
突き詰めると
これらはすべて 1 つのキーワードに
集約されます それは「コントロール」です
これこそ私が真に求めていたものです
完全な無秩序のように見えるけれど
正確に望みどおり振る舞い
リアルタイムで動作し
あわよくばデザイン背景アートおよび
エンジニアリング チームの

Chinese: 
>>Jim：谢谢 Matt
感谢大家今天来听讲
今天我很高兴能给你们讲讲
Chaos演示的美术方面
我们有一个
很有才华的团队做这个项目
我可以告诉你们
在过去的几个月里
我们摆弄这套系统时
享受了许多乐趣
我要把这个演示放起来-
不好意思
我得调整一些东西
作为美术师
我首先问自己
我对于破坏系统
究竟有什么要求？
这就是我想要的
我想要得到随机的几何体
让它按随机的模式破裂
允许随机的用户用随机的力
击打它的随机位置
并且精确控制画面效果
归根结底
核心就是一个关键词
控制
这就是我真正想要的
我想要在你们看来是完全混沌
但却严格按照我想要的方式表现
实时运行的东西
可能还要满足
我们的设计环境美术

English: 
and engineering teams.
For me, everything
in this system
revolves around
this one concept.
All that starts here
with a new type of Asset
that we are calling
Geometry Collections.
Geometry Collections
are built specifically
for destruction in Unreal.
Mike is going to give you
more detail in a few minutes,
but here are some key points
if you are an artist.
Geometry Collections
can be built from one
or more Static Meshes,
including those gathered
together in Blueprints
or even nested Blueprints.
Geometry Collections let you
choose what to simulate,
and they offer
incredible flexibility
in terms of how you organize
and author your destruction.
Once we have
our Geometry Collection,
we need to break it into pieces.
Aside from a few items that were
hand modeled into large chunks,
every piece of geometry
in the Chaos demo
was fractured in Unreal.
Just as an aside there, we were
allowed to use anything we want.
We could have used
offline tools or whatever.

Chinese: 
和工程团队的需求
对我来说
这个系统中的一切
都要以这一个概念为核心
这一切的起点就是
一种新的资源类型
我们称它为几何体集合
几何体集合就是专门为了
虚幻中的破坏效果而构建的
稍后Mike会给你们提供更多细节
但如果你是美术师
这里有几个要点应该了解
几何体集合可以从一个
或多个静态网格体构建
包括在蓝图中
乃至嵌套蓝图中
聚集起来的静态网格体
几何体集合允许你
选择要模拟的对象
它们为你
如何组织和编写破坏效果
提供了惊人的灵活性
有了几何体集合之后
我们需要把它分解
除了手工制作模型的大块之外
Chaos颜色中的每一个几何体
都是在虚幻引擎中破裂的
在这里偷偷和你们说一下
我们可以使用想要的任何工具
我们可以使用离线工具
什么都行

Japanese: 
ニーズをも満たすような何かを
私は求めていたのです
私にとっては このシステムのすべては
この「コントロール」というコンセプトに
集約されます
そのすべては ジオメトリ コレクションと呼ばれる
新しい種類のアセットから始まります
ジオメトリ コレクションは
Unreal 内の破壊専用に作られています
数分後に Michael が
もっと詳しく説明してくれると思いますが
アーティストの皆さんにとって
重要なポイントをご説明しましょう
ジオメトリ コレクションは
1 つ以上のスタティックメッシュから
作ることができます
その中には ブループリントや
ネスティングされたブループリントの中に
集められたスタティックメッシュも含まれます
ジオメトリ コレクションを使うと
シミュレートすべき対象を選択することができます
そして 破壊を構成したり
オーサリングしたりする上で
驚くべき柔軟性を発揮します
ジオメトリ コレクションを用意したら
それを破片に分解する必要があります
Chaos デモ内のジオメトリの破片は
手作業で大きなチャンクとして
モデリングされた多少の破片を除けば
すべて Unreal の中で破砕されています
話は逸れますが 私たちは 使いたいものは
何でも使うことを認められていました
それこそ オフライン ツールでも何でもです

English: 
But it just - being able
to fracture in-Editor
made the whole process so
much easier and it is awesome.
We can fracture
each part individually
and we can apply one pattern
across multiple pieces.
We have standard
Voronoi fracture,
but we also have
a suite of options
that let you dial
in a specific look.
You can do radial fractures,
clustered Voronoi,
planar cutting with noise,
whatever you need to get
the most natural results.
In a budget conscious
environment,
we do sub-fracturing,
which lets an artist control
where to add complexity.
Each time you sub-fracture,
an extra Level is added
to the Geometry Collection.
The Chaos system keeps
track of each sequent Level
and stores that information
into something
that an artist can control,
which we call a cluster.
Now, here is an example
of a mesh where each fracture

Chinese: 
但是我们在编辑器中
就能做出破裂效果
这大大降低了整个流程的难度
真是太棒了
我们可以分别让每一部分破裂
我们可以将一种模式
应用到多个碎块上
我们有标准的Voronoi破裂
但是我们也有一整套选项
让你能得到特定的外观
可以采用径向破裂
集束Voronoi
带噪点的平面切割
为了得到最自然的结果
你需要的一切选项都有
在对预算很敏感的环境中
我们执行次级破裂
这让美术师能够控制
在哪些地方添加复杂度
每次执行次级破裂
系统就会给几何体集合
增加一个级别
Chaos系统会持续跟踪
每个后续级别
把这些信息存储到
美术师能够控制的对象中
我们称之为集群
这里就有一个网格体的示例
其中每个破裂级别

Japanese: 
でも 破砕をエディタ内で行えることが
プロセス全体をはるかに容易にしました
それはすごいことです
各部分を別々に破砕することも
特定のパターンを複数の
破片に適用することもできます
標準的なボロノイ破砕もありますが
特定の見た目にするための
一連のオプションもあります
放射状破砕 クラスタ化したボロノイ
ノイズ付きの平面カットなど
最も自然な結果を得るために
必要なことは何でもできます
計算コストが気になる環境では
複雑性を加える場所をアーティストが
制御できるようするため
二次破砕を行います
二次破砕を行うたびに
ジオメトリ コレクションにレベルが
一段階追加されます
Chaos システムは
各下位レベルを追跡して
その情報をアーティストが制御できる
クラスタと呼ばれるものに保存します
これは 各破砕レベルが
固有のクラスタのセットに

Japanese: 
まとめられたメッシュの例です
Chaos ソルバーが他の
システムと少し違うのは
破壊が生じるのに十分な
ひずみが加わるまでは
各ノードを単一の
オブジェクトのように扱うという点です
この Level 1 のシミュレーションでは
システムはこのような
ノードしか計算していません
逆に クラスタリングを無効にすると
リーフノードのすべてが崩壊します
別に効率的でもなければ
見た目も良くありません
つまり クラスタの強度値を調整することにより
見た目が良く なおかつ
できる限り最適なパフォーマンスの
結果を得ることができます
私と同じくアバウトで…
自分では「芸術的」と呼んでいますが…
破砕やそのクラスタ レベルをいちいち細かく
追いかけることができない皆さんのために
階層をフラット化してプロシージャルに
クラスタを設定してくれる
すばらしいツールを用意してあります
このツールを使うと
破砕を実質的に建物全体に広げてから
後から破片を選別することができます
必要とあらば 相当複雑な破砕でも

Chinese: 
都合并到它自己的集群组中
这和其他系统有点不同
Chaos解算器把每个节点
都看作一个对象
直到施加了足够的应力
导致断裂为止
当我们模拟这里的第1级时
系统只计算这些碎片
相反
如果我们关闭集群功能
每个叶节点都会落下来
这样效率不高
而且看起来效果也不好
通过调整集群的强度值
我们可以得到既有好的外观效果
又有尽可能优化的性能的结果
如果你们和我一样
太没有条理
或者用我的说法
太有艺术家气质
做不到细致地跟踪每个破裂
及其集群级别
那么我们有很棒的工具
能让你把层级扁平化
程序性地为你设置集群
这样你就能有效地
把破裂分布到整个楼房
并且事后再整理
如果你需要
可以把非常复杂的破裂
减少到5到10个对象

English: 
Level is combined
into its own set of clusters.
These are a bit different
from other systems
in that the Chaos solver treats
each node like a single object
until enough strain is applied
to cause a break.
When we are simulating
Level 1 here,
the system is only calculating
those pieces.
Conversely,
if we turn of clustering,
every single leaf node falls.
Not super efficient,
but it also does not look great.
By tweaking our cluster’s
strength values,
we can therefore get a result
that looks good and performs
as optimally as possible.
If you are like me
and you are too disorganized
or I call it artistic
to meticulously keep track
of each fracture
and its cluster level,
we have an awesome tool
that lets you flatten
the hierarchy
and procedurally set up
your clusters for you.
This allows you to effectively
span fracture an entire building
and sort it out
after the fact.
You can reduce a really
complex fracture to 5
or 10 objects
if you need to.

Japanese: 
5〜10 個ぐらいのオブジェクトに
減らすことができます
レベルは必要な数だけ作れるので
各レベルの密度は明示的に制御できます
これにより 程度を制御…
ごめんなさい
間違えました
各レベルの破壊しにくさを制御するということは
パフォーマンス的な要求と
アート的な要求を両立させて
すばらしい作品を作るという
至福の経験の 1 つです
次にお話ししなくてはならないコンセプトは
接続グラフです
これは ライトウェイトな接続マップで
破壊とは少し違うパラダイムです
このシーンには アンカー付きの
静的な構成要素も多少ありますが
それ以外の構成要素は
すべて動的になる可能性があります
他のいろいろなシステムのように キネマティックな
要素をダイナミックな要素に変換する代わりに
このシステムでは ひずみを適用し
そのひずみが接続を破壊することにより
カオスが生じます
これが アクティブな剛体の量に対する
コントロールを維持しながら
インタラクティビティを最大化する
すばらしい方法であることを

Chinese: 
因为你可以设置任意数量的级别
可以显式控制每个级别的密度
这样你就能控制-
不好意思 跑题了
控制使每个级别断裂的难度
是很美妙的事情之一
因为这使性能和美术的要求一致
而且做出了漂亮的效果
我们需要讨论的下一个概念
是连接图表
这是一种轻量级的连接图
是一种稍有不同的破坏范式
在这里
我们有几个静态固定的碎块
但是场景中其他的一切
都有可能成为动态的
和从动力学切换到动态的
其他许多系统不同
我们的系统会施加应力
由应力断开连接
制造混沌效果
我们发现这是一个好方法
既能最大限度提高互动性
又能保持对
活动刚体数量的控制

English: 
Because you can have
as many Levels as you need,
you can explicitly control
the density of each Level,
which lets you control how -
sorry, lost my track there.
Controlling how difficult it is
to break each Level
is one of those wonderful times
when performance
and art requirements align
and make something awesome.
The next concept we need to
discuss is the Connection Graph.
This is a lightweight
connectivity map
that is a bit of a different
paradigm for destruction.
Here we have a few
statically anchored pieces,
but everything else in the scene
has the potential to be dynamic.
Rather than swapping
from kinematic to dynamic
like many other systems,
our system applies strain,
which in turns breaks the
connections and chaos ensues.
We have found this to be a great
way to maximize interactivity
while still retaining control
over the amount
of active rigid bodies.

Japanese: 
私たちは発見しました
さて 破壊の材料はすべて揃いました
破壊の仕組みも理解しました
では その破壊とどのようにしてやりとりすれば
よいのでしょうか？それにはフィールドを使います
フィールドは アーティストが
シミュレーションと直接
やりとりして制御できる手段です
フィールドを使うと ジオメトリ コレクションの
任意の部分の任意の属性を制御できます
質量を変化させたり 何かを静的にしたり
真ん中より角の方をより壊れやすくしたり
力を適用したり…
このようなことすべてが
フィールドによって制御できます
フィールドの作成や制御は
ブループリントによって行われます
この例では 一定のひずみを適用してから
多少の線形力を適用しています
そのひずみや力を適用する場所は
放射状フォールオフのボリュームで制御します
これはモジュール化されたシステムなので
フィールドを積み重ねたり
ノイズ乗算処理を使ったりなど
思い付くようなことは何でもできます
この例は 衝突時に実行される
兵器フィールドのベースですが
これを拡張すると 粘着爆弾、大口径兵器、
ロケットなども実現できます

Chinese: 
我们已经设置好一切
我们知道了它会如何运作
怎样和它交互呢？
我们要使用场
美术师通过场可以直接
与模拟交互并进行控制
场可以用来控制几何体集合的
任何部分的任何属性
如果你想要改变质量
把某些东西设置成静态的
使角落部分
比中间部分更容易断裂
施加一些力-
这一切都是通过场来控制的
场是通过蓝图创建和控制的
在这个示例中
我们施加了一些应力
然后是一点线性力
倾向下坠体积控制
施加应力和力的位置
因为这是个模块化系统
你可以把很多场堆叠在一起
使用噪点乘数
做你能想象到的任何事情
这个示例是
有冲击波的武器场的基础
通过扩展它就可以表现粘性炸弹
大口径武器和火箭

English: 
We have everything set up.
We see how it works.
How do we interact with it?
We do that with Fields.
Fields are the way that artists
can directly interact
with and control simulations.
Fields can be used to control
any attribute
on any part
of your Geometry Collection.
You want to vary your mass,
make something static,
make the corner more breakable
than the middle,
apply some force -
all this is controlled
with Fields.
Fields are created and
controlled through Blueprints,
and in this example,
we are applying some strain
followed by
a bit of linear force.
Radial falloff volumes control
where the strain
and the force is applied.
Because this is
a modular system,
you can stack Fields together,
use noise multipliers,
and do just about anything
you can imagine.
This example is the basis for a
Weapon Field that runs on impact
and can be expanded
to do sticky bombs,
high-caliber weapons,
and rockets.

English: 
Next, I will show you
three specific Field types
that we used.
Anchor Fields,
they anchor things.
They do exactly what you think.
They lock the nodes in place.
In this Level,
we used Anchor Fields
to lock the top and bottom
of the pillars and walls
just to control
how much things collapse.
These Fields are often the base
upon which
everything else is built.
This is a fun one.
It is a Strain Decay Field.
This applies strain
to the Geometry Collection.
With enough strain, you break
connections and the pieces fall.
One of the really cool features
of this system
is that the strain required
to break each cluster
can be tuned by the artist.
This allows you to specifically
tune your simulation
for aesthetic quality,
gameplay interactivity,
or performance as needed.
In this example, the Strain
Field is being animated upwards
and applying some force.
The box underneath
is a Culling Field
that keeps it from getting crazy
and reapplying the strain
over and over again.

Japanese: 
次に 私たちが使った具体的なフィールドを
3 種類ご紹介しましょう
アンカー フィールドは 物を固定します
その機能は 皆さんのご想像のとおりです
アンカー フィールドは ノードを
その場所でロックします
このレベルでは アンカー フィールドを使って
柱や壁の上下端を固定し
建物が崩壊する程度をコントロールしています
アンカー フィールドは
建物の他の部分の
基礎になっていることが多いです
これはおもしろいフィールドです
これはひずみ減衰フィールドと言います
このフィールドは ジオメトリ コレクションに
ひずみを適用します
十分なひずみが加わると
連結が破壊され破片となって崩壊します
このシステムのとてもすばらしい特徴の 1 つは
各クラスタを破壊するために必要なひずみを
アーティストが調整できることです
これにより 具体的に必要な美観や
ゲームプレイのインタラクティビティや
パフォーマンスに合わせて
シミュレーションを調整することが可能になります
この例では ひずみフィールドは
アニメーションで上の方に移動しながら
一定の力を適用しています
下のボックスはカリング フィールドで
おかしな破壊を防ぎながら
ひずみを繰り返し再適用します

Chinese: 
接下来 我让你们看看
我们使用的
三种特定场类型
锚定场
它们锚定各种东西
它们的功能和你们想的一样
他们会把节点锁定在原位
在这个关卡中
我们使用锚定场
锁定了柱子与墙壁的顶部和底部
这是为了控制倒塌的东西的数量
这些场经常作为
构建其他所有东西的基础
这个场很有趣
这是一个应力衰减场
它将应力施加到几何体集合
如果应力足够 连接就会断开
碎块就会掉落
这个系统特别棒的一个功能是
使每个集群断裂所需要的引力
可以由美术师来调整
这样你就可以明确调整模拟
来根据需要实现美学品质
游戏性交互或性能
在这个示例中
应力场向上移动
并施加了一些力
下面的方框是剔除场
作用是防止它发狂
一遍又一遍地反复施加应力

Chinese: 
摆弄它们是很有趣的
最后 这是一个休眠场
它的作用很直接
就是使各种东西休眠
不过这是一种非常强大的工具
这里有一个视频来演示
不对？
哦 对的 对的 就是它 很好
我前面不知道这功能是不是开了
不好意思
任何移动速度低于
预先设定速度的物体
都会进入休眠状态
如果休眠物体被武器击中
就会被唤醒
重新开始模拟
从美观角度讲
这可以防止碎片疯狂地到处滚动
让人分心
最后 它还让你能够直接控制
一大片区域的性能
你们在这里可以看到
我可以彻底摧毁这片游戏区域
而性能不会有明显下降
最后 我们要谈谈缓存
有了缓存功能 就可以把
高保真度的模拟预先缓存下来
然后实时播放

English: 
It is a lot of fun to play with.
Finally, this is a Sleep Field.
It is pretty straightforward.
They put things to sleep. But
it is a really powerful tool.
Here is a video to illustrate
what is going on.
No?
Oh, yes. Yes, it is. Good.
Did not know if that
was going to work. Sorry.
Any object that moves
below predetermined velocity
is put to sleep.
Sleeping objects can wake up
and start simulating again
if they are hit by a weapon.
Aesthetically, this keeps pieces
from rolling around like crazy
and being distracting.
Finally, it gives you
direct performance
throttle over a large area.
As you can see here,
I can completely
destroy this gameplay area
without any noticeable
drop in performance.
Finally, we are going
to talk about caching.
With caching, high-fidelity
simulations can be pre-cached
and played back in real-time

Japanese: 
このフィールドをいじると楽しいですよ
最後のこれは スリープ フィールドです
これは別に何のひねりもなくて
対象をスリープ状態に移行します
でも これはとても強力なツールです
これはその機能を示す動画です
あれ？いや いいですね
これです いいですね
これがうまくいくか
どうかわからなかったものですから ごめんなさい
あらかじめ決められた速度未満で
運動するオブジェクトは
すべてスリープ状態に移行します
スリープ状態のオブジェクトは
武器で砲撃されるとアクティブになって
シミュレーションを再開します
これは 見た目に関しては
破片が必要以上に転げ回って
気が散ることを防ぎます
そして最終的には 広い範囲にわたって
パフォーマンスを直接スロットリングします
ご覧のように
パフォーマンスの目立った低下もなく
このゲームプレイ領域を
完全に破壊することができます
最後に キャッシングについてお話ししましょう
キャッシングを利用すると 忠実度の
高いシミュレーションを事前にキャッシュして
リアルタイムで再生し

English: 
resulting in a kinematic
Geometry Collection.
This means that you will be able
to author large-scale
destruction events
and still allow interactivity
with the player
and the environment.
That is my overview.
I hope it gives you an idea
of how artists can control
just about every aspect
of the Chaos system.
I cannot wait to see
what kind of crazy destruction
you guys create with this.
Now, here is Mike Lentine,
our Lead Physics Programmer,
to talk about
the technical side.
[APPLAUSE]
>>Michael: Hello, thanks, Jim.
I am Michael and I
run our Physics Team at Epic.
When we set out to create a new
physics and destruction system,
we first wanted to figure out
why we were doing this.
We had two primary goals.
The first was to give the power
to our content creators
like Jim and Matthias
to generate the results
that you have been seeing
throughout the course
of this talk and in our demo.
The other is we wanted
our system to be scalable.

Japanese: 
キネマティックなジオメトリ コレクションを
出力することができます
つまり 大規模な破壊イベントを
オーサリングしながら
プレイヤーや環境との
インタラクティビティを
可能にできるということです
私のまとめは以上です
どのようにしたら
Chaos システムのあらゆる側面を
アーティストが制御できるかについて
皆さんのご参考になれば幸いです
これを利用して 皆さんが
どんなすごい破壊を作ってくれるか
拝見できる日が楽しみです
そして今度は 弊社の主任物理プログラマで
ある Michael Lentine さんが
技術面についてお話します
[拍手]
>>Michael: ありがとう Jim
こんにちは
私は Michael と申します
Epic の物理チームを担当しています
私たちは 新しい物理および
破壊システムの作成に乗り出したとき
まず それを作る理由を
はっきりさせたいと思いました
主な目標は 2 つありました
1 つは Jim や Matthias のような
コンテンツ クリエイターたちに
このトークや弊社のデモを通じて
お見せしたような
結果を生み出す力を与えること
もう 1 つは システムを
スケーラブルにしたいということでした

Chinese: 
这就会产生动态的几何体集合
也就是说 你们将能够
编写大规模的破坏事件
同时仍然允许玩家
与环境交互
这就是我的概要介绍
我希望这能让你们了解
美术师可以如何控制
Chaos系统的每个方面
我迫不及待地想看到你们
用这个系统
做出怎样精彩的破坏效果
现在有请Mike Lentine
我们的首席物理程序员
来谈谈技术方面
[掌声]
>>Michael：大家好
谢谢 Jim
我是Michael
在Epic负责我们的物理团队
当我们着手创建
新的物理和破坏系统时
我们首先需要弄明白
为什么我们要做这个系统
我们有两个主要目标
第一个目标是让
Jim和Matthias这样的内容创作者
能够制作出你们在
这个讲座和我们的演示中
看到的种种效果
另一个目标是
我们希望这个系统是可伸缩的

Chinese: 
这其实意味着两件不同的事情
我们要能够创建一种设置
通用于从手机级别的设备
到高端PC的各种设备
我们还希望将来随着
我们的计算能力越来越强
还能扩展到数十万
或数百万个对象
为了实现这个目标
我们必须开发
几种不同的技术
下面我就来介绍一下
第一种技术是非凸面碰撞
当你创建了某种
由多边形组成的物体
你开始让它破裂
那么你遇到的每一个对象
不会都是凸面体
传统的处理方法
要么是让它与
网格体本身碰撞
这样的开销很大
要么使用凸面组合近似
不幸的是
这种做法的开销也可能很大
具体取决于你有多少个凸面体
如果你的凸面体数量太少
那么你得到的实际对象的
近似效果会很差
而且得不到你在这个示例中
看到的行为

English: 
This means effectively
two different things.
We want to be able
to create a single setup
that goes all the way
from a phone-powered device
all the way to kind of
a high-end PC.
We also wanted to be able
to continue to scale
as we get more and more
computational power over time
to hundreds of thousands
or millions of objects.
In order to do this,
we had to develop
a number of different techniques
that I am going to go through.
The first one
is non convex collisions.
As you create sort
of polygon soup
and you start fracturing it,
you are not going to come up
with every object being convex.
The traditional ways
of dealing with this
are either to collide it
against the Mesh itself,
which gets really expensive,
or to use convex combination
approximations.
Unfortunately,
those can get expensive
depending on how
many convexes you have.
If you have too little
or too few number of convexes,
then you get
a pretty poor approximation
of the actual object
and you cannot
get the desired behavior
that you see kind of here
in this example.

Japanese: 
これらは本質的に別個の目標です
私たちは 電話ベースのデバイスから
ハイエンド PC のようなものに至るまでの
すべてに単一の構成で
対応できるようにしたかったのです
と同時に 時がたって
より大きな計算パワーを獲得したときに
何十万あるいは何百万ものオブジェクトにも
スケーリングし続けられるように
もしたかったのです
これを実現するためには
いろいろなテクニックをたくさん開発しなくては
なりませんでした それをこれからご紹介します
最初のテクニックは 非凸型のコリジョンです
ポリゴン スープのようなものを作って破砕すると
あらゆるオブジェクトが
凸型になるわけではありません
これに対処する従来の方法は
とても負荷が大きい方法ですが
メッシュ自体と衝突させるか もしくは
凸結合近似を使うことです
凸結合近似は 残念ながら
凸形状の数によっては
負荷が大きくなる可能性があります
凸形状が小さすぎたり
数が少なすぎたりした場合には
実際のオブジェクトに対する
近似の精度がかなり悪くなり
この例に見られるような
望ましい挙動は得られません

Japanese: 
私たちがやったのは
アート ディレクションされた正確で
高速な破片を作成することのできる
まったく違うコリジョンの
表現を考え出すことでした
フィールドについては
皆さんも多少はご存じでしょう
この動画の元になったデモなどでも
フィールドを相当使いました
これまでにお話しした主なフィールドは
ビルを破壊するためのひずみや
力を適用するフィールドでした
でも フィールドというのは
それよりはるかに強力なコンセプトです
フィールドは 実はシーンの中に
配置できるオブジェクトにすぎませんが
実質的に物理シミュレーションの
いかなる属性をも制御できます
たとえば この地面の
特定の場所の摩擦を変更したいなら
ボックス フィールドを持ってきて
地面の上に配置してから
その部分を物理シミュレーション用に
ツルツルもしくはベタベタにします
これは Jim がお見せしたものよりはるかに
単純な例です
では 私たちがデモに使ったものの細部を

English: 
What we did is we came up with
a completely different collision
representation that allowed us
to create fractured pieces
that were art directed,
accurate, and fast.
You have heard a little bit
about Fields.
We did use them a good amount
in sort of the demo,
which this video is from.
The primary ones that we have
talked about thus far are things
like strain or force application
in order to break up buildings.
But Fields in general are a much
more powerful concept than that.
They are really just an object
that you can place into a scene
that essentially
give you control
over any property
of the physics simulation.
For example, if you wanted
to take the ground here
and change the friction
based on certain areas,
you could take a Box Field,
put it down over your ground,
and then make
that part slipperier or stickier
for your physics simulation.
This is an example that is much
simpler than the one Jim showed.
Then I am going to go through
in a little bit more detail

Chinese: 
我们设计了一种完全不同的碰撞
表示法 使我们能够创建
符合美术指导的破裂碎片
而且准确而快速
你们已经
听到了一些关于场的信息
在这个视频所反映的演示中
我们确实大量使用了场
目前为止我们提到的场主要是
为了破坏建筑
而施加的应力或力之类
但总的来说
场这个概念要比这些强大得多
它们其实就是
你可以放到场景中的对象
基本上能让你控制
物理模拟的任何属性
比方说
如果你要处理这里的地面
改变某些区域的摩擦力
你可以把一个方框场
放在地面上
然后使那一部分在物理模拟中
变得更光滑或更粘滞
这个例子比Jim展示的例子
简单得多
然后我要稍微详细一点

Chinese: 
介绍我们在演示中使用的场
你们在左边看到的第一个节点
是一个径向下坠场
它基本上就是有一个数值
当你距离在空间中指定的那个点
越来越远时
它就开始下坠
然后我们给它
添加了一些随机噪点
而且我们还有几个不同的节点
用来确定应用噪点的方式
然后我们用一个剔除场I love you
合并这两者
它基本上
就是把那个径向场变为球体
在里面添加噪点
然后每当在演示中武器开火时
我们就以扭矩应用的形式应用它
我们前面已经说过
虚幻引擎和Chaos的集成
是非常紧密的
对于破坏之类的事情
如果牵涉到
游戏中各种不同的其他系统
比如Niagara、音频和游戏性事件
这就极为重要
我们在演示中
利用的两种主要事件
是碰撞和断裂事件
碰撞事件
每当两个物体碰撞时就会发生
这是很直观的

English: 
that we used in our demo.
The first node
you can see on the left
is a radial falloff Field,
so basically it just has a value
and then starts falling off
as you get further
and further away from that point
in space that you specify.
We then add essentially
some random noise to it
and we have a number
of different nodes
for how you apply noise.
Then we combine those two
with a culling Field
that basically turns
that radial Field into a sphere,
adds the noise into it,
and then we apply that in this
case as a torque application
every time essentially
the weapon is shot in our demo.
We have talked about
how Unreal is tightly
integrated with Chaos,
and this is extremely important
for things like destruction
when it comes to various
different other systems
in the game such as Niagara,
audio, and gameplay events.
The two primary events
that we utilized in our demo
are collision
and breaking events.
Collision events happen
every time two objects collide,
which is pretty intuitive.

Japanese: 
もう少し細かく見ていきましょう
左の方にある最初のノードは
放射状フォールオフのフィールドです
これは基本的に特定の値を保持していて
指定した空間内の点から離れれば離れるほど
その値が小さくなっていきます
そして そこに多少のランダムなノイズを加えます
そのノイズを適用する方法に関しては
さまざまなノードがあります
そして この 2 つをカリング
フィールドと組み合わせます
このカリング フィールドは基本的に
放射状フィールドを球面に変換し
そこにノイズを加えます
そしてそれを
この場合はデモの中で武器が
発射されるたびに トルクとして適用します
Unreal と Chaos が
いかに密接に統合されているかについては
お話ししましたが
このことは
ナイアガラやオーディオや
ゲームプレイイベントのような
ゲーム内の他のさまざまなシステムに破壊が
関係するときには きわめて重要です
私たちのデモで利用した主な
2 つのイベントは
衝突イベントと細分化イベントです
衝突イベントは
2 つのオブジェクトが衝突するたびに発生し
とても直観的です

English: 
Breaking events
are somewhat similar,
except they happen
when an Object
essentially breaks apart
from the building.
One thing that Matt
touched on earlier
is this can get unwieldy
pretty quickly.
When you are making destruction,
you expect to see
a good amount of smoke and dust.
But if you were
to spawn particles
every time you had a collision
or a breaking event,
you would just be inundated
with huge amounts of smoke
and you would not be
able to see anything.
We provided a number of
different filter mechanisms
to try to reduce that.
For instance,
for smoke and dust,
what we did is we
essentially created a grid.
We essentially hashed
the various events kinds
of into that grid
and then spawned say one
particle system for each cell
in that grid to reduce
the amount of dust and smoke
that you end up getting.
Another example is for audio.
You do not necessarily
want every single event
to generate a sound.
What we did is we basically
took all the events,
we sorted by mass,
and the ones that were heaviest
essentially generated sounds
whenever destruction occurred.
This gives us a way

Chinese: 
断裂事件和它差不多
只不过是发生在物体
从建筑上断开的时候嗯
Matt先前提到过
这种事件可能很快就变得
很难处理
当你制作破坏效果时
你会期待看到很多烟雾和灰尘
但是如果
每次发生碰撞或断裂事件
你都要生成粒子
那么你就会被大量的烟雾淹没
就会什么都看不清
我们提供了
几种不同的过滤机制
以求减少这种情况
例如
对于烟雾和灰尘
我们所做的
基本上就是创建了一个网格
我们
对进入该网格的各种事件类型
进行散列处理
然后在该网格中 比方说
每个单元格
生成一个粒子系统
以减少最后得到的
灰尘和烟雾数量
另一个例子是关于音频的
你不一定希望每个事件
都产生一个声音
我们所做的就是把所有事件
按质量排序
每当发生破坏时
就让最重的一些事件
生成声音
这样一来

Japanese: 
細分化イベントも似たようなものですが
建物からオブジェクトが崩れるときに
発生するところが違います
先ほど Matt が触れたことの 1 つは
これは手に負えないくらい速く起こる
可能性があるということです
破壊が起こっているときには
相当な量の煙や埃が
発生することが期待されます
でも 衝突イベントや細分化イベントが
発生するたびに
パーティクルをスポーンしようとすると
大量の煙が充満して
何も見えなくなってしまうでしょう
それを減らそうとして
さまざまなフィルタの仕組みを用意しました
たとえば 煙と埃に関して私たちがやったのは
実質的にグリッドを作ることです
最終的な埃や煙の量を減らすため
さまざまなイベントの種類をハッシュ値に変換し
そのグリッドに割り当ててから
グリッド内のセルごとに
単一のパーティクル システムを
スポーンしたのです
もう 1 つの例は オーディオです
サウンドは 必ずしもあらゆるイベントから
生成したいわけではありません
私たちがやったのは 破壊が生じるたびに
あらゆるイベントを受け取って
質量でソートし
実質的に最も重いイベントが
サウンドを生成するようにすることでした
これにより

English: 
so you can hear
all kinds of the big events,
but you do not hear
all the noise at the same time.
Then of course, for gameplay,
Matt went over how we used
that to create reactions
from Characters.
A big component of this system
we mentioned
before is scalability.
Caching is one way
to achieve scalability,
but we really wanted
to make every part
of the Chaos system interactive.
The system we came up with
was essentially
an interactive caching system.
The way this effectively works
is you record your sim in Unreal
using the same tools
as we talked about.
It will run at say
five frames per second,
maybe one frame per second,
depending on however complex
a scene you want to do.
It will record that simulation.
It will then essentially -
there are a number
of different ways
you can use to play it back.
But one way to get
the max of interactivity
is you will register
essentially all those Objects
with the physics system.
It will effectively be sleeping
while they are playing
back the cache,

Japanese: 
大きなイベントは種類を問わず聞こえますが
同時に発生したノイズは
聞こえないようにすることができます
そしてもちろん イベントを使って
ゲームプレイ時にキャラクターからの
リアクションを生み出す方法については
Matt が話してくれました
先ほども触れましたが
このシステムの大きな要素の 1 つは
スケーラビリティです
スケーラビリティを実現するための
1 つの方法はキャッシングですが
Chaos システムでは
あらゆる部分をインタラクティブにしたい
と思っていました そこで考えられたシステムが
本質的にインタラクティブな
キャッシング システムでした
このようなシステムを効果的に機能させる方法は
Unreal 内のシミュレーションを
先ほど紹介したものと同じツールを
使って記録することです
シミュレーションの実行は
毎秒 5 フレームとか
シミュレートしたいシーンの複雑度によっては
毎秒 1 フレームぐらいになるかもしれません
そのシミュレーションをツールで記録します
その後 本質的に…
その記録を再生する方法は
たくさんあります
でも 最大限のインタラクティビティを
得る方法の 1 つは
要するにそういったオブジェクトのすべてを
物理システムに登録することです
そのようなオブジェクトは
キャッシュを再生している間は
実質的にスリープ状態にあるので

Chinese: 
我们就能让你听到
各种大事件的声音
但你不会同时听到所有噪声
当然了 关于游戏性
Matt已经介绍过我们怎样使用
该系统创建来自角色的反应
我们先前提到过
这个系统的一个重要特色
是可伸缩性
缓存是实现可伸缩性的一种办法
但是我们非常希望让
Chaos系统的每一部分都具有交互性
我们设计出的系统
本质上是一个交互式缓存系统
它实际的工作方式是
在虚幻引擎中
使用我们提到的工具记录模拟
它将以 比方说
每秒5帧的速度运行
也许是每秒1帧
这取决于你要做的场景有多复杂
它将记录这些模拟
然后它就-
有几种不同的方法
可以用来播放模拟
但实现最大交互性的方法
是把所有
物体在物理系统中注册
这样在播放缓存时
它们实际上是处于休眠状态

English: 
so they have very,
very little cost.
But they will be set up,
and so if any of them collide
with something
that is simulatable
or interact with a Character
or anything like that,
they can go active.
In this scene, I think we had
300,000 or 400,000 Objects
through this cache playback,
and if we were to start
interacting with these Objects,
then we could be maybe
simulating a few hundred
but still have kind of
that scale of 400,000 Objects
being used
as part of your destruction
and not have to pay
the cost of doing so.
Another thing which we did,
which was fairly important
but a little bit under the hood,
is we redid the way
that Physics talks to the Engine
from a threading perspective.
This is optional, but right now,
if you download
Unreal Engine 4.22 or before,
physics runs as part
of the game thread.
This is a fairly simple model,
but it does not give you
a lot of control
as to how physics
kind of interacts with gameplay.

Chinese: 
所以成本非常非常低
但是它们会设置好
如果其中有任何物体
与什么东西碰撞
是可模拟的
或者与角色交互
或者诸如此类
它们就会转为活动状态
在这个场景中 我想应该
在整个缓存播放中
有300000或400000个物体
如果我们要开始与这些物体交互
那么我们也许可以模拟几百个
但是仍然保持
400000个物体的规模
用作破坏效果的一部分
而不必付出模拟它们的成本
我们做的另一件事也相当重要
不过从表面不容易看到
那就是我们从线程化角度
重做了物理系统与引擎的通信方式
这是可选的
不过现在如果你下载
虚幻引擎4.22或更早版本
物理系统是
作为游戏线程一部分运行的
这是一种相当简单的模式
但是这并不能让你很好地控制
物理与游戏性交互的方式

Japanese: 
その負荷はとてもとても小さいです
それでもオブジェクトはセットアップされ
そのどれかが
シミュレーション可能な
オブジェクトと衝突するとか
キャラクターとやりとりするとかすると
アクティブになることができます
このシーンでは
キャッシュの再生全体を通じて
オブジェクトが 30 〜 40 万個あります
そして このようなオブジェクトとの
相互作用を開始すると
数百個のオブジェクトはシミュレーションの
対象になるかもしれませんが
40 万規模のオブジェクトは依然として
破壊の一部として使われたままであり
そのための負荷もかかっていません
もう 1 つ私たちがやったことで 
とても重要ですが
表にはあまり現れないことは
物理とエンジンがやりとりする方法を
スレッディングの観点から変更したことです
これはオプションですが 現時点では
Unreal Engine 4.22 以前を
ダウンロードすると
物理エンジンはゲーム スレッドの
一部として実行されます
これはとても単純なモデルですが
物理エンジンとゲームプレイとの
間の相互作用の方法については
あまり制御できません

Chinese: 
我们做的事情之一就是
将它彻底解耦
这样我们就有了
完全独立的物理线程
这给了我们多种不同的
炫酷功能
其中之一就是能够随心所欲设置
物理Tick的时间步幅
如果你要设置固定时间步幅
这在联网等情况下很重要
那是非常容易办到的
如果要以和Gameplay相比超高的
Tick速度运行物理
以实现非常准确的交互性
而且你并没有运行超大数量的对象
那么这也是可以办到的
如果你想实现高度互动的游戏性
和大量的物理模拟
但是你不一定也需要
和Gameplay运行得一样快-
如果你按60赫兹
Tick Gameplay
那么可以按30赫兹Tick物理
这样得到的计算能力
是传统上在引擎中得到的两倍
我们已经几次提到几何体集合了
究竟什么是几何体集合？
它是一种Actor表示
我们用它来渲染
可破坏的对象

Japanese: 
私たちがやったことの 1 つは
この両者を完全に切り離して
完全に別個の物理スレッドを
実行できるようにしたことです
これにより さまざまなすばらしい特徴が
たくさん実現されました
その 1 つは
物理ティックとして何でも好きな
タイム ステップを設定する機能です
ネットワーキングなどの状況で重要になる
固定タイム ステップにしたければ
それをやるのはいとも簡単です
インタラクティビティの精度を
極限まで高めるため
ゲームプレイよりもはるかに高いティック速度で
物理を実行したいなら
動作中のオブジェクトの数が
それほど膨大でなければ
それも可能です
非常にインタラクティブなゲームプレイと
大量の物理シミュレーションは必要ですが
物理シミュレーションは必ずしもゲームプレイほど
高速に実行する必要がない場合…
ゲームプレイのティックが 60 ヘルツなら
物理のティックを 30 ヘルツにすれば
従来のエンジンの 2 倍の計算パワーを
利用できるようになります
ジオメトリ コレクションについては
何回か取り上げました
ジオメトリ コレクションとは
厳密には何でしょうか
被破壊性オブジェクトを
レンダリングするために使われる
アクタの 1 つの表現です

English: 
One of the things we did
was completely decouple that
so we can have a completely
separate physics thread.
This gives us a number
of different cool features.
One is the ability
to set whatever time
step you want
for a physics tick.
If you want to do
a fixed time step,
which is important for things
like networking situations,
then it is very easy to do so.
If you want to run physics
at a super high tick rate
compared to a gameplay
for very accurate interactivity
if you are not running
a huge number of Objects,
you can do that as well.
If you want to have highly
interactive gameplay
and a lot of physics simulating
but you do not necessarily
need it to run quite
as fast as gameplay -
if you are ticking gameplay
at 60 hertz,
you can tick physics at 30 hertz
and get twice the amount
of computational power
than you would traditionally
in the Engine.
We covered upon Geometry
Collections a couple times.
What exactly is Geometry
Collection?
It is an Actor representation
that we use for rendering
a destructible Object.

English: 
It is somewhere between sort of
a Static Mesh and the Skeletal
Mesh representations
inside the Engine.
The Static Mesh is just a way
to represent a single
Object which can be transformed
through space.
If we were to try to represent
this many pieces
via a sequence of Static Meshes,
the cost of the overhead
of Static Meshes
would get far too large
for that to be useful.
Typically, the way to avoid
that is to use
Skeletal Meshes, which give you
the concept of different bones
with different transforms
on a single representation,
which helps with
the rendering cost overhead.
However, there are a number
of limitations with that system.
One, there is a lot more
overhead
we need with Skeletal Meshes
than we need with destruction
because it supports all sorts of
animation tools
like linear blend skinning.
It also has fairly slow limits
in terms of the number of bones
you can simulate.
To try to represent this
building with Skeletal Meshes,
you would still need
probably 100 or something
Skeletal Meshes to represent it.
A Geometry
Collection is essentially
a representation
where you can have basically
as many bones as you want,
similar to a Skeletal Mesh

Chinese: 
它在引擎中
大致介于静态网格体表示
和骨架网格体表示之间
静态网格体只不过是一种
表示方式
表示可通过空间变换的一个对象
如果我们尝试
通过一系列静态网格体
来表示许多碎片
那么这些静态网格体的开销成本
就会太大 无法实用
通常 避免这种情况的方法是使用
骨架网格体 
它提供的概念是在一个表示上
有不同的骨骼和不同的变换
这有助于降低渲染成本开销
但是这种系统有几个局限性
第一 使用骨架网格体所需的
开销大大多于破坏所需的开销
因为它支持各种动画工具
例如线性混合蒙皮
根据可以模拟的骨骼数量
也会有速度非常慢的局限性
如果要使用骨架网格体
来表示这座建筑
你可能还是需要100来个
骨架网格体才行
几何体几何基本上
是一种表示法
它允许你使用
任意数量的骨骼
这和骨架网格体相似

Japanese: 
エンジン内部では スタティックメッシュ表現と
スケルタルメッシュ表現の
中間にあたる表現です
スタティックメッシュは
単にエンジン内でトランスフォームできる
単一のオブジェクトを
表現する方法の 1 つです
このような大量の破片を
一連のスタティックメッシュで表現しようとすると
スタティックメッシュのオーバーヘッドの負荷
が大きくなりすぎて役に立ちません
それを防ぐ一般的な方法は
スケルタルメッシュを使うことです
スケルタルメッシュは 単一の表現に
異なるトランスフォームを持つ異なる
ボーンという概念を導入します
これは レンダリング負荷の
オーバーヘッドの解決に役立ちます
ですが このシステムには
たくさんの制限があります
1 つは スケルタルメッシュは
線形ブレンド スキニングのようなあらゆる種類の
アニメーション ツールをサポートしているので
それに必要なオーバーヘッドは
破壊に必要なオーバーヘッドより
はるかに大きいということです
シミュレートできるボーンの数という意味でも
かなり低速になるという限界があります
このビルをスケルタルメッシュで表現するためには
おそらく 100 個程度のスケルタルメッシュが
必要になるでしょう
ジオメトリ コレクションは要するに
スケルタルメッシュと同じく
基本的に好きな数のボーンを
保持できる表現ですが

Japanese: 
リジッド スキニング以外の種類の
スキニングはサポートしません
この種のシミュレーションに
必要なのはそれだけだからです
ジオメトリ コレクションは
オーバーヘッドが小さく負荷も低いので
この中に何十万個もの
オブジェクトを保持できます
これは レンダリングする立場からすると
数千もの破片に壊れているにもかかわらず
基本的にマテリアルごとに
描画コール 1 回分の
負荷しかかからないということです
私たちがしつこく繰り返していることの 1 つは
すべてがエンジンの中にあるということです
フラクチャー ツールについては
深入りしませんが
お伝えしたいとても大事な点は
イテレーションを行う機能や
結果を表示する機能があるので
外部パッケージに移動する
必要がない点です
そのおかげで 誰にとっても
非常に強力なツールになっています
レベルについては Jim も触れていましたね
レベルとは 要するに破壊可能な
LOD システムです
これは 従来の幾何学的な意味での
LOD ではありません
従来の LOD は 言うまでもなく
どのぐらい離れているかによって
異なる表現をレンダリングします

Chinese: 
但它基本上不支持
任何类型的蒙皮
只有刚性蒙皮除外
对于这种模拟
我们只需要它就够了
因为它是低成本低开销的
所以我们可以有
数十万个这样的对象
从渲染角度来看
这意味着
我们对于像这样的东西
只需要每种材质
付出一次绘图调用的成本
尽管它
会分解为成千上万个碎片
有一件事我们已经反复提了
好多遍
那就是一切都在引擎中完成
关于破裂工具我不会讲太多
但真正重要的一点是
我们想让大家知道
它有迭代的能力
而且你们能够看到结果
不必在外部软件包之间切换
因此它对每个人来说
都是非常强大的工具
Jim提到过级别
级别其实就是我们的
可破坏LOD系统
这不是传统几何意义上的LOD
那种LOD是根据距离远近
提供不同的表示

English: 
where it does not support
any type of skinning
essentially
other than rigid skinning,
which is all we need
for this kind of simulation.
Because it is low cost
with low overhead,
we can have hundreds of
thousands of Objects in these.
From a rendering standpoint,
that means that essentially
we can pay
one draw call cost per Material
for something like this,
despite the fact
that it is breaking up
into thousands of pieces.
One of the things we have
kind of been harping
on a little bit over and over
is that everything is in Engine.
I am not going to go through
fracture tools too much,
but the really important point
that we want to convey
is the ability to iterate
and the ability
to see your results
and not have to go in
and out of external packages.
That makes a really
powerful tool for everyone.
Jim touched upon Levels.
What Levels is is effectively
our destructible LOD system.
This is not LODs from
a traditional geometric sense,
which is of course,
depending on how far away,
you are essentially
a different representation.

Japanese: 
レベルの方は基本的に
利用できる細部の程度に応じて
破壊シミュレーションに費やす計算パワーの
程度を決めます
一片のジオメトリが
10 個の破片に壊れるとすると
その 1 つ 1 つがさらに
10 個の破片に壊れ…
という具合に繰り返されます
ローエンドのプラットフォームでは
たとえば 一番最初の
レベル以外は壊したくない
みたいなことができます
その場合 破片は
10 個程度しか生まれませんが
利用できる計算パワーで
処理できる以上の破片を
シミュレートしなくてはならない
というような問題が生じることはありません
レベルのもう 1 つの利点は
スケーラビリティです
レベルを破壊するときに計算に入れているのは
現在シミュレーション中のレベルの
すぐ下にあるレベルだけです
ハイエンドのプラットフォーム上で
かなり大量の破壊を
シミュレートできるようにしたい場合
このシーン全体が
数十万個の破片に分解されますが
それ以上分解される前の

English: 
This essentially determines
how much computational power
you are going to spend
on your destruction simulation
depending on how much
specify is available.
If you have a piece of geometry
where you break it up
into 10 pieces,
each one of those pieces
is 10 more pieces,
and so on and so forth.
What you can do on your
low-end platforms is say,
I am not going to want to
break up anymore
than the very first Level.
Then you are only going to have
10 pieces or so,
but you will never have
the problem of needing
to simulate way more pieces
than you have the computational
power available to do so.
The other thing it gives you
is scalability.
As you break it up, you are
only ever considering the Level
underneath the Level
that is currently simulating.
Even on a high-end platform
where you want to be able
to simulate a fairly large
amount of destruction,
this entire scene is broken up
into hundreds of
thousands of pieces,
but we are only really ever
considering the 10 or so

Chinese: 
而这种LOD的作用是
根据你指定的可用数量
来决定将多少计算能力
用于破坏模拟
如果你有一个几何体
你把它分解成10块
每一块又再分成10块
以此类推
在低端平台上你能做的就是说
我除了第一级外
不想再分解了
那么你就只会有10个左右的碎块
但是你绝对不会遇到
需要模拟的碎块数量
超过可用计算能力的问题
它给你的另一个优点是可伸缩性
在分解物体时你只要考虑
在当前模拟级别之下的一个级别
即使在高端平台上
如果你想要
模拟相当大数量的破坏效果
整个场景分解成
几十万个碎块
但是我们在任何时刻

Japanese: 
実際に任意の時点で考慮されるのは
柱 1 本につき
10 個程度の破片にすぎません
これも Jim が触れましたが
見栄えのするエフェクトになります
このような柱の根本を撃ってから
天辺を撃って切り離し
柱全体の中央部を落下させて
力とひずみによって
さらに壊すというようなこともできます
最後にお話ししたいのは
動的ひずみの評価です
破壊をビル内のもっと
大きな構成要素に拡大する際には
すべてを手作業でやらせて
膨大な量の仕事を
アーティストに押し付けることなく
このような破片の壊れ方を
オーサリングする手段が必要です
接続グラフについては少しお話ししましたね
接続グラフをひずみ評価の立場から見ると
このような各ノードと接続グラフが
オブジェクトを表現し
ノードを接続する各辺が実質的に
許容量のひずみを保持していることになります

English: 
for each of these pillars
at any given time
until they break up further.
Finally, Jim kind of touched
on this as well,
but it gives you
some cool-looking effects.
We can do things like shoot
the bottom
and the top off
of these pillars,
get kind of the entire center
of the pillar falling,
and then further break that up
through forces and strains.
The last thing I
wanted to talk about
was dynamic strain evaluation.
As we want to scale to larger
and larger pieces
of destruction in buildings,
we need a way to author
how these things break up
without putting a huge amount
of work on our artists
to do everything manually.
We talked a little bit
about the connection graph.
What the connection graph
is from a strain evaluation
standpoint is each of
those nodes and connection
graph represent an Object,
and each of the edges
that connect those nodes
essentially have an allowable
amount of strain.

Chinese: 
只需要为每根柱子考虑
10个左右的碎块
直到它们进一步分解为止
最后一点
Jim也已经讲到了，也已经讲到了
能给你们提供一些
看起来很酷的效果
比如我们可以把这些柱子的
顶部和底部打掉
让柱子的整个中间部分落下来嗯
然后进一步通过力和应力分解
我最后要说的就是
动态应力评估
因为我们想要在楼房中
做出规模越来越大的破坏效果
我们需要找到一种方法
来表现这些物体的碎裂
但又不能给我们的美术师
增加太多负担
让他们手动绘制一切
我们前面已经说过连接图表
从应力评估的角度来看
所有这些节点和连接
图表就表示一个物体
而每条连接这些节点的边缘
基本上都有一个可承受的应力值

Japanese: 
そのひずみは エンジンの中に用意された
フィールドなどのさまざまな手段で設定できます
そして 力や減衰ひずみなどを適用すると
その接続は実質的に破壊されます
またこれは 破壊に心地よい
一定のリズムを与えるためにも役立ちます
というのは 先ほどの柱の例で見たように
ビルのコーナーを切り離すと
コーナー全体を落下させることになるからです
これらをすべて組み合わせると
相当なシミュレーションを行うことができます
これははるかに大きな変更で
作成したレベルにどの程度の
破壊を生じさせたか そして
すべてリアルタイムで動作するこのシステムに
どれだけ多くの物体が取り入れられるか
についてのヒントを与えてくれます
ここでは 膨大な量の力を適用しており
触れたものはすべて即座に
崩れ落ちています
同時に これらはすべてアーティストを介して
エンジンの中で作成されており

Chinese: 
这个应力可以通过场
或者我们在引擎中提供的
其他多种方式来设置
然后当我们应用力或衰减应力
或其他任何力
这些连接就会断裂
这也帮助我们得到了很酷的节奏
因为如果你打破楼房的一个角
基本上就能让整个角落
坠落下来 就像你们
在前面的柱子示例中看到的那样
把所有这些功能合在一起
我们就能得到很好的模拟
这是一个大大加量的修改版
可以让你们体会一下
我们在所创建的关卡中
放入了多少破坏效果
我们通过这套系统
可以让多少个物体
一起实时运行
我们在这里施加了很大的力
被我们射中的一切
都是瞬间坍塌的
另一方面 所有这一切效果
都是通过我们的美术师
在引擎中创作的

English: 
That strain can be set
with Fields
or a number of other ways
that we kind of provide
in the engine.
Then as we apply forces or decay
strain or whatever have you,
those connections
essentially break.
This also helps us get an amount
of cool rhythm with it,
because if you essentially break
off a corner of a building,
you will essentially get
that entire corner
falling like you saw
with the pillars example before.
When you put all
these things together,
we can do quite
a bit of simulation.
This was a much
heavier modification
that gives you a sense of
just how much destruction
was put into the Level
that we created
and how many bodies
we can push through this system
all running in real-time.
Here, we basically apply
a huge amount of force
and everything that we touch
kind of crumbles
pretty instantaneously.
At the same time,
all of this stuff
was created in Engine
via our artists,

Japanese: 
これはすべてリアルタイムで動作しています
では Intel 社の仲間の
Jeff に代わりたいと思います
Jeff は Chaos の高速化について
少し話してくれるはずです
[拍手]
>> どうも
私は Jeff Rous と申します
私は Intel 社のシニア デベロッパー
リレーションズ エンジニアです
Chaos の高速化についてお話ししましょう

English: 
and this is all running
in real-time.
Now I would like to hand it over
to my colleague Jeff from Intel.
He is going to talk a little bit
about making Chaos faster.
[APPLAUSE]
>> Hey, I’m Jeff Rous.
I am at Intel as a Senior
Developer Relations Engineer.
I will talk to you
about making Chaos faster.

Chinese: 
全都是实时运行的
现在我要把讲台交给
来自英特尔的同行Jeff
他会稍微讲一讲
如何提高Chaos的速度
[掌声]
>> 嗨 我是Jeff Rous
我在英特尔担任
资深开发者关系工程师
我要和你们谈谈如何
让Chaos运行得更快

Japanese: 
ある時点で 今 Michael が
最後の動画でお見せしたような
シミュレーションを行うシステムの
すべてが揃いました
そのシミュレーションは
すべて CPU 上で実行する必要があります
私たちがやったのは Epic と協力して
低水準のソルバーやデータ構造を最適化し
スレッドの並列処理を改善して
さらなる高速化を図ることでした
そこでの主な教訓の 1 つは
C++ は SIMD に
向いていないということです
パフォーマンスが重要なところでは
Intel ISPC というツールを取り入れました
そしてすばらしいことに 既存のスカラー
システムと比べて約 3 倍のパフォーマンスを
実現しました
また 同時にシミュレーションできる
オブジェクトも増やせるようになりました
データ構造の側では
TSet がボトルネックに
なっていることがわかりました
Unreal をよくご存じの方ならおわかりでしょうが
TSet はハッシュ コンテナです
TSet がボトルネックであることがわかったのは
交差判定において重複を除去しているときです

Chinese: 
在某个时候
你们会得到所有这些系统
进行Michael在刚才的视频中
展示的那种模拟
你们可以在CPU上进行所有模拟
我们和Epic合作开展的
工作是优化
低级解算器
数据结构
并且改进线程并行机制
进一步提高运行速度
我们在这些工作中
得到的一条关键经验是
C++在SIMD方面很差
在性能关键领域
我们集成了一种
叫做Intel ISPC的工具
发现它相对于现有的定标器系统
有大约3倍增益
这是很了不起的
现在你们可以同时
模拟更多东西了
在数据结构方面
我们发现TSet中有一个瓶颈
如果你们了解虚幻引擎
那就是一个散列容器
我们是在相交测试中
在做重复去除时
发现这是个瓶颈

English: 
At some point, you have got
all of those systems
simulating like Michael
just showed in the last video.
You have to do all of that
on the CPU.
What we did is we worked
with Epic to optimize
the low-level solvers,
the data structures,
and improve the
thread parallelism
to make things even faster.
One of the key learnings
here is we learned that C++
is bad at SIMD.
In performance critical areas,
we integrated
a tool called Intel ISPC
and saw roughly 3x gains over
the existing scaler systems,
so that was great.
Now you can have even
more things
simulating at the same time.
On the data structure
side of things,
we found a bottleneck in TSet,
and if you know Unreal at all,
that is a hash container.
We were finding that
that was a bottleneck
when we were doing duplicate
removal in intersection testing.

Japanese: 
そこで TSet を TArray に入れ替えて
RemoveSwap を行うようにしたら
うまくいきました
今では 前と同じように問題なく動いています
また ParallelFor が
過剰に使われている可能性もあります
オーバーサブスクリプションが
うまくいく場合もありますが
やりすぎは良くありません
数千あるいは数万のジョブを
同時に実行する場合
スレッド開始や作業開始の
オーバーヘッドが大きくなりすぎて
実際には単一のスレッドで実行した方が速い
というような状況に陥ることがあります
このような場合 特に データアクセスの
パターンがキャッシュ フレンドリーな場合には
バッチ処理が役立ちます
では 先ほどお話しした 
ISPC とは何でしょうか
CPU には コードの
高速化に利用できるベクトル ユニットが
2000 年代初期から装備されています
これは単一命令多重データ処理として
知られており
たとえば 1 回の命令で
8 組の浮動小数点数の加算を
実行したりできます
Chaos システムでは 高速化のためこの
SIMD を多用しています
ここで 1 つ問題になるのは C++ では
コンパイラにベクトル化を行わせるのが
難しいことです

English: 
Switched that to TArray,
remove and swap, and great.
Now we are up and running again.
Also, ParallelFor
can be overused.
Some oversubscription is good,
but you do not want
to go overboard.
If you have got thousands
of jobs going on
at the same time
or tens of thousands,
sometimes you can get into
a situation
where the thread start
or the work start overhead
becomes too much
and it is actually faster
to run it on a single thread.
Batching is helpful here,
especially if your data access
patters are cache friendly.
What is this ISPC
that I was saying?
CPUs since the early 2000s
have vector units
that programmers can use
to speed up their code.
This is known as single
instruction multiple data,
and you can do eight
floating point adds
in one instruction, for example.
We use this a lot in the
Chaos system to make it faster.
One of the problems
is that with C++
it is hard to get to the
compiler to vectorize anything.

Chinese: 
我们转换成TArray
去除并交换 效果很好
这一下运行又顺畅了
另外
ParallelFor可能被过度使用
一定程度的超负荷是好事
但不能过头
如果你有几千个作业
同时进行
或者有几万个
有时候会遇到这样一种情况
线程启动或工作启动开销
变得太高
结果在一个线程上运行反而更快
批处理在这里很有帮助
尤其是在数据访问模式
对缓存友好的情况下
我说的这个ISPC是什么？
自从2000年代初期
CPU就有了矢量单元
程序员可以用它们来
加快代码运行速度
这叫做单指令多数据
比方说 可以
在一个指令中做8次浮点加法
我们在Chaos系统中
大量用它提高速度
有一个问题是
使用C++时
很难让编译器进行任何矢量化

Japanese: 
一般的な解決法は
コンパイラ組み込み関数を使うことですが
そのためには新しい命令セットに
更新する必要があります
また PC 上で作業している場合には
サポートしたい ARM その他の
プラットフォーム用のコードを書く必要もあります
そこで登場するのが ISPC コンパイラです
これを利用すれば 一度書いたコードを
どのプラットフォームでも動かすことができます
ISPC は言語に CPU 上で動作する言語に
シェーダー言語のような
暗黙の並列性を与えてくれます
ISPC では シェーダー言語と同じく
デフォルトで SIMD を想定し
その実行の方法は
GPU シェーダーとよく似ています
その大きな利点の 1 つは
先ほどお話ししたように
ISPC を 1 回書くだけで
SSE、AVX、AVX2、さらには ARM など
たくさんの命令セットにコンパイルできることです
ISPC は PC、コンソール、
Linux、Mac 上で動作します
複数の命令セット用に
コンパイルを行う場合には
ユーザーがサポートしている命令セットの中から
最も適切な CPU 命令セットを選択する

English: 
The usual solution is
to use compiler intrinsics,
but you then have to update
with new instruction sets.
If you are working on PC,
you also have to
write those for ARM
or any other platform
that you want to support.
This is where the ISPC
compiler comes in,
because you can write it once
and it can work anywhere.
ISPC gives you implicit
parallelism in a language
that looks like a shader
language that runs on the CPU.
Like a shader language,
it assumes SIMD by default,
and it looks a lot
like GPU shaders
in the way
that they are executed.
A big benefit, like I said,
is you can write ISPC once,
compile it to many
instruction sets:
SSE, AVX, AVX2, even ARM.
It works on PC,
console, Linux, Mac.
If you are compiling
for multiple instruction sets,
there is an auto
dispatch mechanism
where it chooses
the right CPU instruction set,

Chinese: 
常用的解决方法是使用
编译器内部函数
但是这样一来
就必须用新的指令集更新
如果你在PC上工作
还必须为ARM
或你要支持的其他任何平台
编写这些指令
这时候ISPC编译器就可以帮忙
因为你只要编写一次
就能在任何平台上工作
ISPC在一种语言中
为你提供隐式并行性
它看起来就像是
在CPU上运行的着色器语言
和着色器语言一样
它默认假定SIMD
而且在执行方式上
很像GPU着色器
我前面说过 一个很大的优点是
你可以编写ISPC一次
把它编译到许多指定集中：
SSE、AVX、AVX2
乃至ARM
它在PC、游戏机、Linux、Mac
上都能工作
如果你为多个指令集编译
有一个自动调度机制
会选择合适的CPU指令集

English: 
the best one
that your users support.
You do not have to worry
about doing compiler
intrinsics anymore.
We made good use
of this in Chaos,
and you can use it
in your projects too.
All you have to do is include
a module in your Build CS,
add ISPC files,
include the generated header
that comes out of that,
and Unreal Build Tool
will handle the rest,
including generating all
the different instruction sets,
handles the linking
of the Object files,
and you are up and running
hopefully faster
than you were before.
All of this was done to make it
as seamless as possible
for Unreal developers
and of course the Chaos system
that makes good use of it.
What is it good for?
It is good for dense
compute-bound
workloads like Chaos.
Heavy math like physics
intersection testing, cloth,
CPU vertex transformation.
It is best with
contiguous memory,

Japanese: 
自動ディスパッチのメカニズムがあります
もうコンパイラ組み込み関数の
利用に悩む必要はありません
Chaos での ISPC の
利用はうまくいきましたし
皆さんのプロジェクトにも利用できます
やらなくてはならないのは
build.cs にモジュールを取り込んで
ISPC ファイルを追加し
そこから生成されたヘッダを
インクルードすることだけです
あとは さまざまな命令セットの生成から
オブジェクト ファイルのリンク処理まで
Unreal のビルド ツールがやってくれます
そして たぶんそれまでより高速に
動作するようになっているはずです
これはすべて Unreal 開発者
そしてもちろん
SIMD を効果的に利用している
Chaos システムにとって
SIMD の利用をできるだけ
シームレスにするために行われたことです
SIMD の利点は何でしょうか
SIMD は Chaos のような
計算がボトルネックになっている
負荷に適しています
物理的な交差判定やクロスや
CPU 頂点変換のような
重い演算処理です
また SIMD は連続メモリに最適なので

Chinese: 
用户支持的最好的一个
你不必再操心
执行编译器内部函数
我们在Chaos中充分利用了它
你也可以在你的项目中利用
你要做的就是在你的
Build CS中包含一个模块
添加ISPC文件
包含从它
生成的标头
虚幻构建工具将会
处理剩下的工作
包括生成所有不同的指令集
处理对象文件的链接
然后你就能比以前
更快地运行
这一切工作都是为了让
虚幻开发者得到尽可能无缝的体验
当然也是为了让Chaos系统
充分利用它
这有什么好处呢？
它对于Chaos这样的
密集计算约束工作负载很有好处
像物理相交测试、布料
CPU顶点变换之类的密集计算
它和连续内存配合得最好

Japanese: 
データの TArray を操作する場合のように
ロードして操作して
保存するという処理をしていて
その操作間に
データ依存性がない場合に最適です
さらに ParallelFor の
バッチ処理メカニズムと
組み合わせるととても役に立ちます
思い出してほしいのですが、ISPC は GPU
シェーダーのように動作すると言いましたよね
そのとおりなのですが
そこには多少の違いがあります
GPU シェーダーはすべて最後まで
独立して動作しますが
ISPC を使った場合
SIMD の各レーンは
プログラムの命令を 1 つずつ実行します
違うのは ISPC は
ロックステップ方式で動作し
そのような SIMD レーンは
すべて同時に実行されるので
最終的には収束することが
保証されるということです
コード内に分岐がある場合は
真の場合を実行してから
偽の場合を実行します
これは見かけより高速ですが
最終的には収束します
これがもたらす利点の 1 つは
SIMD レーン間の縮小を行う機能です
たとえば 整数配列の和を
求めようとしている場合には

English: 
so when you are doing load,
manipulate and store,
like if you are working
with a TArray of data,
it works best when
there are no data dependencies
between operations
and very useful
when combined with ParallelFor
batching mechanism.
If you remember, I said it acted
a lot like GPU shaders.
They do, with some differences.
Whereas GPU shaders all run
to completion independently,
with ISPC,
each lane, SIMD lane,
runs one instruction
of the program.
The differences lies
in that ISPC runs in lockstep,
so all of those SIMD lanes
run all at the same time,
so they are guaranteed
to converge at the end.
When you have branches
in your code,
you will run the true
and then you will run the false,
and that is faster
than it sounds,
but you get convergence
at the end there.
One of the nice things that
this gives you is the ability
to do reductions
across SIMD lanes.
For example, if you are trying
to find the sum of an array

Chinese: 
所以在你
执行加载、操作和存储时
比如在你使用数据TArray时
当运算之间没有数据依赖性时
它的工作效果最好
而且如果
结合ParallelFor批处理机制
会非常有用
你们可能记得 我说过它的行为
很像GPU着色器
但两者是有一些差别
GPU着色器都是独立运行
直到完成的
而ISPC
每条通道 SIMD通道
都运行程序的一条指令
差别在于ISPC按锁步模式运行
所以所有的SIMD通道
都是同时运行
保证它们在最后收敛
如果你的代码中有分支
你会先运行true
然后运行false
这比听起来要快
但你最后还是会得到收敛
有一个好处是这让你能够
跨SIMD通道做减法
例如 如果你想找到一个
整数数组的总和

Chinese: 
这会非常快
我们大量使用了这种方法
底下的图提供了一个
ISPC的示例
这是RGB转灰度的简单函数
我们这里是转换N个值
使用三次乘法和两次加法
使用AVX
如果你运行八宽
可以一次执行八个这样的运算
at a time.
其中两个运算
可以融合到FMA指令中
这样可以更快
这个函数的速度基本上
是定标器实现的8倍
而且不需要使用内部函数
仍然保持可读性
在虚幻能运行的任何平台上
它都能运行
以上就是英特尔为了帮助优化
Chaos演示所做的工作
请在4.23版中寻找ISPC的更改
它会和Chaos一起推出
如果你们有兴趣听更多

Japanese: 
それはとても高速です
私たちはこれを多用しています
下の画像は ISPC が
どのようなものかという一例です
これは rgb2gray という単純な関数です
ここでやっているのは
乗算 2 回、加算 3 回を使って
N 個の値を変換することです
AVX で 8 ワイド実行をしている場合なら
これらの演算を 8 つ同時に実行できます
この演算のうち 2 つは
FMA 命令に融合することができるので
さらに高速化することができます
この関数は スカラー実装よりも
約 8 倍高速で
組み込み関数を使う必要もなく
可読性も維持されます
そして Unreal が
動く環境ならどこでも動きます
これが Chaos のデモを
最適化するために Intel が行った
ちょっとしたお手伝いです Chaos と一緒に
公開される Unreal Engine 4.23 の
ISPC の変更点を探してみてください
もっと話を聞きたい方のため

English: 
of integers, that is very fast.
We use that quite a lot.
The bottom picture gives you an
example of what ISPC looks like.
This is an RGB
to gray simple function.
What we have here
is convert N values
using three multiplies
and two adds.
With AVX,
when you are running eight wide,
you can do eight of those
at a time.
Two of those operations can be
fused into FMA instructions,
so you are going even faster.
This function
is roughly eight times
faster than the scaler
implementation
without needing
to use intrinsics,
and it remains readable.
It works on everywhere
that Unreal does.
That is a bit about what Intel
did to help optimize
the Chaos demo.
Look for ISPC changes in 4.23
that are rolling out
along with Chaos.
We have an ISPC talk
if you are interested

Japanese: 
明日 ISPC トークを実施します
他の講演者の皆さんにも
ステージに戻ってきてもらいましょう
ありがとうございました
[拍手]

English: 
in hearing more tomorrow.
Big thanks to my co-presenters,
who I will invite back up
on the stage. Thank you.
[APPLAUSE]

Chinese: 
我们明天有一个ISPC讲座
非常感谢我的联合主讲人
我要邀请他们再上讲台
谢谢你们
[掌声]
