
Korean: 
여러분 안녕하세요,
저는 크리스 머피이며
호주, 뉴질랜드, 동남아시아를
담당하고 하는
언리얼 엔진 에반젤리스트입니다
저의 임무는 여러 지역의
개발자를 지원하는 것입니다
그래서 다양한 지역을
대상으로 하고 있으며
가능한 모든 곳에서
도움을 드리고 있습니다
이번 프레젠테이션에서는
나이아가라를 이용한
하이 엔드 이펙트를
집중적으로 다루겠습니다
나이아가라는 언리얼 엔진의
새로운 실시간
비주얼 이펙트 시스템으로
저희가 꽤 오랫동안 작업해 왔습니다
현재 얼리 액세스로 이용 가능하며
사용하시고 싶다면
공식 출시 버전은 아니지만
사용해보실 수는 있습니다
플러그인 메뉴로 이동하셔서
'Niagara'를 입력하면...
나이아가라가 활성화됩니다
오늘 세션에서는
미리 강조하고 싶은 것이 있는데요,
이것은 정말로 중요합니다
오늘의 목표는 여러분들께서
어떤 작업이 가능하고
툴이 왜 특정한 방식으로
구성되어 있는지와 함께
어떻게 시작할지를
이해하시는 겁니다

Chinese: 
>> 大家好
我叫Chris Murphy
是虚幻引擎推广专员
我负责澳大利亚、新西兰和东南亚
我的工作就是支持这些地区
的开发者
所以我常在这些地区来回跑
尽量在各地帮助大家
在这个演示中我们将重点讲解
使用Niagara获得高端效果
Niagara是虚幻引擎
新的实时视觉效果系统
是我们搞了很长时间的系统
目前它已推出抢先体验版
如果你们想用 现在就可以用
尽管它还没有发行正式版
你们可以转到插件菜单
然后只要输入Niagara……
Niagara 然后启用它就好
明白吗？
关于今天的讲座
我要先强调一些事 明白？
这是非常非常重要的
我今天的目标是让你们
了解可以通过这个系统做成什么
为什么这些工具要以某种方式设置
以及怎样开始使用

English: 
>> Hello, everybody.
My name is Chris Murphy,
and I am an Unreal Engine
evangelist.
I handle Australia, New Zealand,
and southeast Asia,
and my job is supporting
developers across the region.
So, I head between
different areas,
and help wherever I can.
For this presentation, we
are going to be focusing
on high-end effects
using Niagara.
Niagara is Unreal Engine's
new real-time
visual effects system
that we have been working on
for quite a while.
It is currently available
in Early Access,
and if you want to use it,
you actually can do it,
even though it is not
officially released.
You can go to
your plugins menu
and literally just type
in Niagara--
Niagara, and enable it, okay?
Now, for today's session,
I want to stress something
ahead of time, okay?
And this is really,
really important.
My aim for today is for you
to understand what is possible,
why the tools are set up
in a certain way,
and how to start
going about it.

Japanese: 
>> みなさん こんにちはChris Murphyです
Unreal Engineのエバンジェリストです
オーストラリア ニュージーランド 東南アジアを担当していて
デベロッパーをサポートしています
さまざまな領域にまたがって
できることは何でも支援します
このプレゼンテーションでは
Niagaraを使用したハイエンドな
エフェクトに重点を置いています
NiagaraはUnreal Engineの新しい
リアルタイム ビジュアル エフェクト システムであり
かなり前から開発が行われてきました
Niagaraは現時点では早期アクセスで利用可能であり
公式にはリリースされていませんが
実際にご利用いただけます
[Plugins (プラグイン)]メニューを選択し
「niagara」と入力します
[Niagara]の[Enabled (有効)]をオンにします
今日のセッションについて
最初に強調しておきたいことがあります
非常に重要なことです
今日の目的は 
Niagaraでできることは何か
Niagaraがなぜこのような仕組みになっているのか
どのように使い始めるべきか
を理解してもらうことです

Korean: 
그렇다고 제가 매우 천천히 한 단계씩
'이렇게 하시면 됩니다'라고
말씀드리며 진행하지는 않을 겁니다
왜냐하면 저로서는
여러분께서 GDC에서만 얻을 수 있는
내용을 이해하시는 것이
더 바람직하기 때문입니다
언젠가는 유튜브에서
여러분들이 찾아보실 수도 있는
소개 튜토리얼보다는 말이죠
그러니 제가 빛의 속도로
이야기하는 것은
과하게 카페인을 섭취한 저와
좋은 내용을 전해드리려는
또 다른 저의 합작인 셈입니다 아시겠죠?
오늘 세션에서는
앞으로 나아가 보겠습니다
나이아가라 시스템을 만들어 볼 겁니다
제가 여기서 하려는 것은
파티클을 가져다가
여기 주변의 실린더에 스폰시키고
결국에는 그 파티클이
밖에 있는 이 드론으로 갑니다
드론이 날아다니고 있는데요,
저는 드론으로부터 맵을
월드 내의 파티클에 투영하고 싶습니다
멋진 홀로그램 지도가 될 것 같네요
자, 계속하기 위해서는
몇 가지 일을 해야 합니다
먼저 우클릭한 다음 FX로 가서
그리고 이건 솔직히
일반적으로, 이 부분이

Chinese: 
但是我不会进行非常慢的分步讲解
不会详细地说
“你们要这样做”
因为对我来说
最好是让你们
在GDC上明白自己可以实现什么效果
而不是只给你们提供一个简介教程
这样的教程你们也许可以
在YouTube上找到 对吧？
所以如果你们觉得我讲得飞快
那一方面是因为我咖啡因喝多了
另一方面是因为我想
多介绍一些好东西 明白吗？
好，接着说今天的讲座
我们将要创建一个Niagara系统
我的想法是
我们要让一些粒子
在以这个为中心的圆柱体中生成
最后，它们将要来到……
外面的一个小无人机
就是这家伙
它在外面盘旋
我想要在世界场景中从他
投射一个粒子图
所以最后将会是
一幅看起来很酷的全息图
那么为了做到这一点
我需要做几件事
我首先要右键单击
转到FX
说实话……
这里就是

English: 
But I am not going to be
doing a very slow, step by step,
'Here is what you need
to do' kind of thing,
because for me, it is much
better that you understand
what you can achieve from GDC
rather than just
an intro tutorial
that you could probably look up
on YouTube at some point, okay?
So, if I seem like I am going
at a million miles an hour,
it is a combination of me
being both over-caffeinated
and me wanting to kind of get
to the good stuff, all right?
Now, for today's session,
we are going to be going ahead
and we are going to be
creating a Niagara system.
And my idea here is we are
going to get some particles
spawning in a cylinder
around this,
and eventually, they
are going to ...
a little drone outside.
This guy.
So, he is flying around,
and I want to project a map from
him in particles in the world.
So, this is going to become
a sick-looking holographic map.
Now, to go about doing that,
I am going to need
to do a few things.
I am going to begin by
right-clicking and going to FX,
and this is honestly ...
So, this is one of those areas

Japanese: 
ただし 「これの次にこれを行ってください」というように
順を追ってゆっくりと説明することはしません
大切なことは 何ができるのかを 
GDCからみなさんに理解してもらうことであり
いずれYouTubeで参考にできるような
単なる紹介チュートリアルを提供することではないからです
私のペースが速すぎると思われる場合
それは カフェインの摂り過ぎと
素晴らしい機能を紹介したいという気持ちの両方が原因です
今日のセッションでは
Niagaraシステムを作成します
具体的には パーティクルが
この周りで円筒状にスポーンされます
そして これが最終的にどうなるかというと
まず 外に小さなドローンがありますね
このドローンはあちこち飛び回ります
やりたいことは ワールド内で 
ドローンからマップをパーティクル状にして投影することです
最終的にこれは 最高に格好いいホログラフィーマップになります
それに取りかかるには
いくつかやっておくことがあります
右クリックして[FX]を選択します
誰もが
最初に間違えやすいのが

Korean: 
첫 번째 실수를 저지르는
구간 중 하나입니다
처음 나이아가라를 로드할 때
죄송합니다,
콘텐츠 브라우저에서
FX 메뉴를 로드할 때
나이아가라에 관련된
모든 선택지를 보게 됩니다
그렇죠?
처음이라면 굉장히 혼란스러우실텐데요,
걱정 마세요, 저는 모두 다 이해합니다
여기 계신 여러분들은 캐스케이드와
관련된 배경지식이 있으실 텐데요,
모든 것이 하나의 작은 것에
함유되어 있는 데에
익숙하실 겁니다
모든 것이 캐스케이드였죠
나이아가라는 의도적으로
다른 것들로 분리합니다
확장하기가 훨씬 쉬울 뿐 아니라
새로운 것을 추가하기도 훨씬 쉽고
다양한 종류의 시스템 간에
리소스를 공유하기도 훨씬 더 쉽죠
처음에 집중적으로 다룰 것은
아래에 있는
나이아가라 시스템과
나이아가라 이미터입니다
기본적으로 나이아가라 시스템은
월드에 추가되고
파티클을 생성하는 것을
가리킵니다. 아시겠죠?
나이아가라 시스템 안에
나이아가라 이미터가 있습니다
그리고 그 의미는
불꽃 이미터가 있다고
상상해 보겠습니다
연기 이미터도 있고

Chinese: 
大家最早犯错误的地方之一
当他们第一次加载Niagara
——不好意思
当他们第一次
在内容浏览器中加载
他们的FX菜单时
他们会看到这么多
和Niagara有关的东西
对吧？
如果你们是第一次看到
会感到非常茫然
相信我 我完全明白这是为什么
这里的许多人都有使用
Cascade的经验
大家习惯了所有东西
都包含在一个小东西里面
一切都是Cascade
Niagara则是有意把它们分成
普通的东西
这就大大方便了扩展
大大方便了添加新东西
也大大方便了
在不同类型的系统之间共享资源
现在 我们首先需要关注的
就是最下面这个
Niagara系统
和Niagara发射器
基本上 Niagara系统
就是一种被添加到世界场景里
产生粒子的东西 明白吧？
一个Niagara系统
包含若干个Niagara发射器
我的意思是
想象你有一个
用来产生火星的发射器
和一个产生烟雾的发射器

Japanese: 
ここです
コンテンツ ブラウザの
[FX]メニューを
初めて読み込むときに
Niagaraの場合は これらすべてが表示されます
いいですか
初めての場合はとても分かりにくいのですが
その理由は十分わかります
みなさんの多くはCascadeの使用経験があり
何もかもがCascadeという1つの小さな世界に
収まっていることが当たり前でした
Niagaraでは それらが意図的に切り離されているので
拡張や追加がはるかに簡単になり
種類が異なるシステム間での
リソースの共有も非常に簡単になりました
最初に注目するのは
一番下にある[Niagara System (Niagara システム)]と
[Niagara Emitter (Niagara エミッタ)]です
基本的にNiagaraシステムは
ワールドに追加されて
パーティクルを作成するためのものです
NiagaraシステムにはNiagaraエミッタが含まれます
どういうことかと言うと
火花用のエミッタがあり
煙用のエミッタがあり

English: 
where people first
make their mistakes.
When they first load up Niagara,
-- sorry, when
they first load up
their FX menu in the
Content Browser,
they see all of these things
when it comes to Niagara,
all right?
And this is very confusing
if you are first coming into it,
and believe me, I
totally understand why.
A lot of people here are coming
from a Cascade background,
where you are used to everything
being contained
in one little thing,
everything was Cascade.
Niagara intentionally separates
these out into different things,
so it is much easier to extend,
much easier to add new stuff,
and much easier
to share resources
between different
kinds of systems.
Now, the things that we are
going to focus on initially
are the bottom one,
Niagara system,
and Niagara emitter.
So, essentially,
a Niagara system
refers to something that is
being added into the world
and creating particles, okay?
Now, a Niagara system
contains Niagara emitters.
And what I mean by that is,
imagine you had an emitter
for sparks, okay,
and an emitter for smoke,

Chinese: 
还有一个
比方说用于爆炸的发射器
有更好的名词用来描述它
一个Niagara系统可以包含
这所有三种发射器
来产生爆炸 明白吗？
这是非常有用的，
因为这意味着
如果我要再创建一个爆炸
我可以利用我已经得到的烟雾
我可以把它放在那里作为基本烟雾
来得到我在游戏里要得到的外观
而且我可以微调那些数值
来得到特定效果
而这也意味着最后
我做的所有工作都可以保持一致
所以我要创建一个新的
Niagara发射器
我要基于喷泉来创建它
我要称它为
“circular spawner”
因为就像我说的
我们想要创建的是
围绕这里生成粒子的东西
值得一提的是我不需要，
把它作为单独的发射器来做
我可以从一开始就使用喷泉
但是为了演示的目的
这样做方便一些
那么 这就是Niagara
作为它的初始……
哦 等一下 好了
这就是Niagara
你们可以在这里看到
我们有视口

English: 
and an emitter for, like,
the boom bit of an explosion.
There is a better phrase
for that.
A Niagara system would hold
all three of those emitters
to create the explosion, okay?
Now, this would be
really useful,
because it means if I go
to create another explosion,
I can take the smoke
that I have already got,
I can place it in there
as fundamental smoke
for what it looks like
in my game,
and I can tweak those values
for this specific effect.
But it means I end up with
consistency across the board
in all of the things
that I am doing.
So, I am going to create
a new Niagara emitter,
and I am going to base it
on a fountain.
Now, I am going to call
this 'circular spawner',
because as I said,
we want to create something
that spawns particles
around here.
It is worth noting
that I do not need
to do this as a
separate emitter.
I could use the fountain
from the get-go,
but for the sake
of demonstration,
this is just going to be
a little bit easier.
So, this is Niagara,
as its initial--
oh, hang on, there we go.
So, this is Niagara.
You can see here that we
have got the viewport

Korean: 
쿵 하는 폭발 같은 것을 위한
이미터도 있다고 상상해 보죠
더 나은 표현이 있기는 할 텐데요,
나이아가라 시스템은
이 세 이미터를 전부 가진아울러서
폭발 효과를을 만들어낼 수 있습니다
이것은 정말 유용할 수 있습니다
제가 다른 폭발을 만들고자 할 때
이미 기존에 갖고 있는 연기를 가져다
게임상에서 연기 발생 지점으로
보일 만한 곳에
놓으면 된다는 의미이며
특정 이펙트를 얻기 위해 값을
미세조정 할 수도 있기 때문입니다
또한, 제가 하는 모든 일이
결국에는 전체적으로 일관성을
유지할 수 있다는 의미도 되죠
이제는 새로운 나이아가라
이미터를 만들고
베이스는 분수로 하겠습니다
이름은 원형 스포너로
정하도록 하죠
앞서 말씀드렸듯이
주변에서 파티클을 스폰하는
장치를 만들기 위해서입니다
사실, 이 작업을
개별 이미터로 진행할 필요는
없다는 말씀을 드리고 싶습니다
애초부터 분수를 써도 되지만
여러분께 시연해 드리기 위해서는
이 방법이 조금 더 쉬울 것입니다
그래서 이것이 나이아가라입니다
초기 단계의...
아, 잠시만요, 됐습니다
이것이 나이아가라입니다
여기 보시면 뷰포트가 있고

Japanese: 
爆発用のエミッタがあると想像してください
Niagaraシステムは
爆発を作成するための それら3つのエミッタすべて
入っているのです
この仕組みはとても便利です
別の爆発システムを作成する場合に
すでに作ってある煙エミッタを利用できます
これをシステムの基本の煙として使って
爆発の外見を整えることができるのです
値をこのエフェクト用に微調整もできます
またこのような微調整は
全体として一貫性が保たれることになります
さて それでは
Niagaraエミッタを新規作成してみましょう
Fountain (噴水) というテンプレートに基づいて作成します
前に述べたように 周囲に
パーティクルをスポーンさせるものを作成するので
これに「Circular Spawner」という名前を付けます
ここで注目すべきことは
これを個別のエミッタにする必要がないということです
最初からこの噴水を使用することもできますが
デモのために
少し簡単にしています
これがNiagaraです
(言い直して) 
さて これがNiagaraです
ご覧のとおり

Korean: 
오른편에 모듈이 있습니다
밑으로는 타임라인이 있죠
기본적인 작동 방법은
오른쪽에 보시면
여러분들이 보시는 것이
이미터 업데이트와
파티클 스폰
파티클 업데이트일겁니다
위로 스크롤 하면, 이미터 스폰도 있죠
기본적으로 이 블록 각각을
모듈이라고 부르고
이 시스템의 한 지점에서 실행되는
일련의 인스트럭션입니다
맨 위에 있는 이미터 스폰은
이미터 최초 생성 시
지시하는 내용입니다
그리고 이미터가 업데이트될 때마다
조금씩 조금씩
이미터 스폰 인스트럭션도 실행됩니다
파티클이 처음에 생성될 때
파티클 단위로 인스트럭션이
처리가 진행되고
모든 파티클이 업데이트될 때마다
파티클을 위해 업데이트되는
특별한 것이라고 볼 수 있습니다
여기서 주목하고 싶은 점은
여러분이 보시면
파티클이 스폰될 때
속도를 부여받아서
여기 보시는 초기 방출로 나타나고
밑으로 내려가 보면
중력, 견인력
힘과 속도 해결이 있습니다

Japanese: 
左側にはビューポートが
右側にはモジュールがあります
一番下にタイムラインがあります
基本的に この仕組みは
右側に
[Emitter Update (エミッタの更新)]
[Particle Spawn (パーティクルのスポーン)] 
[Particle Update (パーティクルの更新)]があります
上にスクロールすると[Emitter Spawn (エミッタのスポーン)]もあります
これらのブロックのそれぞれがモジュールです
システムでその時点で実行されている
一連の命令です
一番上にある[Emitter Spawn]は
エミッタが最初に作成されるときに実行されます
そして
そのエミッタが Tick 毎に更新されるたびに
それらの命令も実行されます
パーティクルがまず作成されると
これらの命令がパーティクルごとに処理されることになります。
これらの命令がパーティクルごとに処理されることになります。
そしてその後、各パーティクルが更新されるたびに
具体的にはこれらの命令が
そのパーティクルのために更新されることになります
具体的にはこれらの命令が
そのパーティクルのために更新されることになります
ここで注目して欲しいのは
パーティクルがスポーンされるときに
最初の爆発で速度が与えられていて
下の方に下がっていくと [Gravity Force (重力)]
[Drag Force (けん引力)] [Solve Forces and Velocity (力と速度の解決)]があることです

Chinese: 
在右手边有一些模块
在下面有一条时间轴
基本上它就是这样的
在右手边
你们可以看到
我们有发射器更新
粒子生成 粒子更新
如果我向上滚动
还有发射器生成
基本上
这每一个板块都称为一个模块
这就是一系列指令
在系统的那个点运行，
在最上面
发射器生成意味着
当发射器最初创建的时候
做这件事
然后每过一段时间
发射器都会更新
滴答滴答滴答滴答
那也是运行的指令
当粒子初次创建时
这些是要处理的
逐粒子指令
然后每过一段时间
每个粒子都会更新
这些是
为它们而更新的特定的东西
我在这里要重点提的是
你们可以看到当粒子生成时
它会得到一个速度
所以一开始会喷出来
而在下面
你们可以看到 有重力
阻力和
解算力与速度

English: 
on the right hand side.
We have modules.
And down the bottom
we have a timeline.
So, essentially
how this works is,
over on the right-hand side,
you will see that we have
emitter update,
particle spawn,
particle update.
If I scroll up,
we also have emitter spawn.
Basically, every single one of
these blocks is called a module,
and that is a series
of instructions
that is getting run
at that point in the system.
So, the very top,
emitter spawn means
when the emitter
is first created, do this stuff.
And then every single time
the emitter is updated,
tick by tick
by tick by tick,
those are the instructions
that are being run as well.
When the particle
is first created,
these are
the per-particle instructions
that are getting processed,
and then every single time
every particle is being updated,
these are the specific things
that are being updated
for those.
Now, what I want
to focus on here
is you can see that
when the particle is spawned,
it is given a velocity,
which is that initial burst,
and down the bottom, you can see
that we have gravity force,
drag force, and Solve
Forces and Velocity.

Korean: 
그리고 이것은
후행 의존성이라고 불립니다
여기서 노드 하나를 살펴보면,
중력을 보려고 했다면
이게 중력 노드 내부의
모습이라고 할 수 있습니다
나이아가라에 관해 먼저
주의해야 할 점이기도 하죠
이는 여러분이 추가하는 모든 모듈이
자체적으로 만든 커스텀 나이아가라
모듈로 추가될 수 있고에서 굴릴 수 있고
여러분에게 맞게 확장할 수 있지만,
더 멋진 부분이 있습니다
여러분은 노드가 힘을 계산하는
방법은 알고 계실 텐데요,
이와 함께 각각의 모듈은
시간이 지나면서 힘을 계산하고
작동시킵니다
이 노드가 실제로 하는 것은
피직스 포스라는 변수를 찾는 것입니다
존재하지 않을 경우
0,0,0으로 세팅하게 되죠
이게 첫째로 약간 멋진
점이라고 할 수 있습니다
네임스페이스에서 모든 것이
작동하기 때문입니다
모든 것이 임의로 생성될 수 있습니다
제가 히트라고 불리는 변수를 사용한
모듈을 추가하고 싶다면
그 무엇도 제가 추가하는 걸
막을 수는 없고
히트 값으로 다른 것을 하기 위해
많은 모듈을 갖게 되는 것도
막을 수 없죠
또한 히트 값을 다른 곳에
인스트럭션으로써 투입할 수 있는데

English: 
And this is called
a post dependency,
because if I get any node here,
if I was to look at gravity,
this is what the gravity node
is doing under the hood.
And this is the first thing to
note when it comes to Niagara,
and that is that every single
module that you are adding
is something that you can just
roll your own Niagara modules
and extend as you see fit.
But here is the cooler part.
So, you know how
this is calculating force,
and every one of those modules
was calculating force over time
and working it out,
what this node actually
does is it says,
look for the variable
called physics force.
and if that does not exist,
set it to 0,0,0.
And this is the first
little cool thing,
because everything
works in name space.
Everything can be
arbitrarily created.
If I wanted to start
adding some modules
that just used
a variable called heat,
there is nothing to stop me
from doing that,
and then having a bunch
of other modules
that are looking for the heat
value to do something else.
I can also feed
in that heat value
as an instruction
for other things again,

Chinese: 
这叫做后依赖项
因为如果我在这里有个节点
我想要看看重力
这就是重力节点在后台做的事
然后就是说到Niagara
首先应该注意的是
你们添加的每一个模块
你们可以对自己的
Niagara模块进行定制
按照你们认为合适的方式扩展
不过这里还有更酷的地方
你们知道这是计算力的
这每一个模块
都是随着时间在计算力
而这个节点实际做的事
就是图上显示的
查找名为Physics.Force的变量
如果不存在
就把它设为0,0,0
然后这是第一个有点酷的地方
因为所有东西都是在
名称空间里工作的
可以随心所欲创建一切
如果我想要添加一些模块
它们使用一个名叫heat的变量
那么没有什么能妨碍我这么做
然后我可以有一堆其他模块
它们查找heat值来做别的事情
我也可以把这个heat值
作为指令再输送给其他东西

Japanese: 
これは 事後依存関係 (post dependency) と呼ばれます
どういうことかというと
たとえば 重力ノードを開いてみます
重力ノードが内部でどのようなことを行っているか分かりますね
これはNiagaraで一番に注目すべきことなのですが
追加するモジュールはどれも
自分独自のNiagaraモジュールとして
好きなように拡張できるようなものなのです
そして、さらにクールな機能があります
このモジュールが力をどのように
計算しているかご存知だと思いますが、
モジュールそれぞれは
徐々に力を計算して行き結果を出します
このノードで行われていることは
[Physics Force (物理力)]という変数を見つけることです
それが存在しない場合 その変数は「0 0 0」に設定されます
これが最初のちょっとクールな部分です
すべてが名前空間で動作しているからです
すべて自由に作成できます
[Heat (熱)]という変数を使用する
モジュールも自由に追加できます
モジュールも自由に追加できます
他にも[Heat]の値を使って何か他のことを行う
モジュールも多数追加することができます
その[Heat]の値を 他のことをやらせる命令として
入力に使うこともできます

Japanese: 
これは 素晴らしい機能だと思います
さて この[Gravity Force]を見ると
実際にポスト依存関係をもっています
この[Required Dependencies (必須依存関係)]を見ると
力と速度を算出してくれるものを必要としています
この[Required Dependencies (必須依存関係)]を見ると
力と速度を算出するものを必要としています
それは この下のほうにあります
このノード自身は 力を追加しています
オブジェクトの位置に
力を加えてもらいたい他のノードに対して
オブジェクトの位置に
力を加えてもらいたい他のノードに対して
速度の変化を算出してあげる役割をもっているのです
速度の変化を算出してあげる役割をもっているのです
事前依存関係と事後依存関係が利用できるのは
すばらしいことです
独自のチェーンを作り出すことができます
たとえば「これは重要な部分ですが このようなエミッタには
これほど大きなシステムが必要なのですよ」
たとえば「これは重要な部分ですが このようなエミッタには
これほど大きなシステムが必要なのですよ」
という感じでチェーンを作れます。
それでは
目標のものを使っていきましょう
まず 力と速度に関係するものを除去しておきます
パーティクルのボールだけが残っているので
この球体の位置も取り除きます
今は目が詰まった球体にスポーンされていますが
代わりに [Particle Spawn] に

Korean: 
제 생각엔 꽤 재미있는 것 같습니다
자, 여기 중력을 보면
자체적으로 후행 의존성을
가지고 있습니다
여기 필수 의존성이 보이시나요?
더 나아가 보면
힘과 속도를 해결할 무언가가
제게 필요하다고 말하고 있습니다
그리고 아래를 보시면
저희가 이미 갖고 있다는 게 보이시죠
기본적으로 이 노드는
힘을 추가하는 노드입니다
하지만 결국에는 저는 다른 노드가
필요하게 됩니다
오브젝트의 포지션 자체에
힘을 가해 달라고
요청하는 노드 말이죠
그래서 속도 변화를
계산하는 것입니다
그래서 선행 의존성과 후행 의존성은
아주 멋진 일입니다
여러분만의 연쇄 사슬을 만들어서
이 부분이 중요한 부분이지만
조금 큰 시스템이라서
이런 종류의 이미터가 있어야 한다고
지시하는 거죠
그렇게 전부 지시한 후에
실제로 진행하면서
힘과 속도에 관한 모든 것들은
제외하도록 하겠습니다
그러면 파티클 입자 하나만
남겨진 게 보이실 텐데요
이제는 이 구체 위치도
없애보겠습니다
현재는 아주 타이트한 구체를
스폰하는데요
그 대신에 실린더 위치를 추가해서

Chinese: 
我认为这是很棒的
现在， 我来看看这里的重力
实际上它本身
也有一个后依赖项
看见这个必要依赖项了吗？
它下面说
我需要有个东西来解算力和速度
在下面 你们可以看到
我们就有一个这样的东西
因为这个节点基本上就是在说
我是添加力的
不过最后我还需要某些节点说
你能不能帮我个忙
把力加到物体本身的位置上？
你们知道
也就是算出速度变化
所以 有前依赖项和后依赖项
是一件很酷的事情
你们可以组织自己的链条 说
瞧 这是个很重要的部分
不过这是个大得多的系统
我希望这种发射器能有这种系统
好 说了这么多以后
我要接下去讲后面的
我会略去所有
跟力和速度有关的部分 好吗？
你们可以看到
我们只剩下一团粒子了
现在 我还要除去这个球体位置
目前它只是在非常狭窄的球体
里生成粒子
而我想要给我的粒子生成

English: 
which I think is
pretty exciting.
Now, if I look at the
gravity force here,
it has actually got itself
a post dependency.
See this required dependencies?
This goes ahead and says,
I need something that
solves forces and velocity.
And down the bottom, you can see
that we have actually got that.
Because basically, this node
says, look, I am adding force,
but eventually I need
some sort of node that says,
can you do me a
favor and add the
forces to the object's
position itself?
You know, work out
that velocity change.
So, having predependencies
and post dependencies
is a pretty cool thing.
And you can make up
your own chains to say,
look, this is an important part,
but it is kind of this
much bigger system
that I expect this kind
of emitter to have.
Now, after saying all of that,
I am actually going to go ahead,
and I am going to strip
out everything to do
with force and velocity, okay?
And you can see that we are left
with just a ball of particles.
Now, I want to also get rid
of this sphere location,
which is currently just spawning
them in the very tight sphere,
and instead, I want to add
a cylinder location

English: 
to my particle spawn.
Now, it is a little hard to see
what is going on right now,
so I am just going to crank
this number up.
You can see here
that the particles are spawning
inside of a cylinder
that we created, okay?
Now, remember that
what I want to eventually create
is something that is
going to fit in a ring
around this mesh in
the world, okay?
Now, to do that,
what I need to do is make sure
that the measurements
that we have here
are something that works.
Now, I can go up to my viewport,
and a nice little trick
that you can do that most people
are unaware of is,
if I was to look
at the orthographic viewport
and hold down the middle mouse
as a button,
this actually becomes a ruler.
And I can see that
this is roughly
570 centimeters
in radius, okay?
A lot of people are just unaware
that that is a thing,
and that is fair enough.
It is a little hidden.
So, I have gone ahead,
I have seen where that is,
I see that it is 470,
so I am just going to read that
in as my default value.
I could override this later,
but I am just doing it.
I am also going to go ahead
and shrink this cylinder down.

Chinese: 
添加一个圆柱体
现在要看明白发生了什么事
有点困难
所以我要把这个数字调大
你们可以在这里看到 粒子正在
我们创建的圆柱体内部生成 对吗？
别忘了
我最终想要创建的
是能够放进一个圆环里的东西
而这个圆环就在
世界场景里的这个网格体周围 明白？
现在 为了实现这个目的
我需要做的就是确保
我们在这里使用的尺度
是可行的
我可以转到我的视口
这里有一个很好的小诀窍
大多数人都不知道可以这么做
如果我查看正交，视口
并且按住鼠标中键
这实际上就会变成一个标尺
然后我就可以看到 这东西
半径大约是570厘米 对吧？
许多人都不知道这个诀窍
这也很正常 它有点隐蔽
然后我继续
我已经看到了它在哪里
我看见它是470
所以我就把这个作为默认值读取
我可以在以后覆盖它
不过现在就这样
然后我缩小这个圆柱体

Japanese: 
[Cylinder Location (シリンダー位置)]を追加します
今何が起きているのかが少し分かりにくいので
この数値を大きくしてみます
作成したシリンダーの内側で
パーティクルがスポーンされていることが分かります
最終的に作成したいのは
ワールド内のこのメッシュの周りで
輪になって収まるものです
そのためにやるべきことは
ここの寸法が
機能するようにすることです
ここで ビューポートに移動して
あまり知られていない ちょっとしたコツをお見せします
正投影 (orthographic) ビューポートを表示している状態で
マウスの中ボタンを押したままにすると
これが定規になります
そして この半径が約470センチメートル
であることが分かります
これに気付かない人が多いのも
もっともです
ちょっと隠れていますよね
さて その位置は
470なので
それをデフォルト値として読み取ります
この値は後で上書きできますが 今はこうしておきます
さらに このシリンダーのサイズを小さくします

Korean: 
파티클을 스폰하겠습니다
지금은 무슨 일이 벌어지는지
알기 힘드실 텐데요
그래서 이 숫자를 높여 보겠습니다
여기 보시면 파티클이
저희가 만든 실린더 내에서
스폰되는 게 보이실 겁니다
제가 최종적으로 만들고자 하는 것은
이 월드의 이 메시에
고리 모양으로 딱 맞는 것이라는걸
기억하시죠?
그러기 위해서는 확실하게
여기 있는 측정값이
제대로 작동해야 합니다
뷰포트로 가서 작은 트릭을
보여드리겠습니다
대부분의 분이
잘 모르시는 건데요,
직각 뷰포트를 보면서
마우스 가운데 버튼을 누르면
길이를 재는 자가 됩니다
이것은 반경이 대략
570센티미터 정도로 보이네요
많은 분이 이 기능을 잘 모르십니다
그러실 만도 합니다
약간 숨겨진 기능이거든요
진행해서 어디 있는지 보고
470이라는 것을 확인했습니다
그래서 이걸 디폴트 값으로 읽겠습니다
나중에 덮어쓸 수 있지만
그냥 하는 겁니다
계속해서 이 실린더를
축소시켜 보겠습니다

Korean: 
저는 이 파티클이
위아래에 걸쳐 스폰되는 것이 아니라
외곽을 따라서만 스폰되도록
만들고 싶습니다
표면만 활성화하면
파티클을 시스템 표면에서만
스폰하게 됩니다
그리고 엔드 캡을 비활성화하면
이렇게 작동하는 게 됩니다
파티클이 멋진 고리로 스폰하는게
잘 보이시죠?
이 지점에서 저장하고
여기서부터는
나이아가라 시스템에서 진행하겠습니다
이름은 홀로그램 맵 시스템이라고
하도록 하죠
제가 이것을 월드에 드롭시켜서
여기 보시는 것과 같은 포지션으로
세팅하고 싶다면
우클릭하고 복사한 후
이쪽으로 가서
붙여넣기 하는 겁니다
이제 홀로그램 시스템을 열면
작동하는게 보이실 겁니다
자, 이 파티클에 대한 첫 번째 문제는
크기가 크다는 건데
하지만 지금 당장은 괜찮습니다
결국 하고 싶은 것은
텍스처를 투영하는 것입니다

English: 
Now, I do not want
these particles
spawning across the tops
and bottoms.
I only want them
spawning around the outsides.
So, if I enable surface only,
this will now only spawn them
on the surfaces of the system.
And if I disable end caps,
we are now left with something
that is doing this, okay?
So, see how it is spawning all
of those particles in a nice ring?
I am going to hit save
at this point,
and I am actually going
to go ahead
and work on it from this point
as a Niagara system
that I am going to call
'holographic map system'. Okay?
Now, if I was to drop this
into the world,
I would want to set its
position to the same as this.
So, I am just going to
right-click, copy,
go to you, paste. Okay?
Now, if I open up
the holographic system,
we can see that it is working.
So, the first issue I have got is
those particles are pretty big,
but that is okay for the time
being for what we are doing.
Now, what I want to do
is eventually project a texture.

Chinese: 
现在我不希望这些粒子
从上到下都生成
我只想要它们在外面一圈生成
所以我启用“仅表面”
这样它们就只会在系统表面生成，
然后我再禁用端盖
于是我们就得到了这样的东西
对吧？
看到了吧？
所有粒子都沿一个漂亮的圆环生成
这时我按下“保存”
我要继续操作
从此刻起把它作为
一个Niagara系统来处理
我要称它为
“HolographicMap.System”
现在如果我把它放进世界场景里
我会把它的位置
设成和这个一样
所以我就右键单击 复制
转到这里粘贴 对吧？
现在如果我打开
Holographic系统
我们可以看到它正在生效
那么我遇到的第一个问题就是
这些粒子都很大
不过对于我们目前做的事来说
这没关系
我最终是想要投射一个纹理

Japanese: 
これらのパーティクルが
上面下面間の中身にはスポーンされず
表面だけにスポーンされるようにしたいので
[Surface Only Band Thickness (サーフェスのみ・厚み調整付き)]を有効にすると
システムのサーフェス上にのみスポーンされるようになります
[Use Endcaps In Surface Only Mode (サーフェスのみモードで上下の蓋を使う)]をオフにして上下の蓋を無効にすると こうなります
[Use Endcaps In Surface Only Mode (サーフェスのみモードで上下の蓋を使う)]をオフにして上下の蓋を無効にすると こうなります
これらのパーティクルはきれいなリングになりましたね
この時点で[Save (保存)]をクリックし
これから
Niagaraシステムに取りかかります
「HolographicMap_System」という名前にします
これをワールドにドロップして
これと同じ位置に設定します
右クリックしてコピーし
貼り付けます
このホログラフィック システムを開くと
動作していることが分かります
1つ目の問題は これらのパーティクルがかなり大きいことですが
今はこれで構いません
さて 私がやろうとしていることは 
最終的にテクスチャを投影することです

English: 
I want to have these particles
all representing a point
in a texture, okay?
I want them
to all take that data.
Now, to do that,
I want you to imagine
that I have got a texture, okay?
The coordinate of this point
in the texture is 0,0.
And the coordinate in this point
of the texture is 1,1, okay?
So, X and Y are from 0 to 1.
Everyone is with me?
Now, I want every particle
to have a value.
So, what I am going to do is,
I am going to assign
every particle
on spawn a random value
between 0 and 1 on the X axis,
and a random value
between 0 and 1 on the Y axis.
And to do that, all I need to do
is go to particle spawn
and say, hey, I want to
have a new Vector 2D,
and it is going to be called
particles.uv.
And I want that to be set to
a random value between 0 and 1.
Now, we cannot see
that doing anything yet,
because at the moment,
this is literally just
an arbitrary value
that is being stored.
Now, one cool thing you can do

Chinese: 
我想让这些粒子
全都表示纹理中的一个点，明白吗？
我希望它们都采用那些数据
为了实现这个目的
我请你们想象一下
我有一个纹理
纹理中这个点的坐标是0,0
而纹理中这个点的坐标是1,1 明白？
所以X和Y是从0到1
大家都懂我的意思吗？
现在我希望每个粒子都有一个值，
所以我要做的事就是
，
生成X轴上0到1之间的一个随机值
和Y轴上0到1之间的一个随机值
为了实现这个目的，
我只需要转到粒子生成
然后说 嘿 我想要一个新的矢量2D
它叫做particles.uv
我想把它设置为0到1的随机值
现在我们还看不到这有什么用
因为此时此刻
这就是一个被存储的
随机值
现在你们可以做一件很酷的事

Korean: 
이 파티클이 전부
텍스처의 한 지점을 나타내도록
하고 싶습니다
파티클 전부가 그 데이터를
가져오기를 원하는 거죠
그러기 위해서는
일단 텍스처가 있다고
상상해 주시면 좋을 것 같습니다
텍스처의 이 점 좌표는 0,0입니다
텍스처의 이 점 좌표는
1,1이라고 하는 겁니다
X축과 Y축이 0에서 1까지 있는 겁니다
잘 따라오고 계시죠?
이제 모든 파티클에
값을 부여하고 싶습니다
그래서 지금부터 할 것은
스폰에 있는 모든 파티클에
X축에서 0부터 1 사이의 랜덤 값
Y축에서 0부터 1 사이의 랜덤 값을
할당하는 겁니다
그러려면 제가 할 일은
파티클 스폰으로 가서
새로운 벡터 2D를 만들고
이름을 particles.uv라고 짓겠습니다
그리고 0과 1 사이의 랜덤 값을
세팅하게 하는 겁니다
뭔가 실행되는 게
눈에 보이지는 않습니다
왜냐하면 현재로서는
말 그대로 랜덤값이
저장만 되는 것이기 때문입니다
여러분이 할 수 있는
한 가지 멋진 일은

Japanese: 
これらのパーティクルすべてが
テクスチャの点を表すようにします
そのデータがパーティクルにすべて取り込まれるようにします
そのためには まず
ここにテクスチャがあると想像してください
テクスチャでのこの点の座標は「0,0」であり
テクスチャでのこの点の座標は「1,1」です
XとYは0～1の範囲です いいですね？
次に 各パーティクルに値を設定します
スポーン時に
各パーティクルに
X軸で0～1の範囲のランダム値を割り当て
Y軸でも0～1の範囲のランダム値を割り当てます
そうするには [Particle Spawn (パーティクルのスポーン)]に移動し
[Vector 2D (ベクター 2D)]を新規作成して
「Particles.UV」という名前にします
それが0～1の範囲のランダム値に設定されるようにします
この時点では
任意の値が格納されているため
何もまだ確認できません
何もまだ確認できません
ここで便利なのは

English: 
is if you go to your attribute
spreadsheet and hit capture,
this actually gives you a
listing of every single particle
that currently exists,
and every single value
that all of them are storing.
And if I were to scroll across,
I would see that
the UVX and UVY values
are actually being held
right there, which is fantastic.
Now, with that in mind,
my next thing to do--
excuse me, my next thing to do
is to go ahead
and just view them in the world,
just so I can see
what is going on.
And a nice way for me to do that
is if I wanted to,
I can actually go ahead
and I can set the position
in the spawn directly.
So, if I was to set
the position,
I actually can override this
with anything I want.
But one really nice little
thing here is if you use HLSL,
if you do not want to roll
a full-on node graph
to do something very small,
or, like, a dynamic input script
for something small,
you can always just literally
type
straight HLSL into this and say,
I want this to be
a three-dimensional position

Japanese: 
[Attribute Spreadsheet (属性スプレッドシート)]に移動して
[Capture (キャプチャ)]をクリックすると
今存在するすべてのパーティクルと
すべてのパーティクルのそれぞれに格納されている1つの値の
一覧が表示されますそして 横にスクロールすると
[UV X]の値と[UV Y]の値が
そこに保持されていますね すばらしいです
このことを念頭に置いて
次にやることは
それらをワールドで表示することです
これで 何が起きているのかを確認できます
便利な方法として
[Particle Spawn]で直接
位置を設定できます
位置を設定することで
この値を 好きな値で上書きできます
ここで ちょっと便利なのが HLSLの式を使用することです
完全なノードグラフに進んで
非常に細かいことや
細かいことのための動的入力スクリプトなどを行わない場合は
ここに HLSLの式を
そのまま入力することができます
この値を Z軸が0であり

Korean: 
어트리뷰트 스프레드시트로 가서
캡처를 누르면
현재 존재하는 모든 파티클을
리스트로 보여주고
각 파티클이 저장하는 모든 값도
리스트로 보여준다는 점입니다
옆으로 스크롤 해 보시면
UVX와 UVY 값들이
실제로 존재하는 것을 보게 되죠
환상적입니다
그 점을 유념하시고
다음에 할 일은
죄송합니다
다음으로 할 일은
파티클을 월드에서 보는 겁니다
어떻게 진행되고 있는지
볼 수 있도록 말입니다
월드에서 보는 좋은 방법은
원한다면 그냥 가서
직접 스폰 내에서
위치를 지정하는 겁니다
위치를 세팅하려면
사실 이건 제가 원하는 거로
덮어쓰기 해도 되는데
여기에서 보여드릴 것은
여러분이 HLSL을 사용하신다면
여러분이 아주 작은 걸 하려고
극단적인 노드 그래프를
굴리고 싶지 않다면
혹은 사소한 거로 다이내믹 인풋
스크립트를 굴리고 싶지 않으시다면
그저 말 그대로 여기에
HLSL을 입력하고
particles.uv 사이에
Z축이 0으로 되어있는

Chinese: 
那就是转到属性电子表格
然后按“捕获”
你就会看到一个列表，列出了
当前存在的每一个粒子
和每一个值
它们全都是存储中的
如果我滚动查看
会看到UVX和UVY值
实际上就存储在这里 很棒
现在 记住这一点以后
我要做的下一件事……
不好意思 我要做的下一件事是继续
在世界场景里查看它们
这样我就可以看到发生了什么
要这样做有一个好办法
如果我愿意 我可以转到这里
我可以直接在生成中设置位置
如果我要设置位置
其实我可以用我
需要的任何东西覆盖这个
不过这里有一件很棒的事
如果你们使用HLSL
如果你们不想
展开完整的节点图表
来做一些非常小的事
或者用动态输入脚本来做一些小事
那么你们只要
直接在这里输入HLSL 说
我希望这是个三维位置

Korean: 
3차원 위치를 설정하고
400을 곱해줍니다
그러면 모든 값을
공간상 위치에 부여할 수 있습니다
방금 무슨 일이 일어난 건지
궁금해하실 분들을 위해 말씀드리면
모든 파티클이 0과 1 사이의
값을 가지고
값을 400배 증가시키면
이제 파티클의 값은 0과 400 사이에
형성되는 겁니다
그리고 값을 공간상 위치가
0과 400 사이가 되도록 세팅하면
매핑 결과는 작고 멋있는
사각형이 됩니다
이게 제일 먼저 하려고 했던 부분이고
다음 단계로
더 진행하기 위해
파티클 업데이트에 가서
텍스처 하나를 샘플링하겠습니다
샘플 텍스처에는 두 가지가 필요합니다
할당된 이미지에 대해 잘 알아야 하고
공간상 위치의 UV에 대해서도
알아야 합니다
그러기 위해서 그냥 진행해 보죠
UV는 방금 만든 변수입니다
Particles.uv 이고, 텍스처는

English: 
between particles.uv with 0
on the Z axis,
multiplied by 400,
and I can then assign
all of those values
to their position in space.
For anyone that is wondering
what just happened,
what happened was,
if they have all got a value
between 0 and 1, if I multiply
that value against 400,
they now all have a value
between 0 and 400.
And if I set that value
between 0 and 400
to be their position in space,
we end up mapping them
into a nice little square.
So, that is the first thing
that I want to do.
And the next thing
that I am going to do
is I am going to go ahead,
and I am going to go
into my particle update,
and I am going to sample
a texture, okay?
Now, sample texture
requires two things.
It needs to know the image
that is being assigned,
and it needs to know the UVs of
that position in space.
So, to do this, I am
literally just going to go,
UV is the variable
that we just created.
Particles.uv. And the texture
is going to be the--

Japanese: 
Particles.UVの範囲に400を乗算した
3D位置にします
それらのすべての値を
空間内の位置に割り当てることができます
どういう意味なのか疑問に思っている方のために説明すると
0～1の範囲の値が設定されていて
その値に400を掛けると
0～400の範囲の値を持つことになります
そして その0～400の範囲の値を
空間内の位置になるように設定すると
その位置が小さい正方形にマッピングされることになります
これが まずやりたかったことです
そして
次にやることは
[Particle Update (パーティクルの更新)]に移動して
テクスチャをサンプリングすることです
[Sample Texture]には2つのことが必要です
割り当てられている画像と
空間でのその位置のUVが分かっている必要があります
そのために
UVについては さきほど作成した変数
Particles.UVを選択します
そして テクスチャは

Chinese: 
在particles.uv和Z轴上的0之间
乘以400
然后我可以把所有那些值
分配到空间中它们的位置
可能有人不明白刚才发生了什么事
刚才发生的事就是
如果他们都有一个
0到1之间的值
如果我把那个值乘以400
那么它们就都有了0~400的值
如果我把那个0到400的值
设置为它们在空间中的位置
那么最终我们就会把它们
映射到一个漂亮的小方块中
这就是我要做的第一件事
我要做的下一件事
就是我要继续
我要转到粒子更新里面
我要对纹理采样 对吧？
纹理采样需要两个条件
它需要知道分配的图像
它还需要知道空间中那个位置的UV
因此我就要这样做
UV就是我们刚才创建的变量
Particles.uv
而纹理就是……

English: 
it is going to be the texture of
whatever we want to have there.
So, if I were to type in
demo, demo logo would do.
Now we're not going to see a
result immediately
for two reasons.
One is for anything
to handle texture data,
we need to go ahead,
and we need to say to it,
you are being processed
on the GPU.
So, I am going to scroll up
to the top,
and I am going to say,
you are no longer on the CPU,
you are on the GPU, okay?
Just select that.
Now, the next thing
that I need to do
is I am going to scroll down,
I will just keep you running.
The next thing I am going to do
is I need to scroll down
and I need to actually set this
to be the color.
This is one of the mistakes
that a lot of people
have when they are coming
from Cascade into Niagara.
What they often do
is they assume
that if they drop a module,
it will just do something
related to what it was,
because that is how Cascade
had to work.
Sample textures should just be
setting the color, right? No.
Because we could use that data
for all sorts of things,
and we do not necessarily
want it to override color.
Instead,
if I open up sample texture,
you can see
that what it is doing

Japanese: 
ここにあるテクスチャをどれでも使用できます
「demo」と入力して「DemoLogo」を選択します
2つの理由で
結果をすぐには確認できません
1つ目の理由は テクスチャデータを
処理するもののためです
GPUで処理されるように
上部までスクロールして
現在選択されているCPUではなく
GPUで処理するためGPUを選択します
(これは
実行したままにしておきます)
次に 下にスクロールして
これに色を設定します
CascadeからNiagaraに移行した場合に
間違える人が多いのですが
あるモジュールを使うときに
Cascadeの場合と同様に
そのモジュールが動作すると
想定している人がよくいます
サンプル テクスチャは色を設定するだけでよいのでしょうか？いいえ。
このデータはあらゆる類の事柄に利用できるため
必ずしも色を上書きするためだけのものではありません
実際 [Sample Texture]を開くと
[SampledColor]の値と

Korean: 
원하시는 텍스처로 하시면 됩니다
데모를 입력해서
데모 로고면 충분하겠죠
결과가 바로 나타나지는 않는데
두 가지 이유 때문입니다
첫 번째로는, 텍스처 데이터를 다루려면
어느 경우에서든지
GPU에서 처리되고 있다는 것을
인지시켜야 하기 때문입니다
그래서, 저는 위로 스크롤 해서
더 이상 CPU가 아니라
GPU에서 처리되게 할 겁니다
저걸 선택하세요
두 번째로 할 일은
스크롤을 내려서
이건 계속 실행시키도록 하죠
다음으로 할 일은 스크롤을 내려서
색상을 세팅하는 겁니다
이 부분에서 많은 분이
캐스케이드에서 나이아가라로 넘어오시면서
자주 실수하시는 부분입니다
모듈 하나를 드롭하면
원래 관련되어 있던 것들을
그냥 실행할 거로 추측하는 거죠
그게 캐스케이드의 작동 방식이니까요
샘플 텍스처는 그저 색상 설정에만
관련이 있을까요? 아닙니다
그 데이터는 많은 목적으로
사용할 수 있고
텍스처로 단지 색상만
덮어씌우고자 하는 것은 아닙니다
그 대신 샘플 텍스처를 열면
보시다시피 그 기능은

Chinese: 
它就是我们希望放在这里的任何纹理
所以我就在这里输入demo
demo.logo就好
现在我们不会
马上看到结果
这有两个原因
一是要让任何东西处理纹理数据
我们需要进行操作
我们需要告诉它
你是在GPU上受到处理的
所以我要向上滚动到顶部
然后我要说
你不会在CPU上了
你在GPU上 明白吗？
就这样选择
现在我需要做的下一件事
就是我要向下滚动
我让你保持运行
我要做的下一件事就是向下滚动
我需要把这个设置为颜色
这里就是许多人
从Cascade转到Niagara时
会犯错的地方之一
他们往往认为
如果他们放下一个模块
它就会做和它有关的事情
因为Cascade就是这样工作的
采样纹理应该设置颜色 对吧？
不对
因为我们可能把那些数据
用于各种事情
我们不一定希望它覆盖颜色
如果我打开采样纹理
你们可以看到它做的

English: 
is it is setting the value
of sampled color and sampler UV.
So, it is actually
getting that information
and storing it inside the module
so that anything else can
go ahead and interact with that.
The reason that is really useful
is that if I get this,
and I look at my system,
if I move this above
the color setting,
there is nothing to stop me on
the color from overriding
that with the one
that we just brought in, right?
So, if I said access
sample color,
this will now sample them
according to the texture
that we are looking at.
It is going to bring the R, G,
and B in.
All right, that is kind of cool,
but let us do something better.
First off, if I bring in any
colored texture as well,
you can see that
it is going to bring in
all of that color data,
too, right?
Okay, that is
kind of interesting.
But, remember that drone
that I showed you earlier?
So, that drone that
I showed you earlier, this guy,
actually has a render target
stuck to the bottom of him.

Korean: 
샘플링된 색상과 샘플러 UV의 값을
설정하는 것입니다
그래서 실제로는 그 정보를 가지고
모듈 안에 저장해서
다른 것들이 그 정보와
상호작용하도록 하는 겁니다
그게 유용한 이유는
시스템을 보면서
색상 세팅을 위로 움직이면
아무런 제약없이 저 색상을
저희가 방금 가져온 색상으로
덮어씌울 수 있습니다
그래서 샘플 색상에 액세스하면
우리가 지금 확인하는 텍스처에 따라
샘플링할 것입니다
R, G, B값을 가져오는 것입니다
좋습니다, 꽤 멋지긴 하지만
더 좋은 것을 해 보겠습니다
먼저, 색깔 있는 텍스처를 가져오면
색상 데이터도 가져오는 것이
보이실 겁니다
그렇죠?
약간 흥미로운데요
제가 전에 보여드렸던
드론 기억하시나요?
제가 보여드린 드론, 이 녀석은
사실 드론 밑에 렌더링 타깃이
붙어 있습니다

Chinese: 
是设置采样颜色和采样器UV
的数值
所以它实际上就是获取那些信息
把它存储在模块中
这样其他所有东西都可以
继续并与它交互
它之所以非常有用
是因为如果我获取了这个
然后看一下我的系统
如果我把这个移动到颜色设置上方
那么没有什么能够阻止我
在颜色方面
用我们刚才带进来的颜色覆盖
明白吧？
所以如果我访问采样颜色
现在就会对它们
按照我们看到的纹理采样
这样就会把R、G和B带进来
好 这样很不错
不过让我们来做些更好的
首先 如果我同时也带进来了
任何有颜色的纹理
你们可以看到 它将会把
所有颜色数据也带进来 对吗？
好 这有点意思
但是 还记得我前先给你们看的
那个无人机吗？
我先前给你们看的那个无人机
就是这家伙
实际上它底下
带有一个渲染目标

Japanese: 
[SamplerUV]の値が設定されていることが分かります
その情報が実際に取得されて
モジュール内に格納されるので
他のものは その情報を利用できます
これが本当に便利である理由は
[Sample Texture]をつかんで
[Color (色)]設定の上に移動すると
取り込んだ情報で
色を自由に上書きできます
そのため [SampleColor]にアクセスすると
表示されているテクスチャに従って
サンプリングされて
R G Bの値が取り込まれます
確かに これはある程度便利ですが 
もっと便利な使い方があります
まず 色付きのテクスチャを取り込むこともできます
その色データすべてが
取り込まれていることが分かりますね
これはそこそこ 興味深いことですが
先程お見せしたドローンを思い出してください
これです 
このドローンには
下部にレンダーターゲットが
くっついています

English: 
And what that means is that
if I look at this,
that is an image
that is constantly being created
by the drone as it flies around.
Come on, buddy. Start moving!
There we go.
So, you can see here
that that has actually got
a drone flying around,
capturing that render
target, okay?
So now, let us get A and B
and, like,
put them together, all right?
So, let us look at this
Niagara system that we have got,
and say,
hey, what if the texture here
was actually
the camera texture, okay?
There, do you see that there?
I am going to enable real-time,
so it is a little bit
easier to see.
So, it is a little hard to see,
but see the yellow dots
that are starting to appear?
The blue dot here?
As the drone is moving, it is
actually updating the texture
according to the information
that we are seeing, okay?
Now, this is going to be
more visible
if I were to go ahead
and shrink these particles down.
But for the time being, I just
want you to understand it.
Because here is what
we have got now.
We now have particles
representing a texture, okay?
And RGB of this texture
are the color data.
But, here is the cool thing.

Chinese: 
也就是说 如果我查看这个
那就是一幅图像
是无人机一边飞行
一边不断地创造出来的
来吧 哥们 开始移动！
有了
所以你们可以在这里看到
确实有一架无人机一边飞
一边捕获那个渲染对象 对吧？
现在 让我们获取A和B
然后把它们放到一起 明白？
让我们看看我们这个
Niagara系统
然后说 嘿
假如这里的这个纹理
实际上就是摄像机纹理
那会怎样？
那里 你们看到那里了吗？
我来启用实时
方便你们看到
要看到它有点难
不过你们看见
那些黄点开始出现了吗？
这里的蓝点呢？
在无人机移动的时候
它实际上在
按照我们看到的信息更新纹理
明白吗？
如果我缩小这些粒子
这就会更加明显一些
不过现在我只需要你们理解
因为这就是我们现在拥有的
我们现在有表示纹理的粒子了
对吧？
这个纹理的RGB就是颜色数据
不过这里有件很酷的事

Japanese: 
このレンダリング ターゲットを見てみると
ドローンが飛び回り
それによって常に画像が作成されています
さあ移動し始めます
これで
ドローンが飛び回って
レンダーターゲットの内容を
キャプチャしているのです
さて ここで
2つのシステムを結合させてみましょう
まずNiagaraシステムを開きます
ここに設定されているテクスチャが
先ほどのカメラによるテクスチャなら 
どうなるでしょうか
(リアルタイムを有効にすると
少し見やすくなります)
少し分かりにくいですが
黄色いドットが見え始めていますね
ここに青色のドットがあります
ドローンが移動するにつれて
見える情報に従って 
テクスチャが実際に更新されています
パーティクルのサイズを小さくすると
もっとよく見えるようになりますが
今のところは
次のことを理解しておいてください
ここにパーティクル システムがありますが
パーティクルでテクスチャを表していますね
このテクスチャのRGBは色データですが
クールなことがあります

Korean: 
어떤 의미인지 말씀 드리자면,
제가 이것을 보면
드론이 이리저리 날아다니면서
이미지 하나를 계속해서 만든다는 겁니다
이리와 이 녀석, 움직여 봐!
됐습니다
그래서 여기를 보시면
실제로 드론이 날아다니면서
렌더링 타깃을 캡처하는 것이
보입니다
자 그럼, A와 B를 가지고
합쳐 보겠습니다
아시겠죠?
그러면 나이아가라 시스템으로 돌아가서
여기 적용된 텍스처가
사실은 카메라 텍스처라고 하면
어떻게 될까요?
보이시나요?
실시간을 활성화해서
여러분들이 조금 더 보기 쉽게 하겠습니다
잘 안 보이시겠지만
노란 점이 나타나기 시작하는 게
보이시나요?
여기 파란 점도요
드론이 움직이면서
저희가 보고 있는 정보에 따라
텍스처를 업데이트 하고있는 겁니다
제가 계속 진행하면서
이 파티클을 축소시키면
더 잘 보일 겁니다
하지만 당분간은 이대로 두고
여러분께서 이해하셨으면 좋겠습니다
왜냐하면 현재 상황을 보시면
이제 텍스처를 나타내는 파티클이 있고
이 텍스처의 RGB는 색상 데이터입니다
하지만 여기 멋진 것이 있는데

Japanese: 
アルファチャンネルが深度を表しているのです
実際にはカメラからの
各パーティクルの距離を表しています
それがクールである理由は
使用しているレンズの種類が
分かっていれば
その色をワールド空間に自由に再投影できるからです
たとえば この角度であれば
この距離になり
パーティクルはこの位置にあるとわかります
ここまでは理解できていますか？
すばらしい機能ですね
実際やってみましょう
[Particle Update]に移動して
[Recreate Camera Projection (カメラ投影の再作成)]を追加して
カメラの再投影をさせます
まず 最初に[Depth Value (深度の値)]を
設定する必要があります
[Depth Value]はピクセルの距離になります
この値はすでに算出されていましたね
[LinearColor (リニアカラー)]に
値が格納されているのでした
その値はアルファチャンネルにあります
そこで 無作為にサンプリングしたものから

Chinese: 
阿尔法信道
阿尔法信道代表深度
所以实际上阿尔法信道代表了
每个像素到摄像机的距离
为什么我说这件事很酷呢
如果我知道大小……
如果我知道我们使用的镜头类型
那就没有什么能阻止我把那个颜色
重新投射到场景空间中
我只要说 你是这个角度
所以 你的距离就是这么多
所以 你的粒子就在这个位置
大家明白我的意思吗？
所以这真的很酷
因为我如果继续
通过粒子更新来做那件事
我要你现在重新投影摄像机
它需要知道的第一个东西
是深度值 对吧？
那么深度值就是像素的距离
这个我们已经知道了
因为我们知道有一个数值
存储在线性颜色里
我们知道它在阿尔法信道里
所以我可以说
把阿尔法信道

English: 
Alpha channel, the alpha channel
represents the depth.
So, the alpha channel actually
represents the distance
that every pixel
is away from the camera.
Here is why that is cool.
If I know the size of the--
if I know the kind of lens
we are using,
there is nothing that stops me
from re-projecting that color
back into world space by saying,
you are at this angle,
therefore,
you are this far away,
therefore, your particle
is at this location.
Everyone with me still?
So, that is really cool,
because if I go ahead
and do that
by going particle update,
I want you to now re-project
the camera.
First thing it wants to know
is the depth value, okay?
Now, the depth value is going
to be how far away the pixel is.
And we know this already,
because we know
that there is a value
that is being stored
in the linear color.
We know that it is
in the alpha channel.
So, I can say,
pull the alpha channel

Korean: 
알파 채널이죠
알파 채널은 깊이를 나타냅니다
알파 채널은 각 픽셀이
카메라에서 얼마나 떨어져 있는지
거리를 나타내 줍니다
알파 채널이 멋진 이유를 보여드리죠
만약 사이즈를 알고 있다면
사용 중인 렌즈의
종류를 알고 있다면
월드 공간으로 색상을 다시 투영하는 데에는
아무런 제약이 없습니다
방법은 색상의 각도마다
거리를 지정해주는 겁니다
그러면 파티클이 이 위치에 있게 되죠
잘 따라오고 계시죠?
364-
00:15:27,911 --> 00:15:31,036
이건 정말 대단한 일입니다
파티클 업데이트로 가서 계속해 보면
이제 카메라를 다시 투영합니다
먼저 알아야 할 것은 깊이 값입니다
깊이 값은 픽셀이 얼마나 멀어질지를
지정하게 됩니다
그리고 저희는 이미 알고 있죠
왜냐하면 선형 색상에
저장된 값이 있다는 것을
알고 있기 때문입니다
그 값은 알파 채널에 있으니
우리가 만든 임의의  샘플에서

Korean: 
알파 채널을 끌어내도록 하겠습니다
다음으로 알아야 할 것은 FOV로
기본값은 45이며
여기에도 UV 공간의 위치를
알려줘야 합니다
또 한번 간단하게
만들어둔 UV 데이터를 넣습니다
마지막으로 알려줘야 할 것은
보시다시피
저 정도의 거리감으로
효과가 나타나는데
어느 방향으로 투사될지를
알려주어야 합니다
깊이 값은 카메라 방향이 어디인지
알지 못하는 상태라고 할 수 있죠
따라서 제가 할 일은
아래쪽으로 투영하도록 하는 겁니다
아래쪽으로 투영하려면
말 그대로 -1, 1로 세팅합니다
여기도 0으로 만들어야겠네요
보기 조금 어려우실 수 있으니
잠시 동안은 사이즈를 키우겠습니다
가령 20 정도로 바꾸도록 하죠
저 아래쪽이 보이시나요?

English: 
from this arbitrary thing
that we created, okay?
The next thing it wants
to know is the FOV,
which is default to 45,
and it also wants to know
the position in UV space,
which is again, simple enough,
just the UV data that we created.
Now, the final thing
that it wants to know,
and you can see, it starting to
take effect in the
distance there,
is which direction
to project it in.
It does not know which way
the camera is facing.
So, all I need to do is tell it
to project downwards, okay?
And to project downwards,
I literally set this to -1, 1.
Oh, and I forgot
to zero this out.
Now, it might be
a little tricky to see,
so I am just going to crank up
the size for the time being.
I am going to turn this up to,
say, 20.
Now, see down the bottom there?

Chinese: 
从我们创建的随便什么东西里
提取出来 对吧？
它需要知道的下一个东西是FOV
它默认设为45
它还需要知道在UV空间里的位置
这也够简单
就是我们创建的UV数据
现在他需要知道的最后一个东西
你们可以看到 它开始
在距离中生效了
就是投射的方向
它不知道摄像机朝向哪里
所以我需要做的就是
告诉它向下投射 对吧？
要向下投射
我就要把这个设置为-1, 1
哦 我忘记把这个归零了
要看见它可能有点难
所以我现在要把大小调大
我要把这个调到 比方说20
现在看到下面这个了吗？

Japanese: 
アルファチャンネルを取り出します
次に設定する値は[Fov]です
この値はデフォルトでは45です
UV空間での位置も必要です
この値も 作成したUVデータにあるので簡単です
最後に必要な値は方向です
遠方からエフェクトが差し込んで来ていますが
遠方からエフェクトが差し込んで来ていますが
投影する方向を設定する必要があるのです
カメラの向きを教えるために
下向きに投影するように指示します
下向きに投影するには 
次のように「-1」と「1」に設定します
これを「0」に設定するのを忘れていました
少し分かりにくいかもしれないので
今はサイズを大きくしておきます
「20」にしてみます
そして 下の方を見てみます

Korean: 
지금 보시기 시작한 것은
크기를 더 키워야겠습니다
됐습니다, 여기서 보이는 것은
월드가 파티클로
재창조되는 모습입니다
공간상의 위치와 대등하게
만들어지고 있습니다
보여드리기 약간 이상한
방법이긴 하지만
순식간에 더 멋있게 만들어 보겠습니다
여기서 시작해 보도록 하죠
다음에 할 일은 이것입니다
파티클은 이미터가 있는 곳에서
한참 아래에 있습니다
이유는 이렇습니다
카메라를 다시 투영할 때
실제로 하게 되는 것은
표면이 카메라 자체로부터
떨어져 있는 거리만큼
파티클을 밑으로 끌어내린 것입니다
그러니 이것을 위로 올려야 하고
위치를 특정한 값으로
오프셋 시켜야 합니다
이미터 주변에 있는 것을
렌즈 크기에 맞게
안으로 스케일 조절하고
제가 원하는 실제 사이즈만큼
바깥쪽으로 스케일을 조정합니다
여러 가지 방법으로 수행할 수 있는데
원할 경우에 HLSL을
교묘하게 이용할 수 있지만

English: 
What we are starting to see,
here,
I am going to make
you way bigger.
There we go. What we are
actually seeing down here
is the world is getting
recreated in particles
that are equal to
their position in space, okay?
Now, that is a really kind of
a weird way to show it,
but we are going to
make it cooler in a second.
I just want to start here.
So, the next thing that
I need to do is this.
I have got particles that are way
down below where my emitter is.
Now, the reason
for that is this,
is when I re-project the camera,
what I am actually doing is,
I am putting the particles
all the way down to how far away
the surface
was from the camera itself.
So, I need to move it upwards.
So, I need to offset that
position by a certain value.
Once I have got it around
the emitter,
I need to scale it inwards
by the size of the lens,
and then scale it outwards
to the actual size
that I want it to be, okay?
Now, I could do this in a
number of different ways.
If I wanted, I could just be
crafty with HLSL,

Chinese: 
我们开始在这里看见的
我还要把你调大许多
好了 我们在下面看到的
是世界场景正在以粒子形式重现
这些粒子和它们在空间中的位置
相同 对吧？
这样看确实有点怪
不过我们很快就会把它弄得
更酷一点
我只是以这个为起点
那么接下来我要做的是这样的
我的粒子在我的
发射器下方很远的地方
我要做这件事的原因是
当我重新投影摄像机的时候
我实际上做的事是
我让粒子向下一路跑
跑出去的距离就是
表面和摄像机本身的距离
所以我需要把它向上移动
我需要用某个值使位置偏移
在我得到发射器周围的位置以后
我需要按照镜头的大小
把它向内按比例缩小
然后向外按照我需要的
实际大小放大 明白吗？
我可以用几种不同的方法
来做这件事
如果我愿意 可以直接用HLSL来做

Japanese: 
ここに見え始めてきたのは…
(もっと大きくしてみます)
ここに見えているのは
空間内で同じ位置に置かれているパーティクルで
再構成されたワールドです
空間内で同じ位置に置かれているパーティクルで
再構成されたワールドです
これは 少し不気味な感じですが
すぐにもっと良くなりますよ
これはまだ出発点です
さて 次にやることはこれです
パーティクルはエミッタよりずっと下の方にできます
その理由は
カメラを再投影するときに
カメラ自体からずっと下がったサーフェスのところに
パーティクルを出現させているからです
ですから 上の方に移動させる必要があり
その位置を一定の値だけオフセットする必要があります
エミッタの周りでそうした後に
レンズのサイズだけ内側にスケーリングしてから
必要とする実際のサイズまで
外側にスケーリングする必要があります
そうするには いくつかの方法があります
必要であればHLSL式を巧妙に使用することもできますが

English: 
but let us say I wanted
to use a node graph.
All I would need to do
is right-click, go to FX,
and create a new Niagara module
that was called 'adjust
camera projection', okay?
And this is where
I can just start to roll
my own additional solutions
to this stuff.
First thing I need to know
is some sort of vector
that is storing
the position of the particle.
The next thing I need to
know is another vector
that stores
the offset direction.
The next thing I need to know
is the distance away
that that currently is,
which is going to be
called 'offset distance'.
Finally, I am going to need
to know the angle of the lens,
and the size that we want this
to end up as, okay?
Now, again,
this is the most boring
section of this presentation,
but just give me a second
and we will get there.
So, we have got
all of these things.
Now, if I want to offset
its position,

Korean: 
노드 그래프를 써 보도록 합시다
제가 할 일은 우클릭하고
FX로 가서
새로운 나이아가라 모듈을 만들어서
이름을 카메라 투영
조정이라고 하겠습니다
여기에서 저만의 추가 솔루션을
작동시켜 보도록 하죠
제가 알아야 할 첫 번째 사항은
파티클의 위치를 저장하는
벡터값이며
다음으로 알아야 할 것은
오프셋 방향을 저장하는
벡터값입니다
그다음으로는 현재 떨어져 있는
거리를 알아야 하고
오프셋 거리라고 불리는 것이죠
마지막으로는 렌즈의 각도와
결과적으로 나올 크기를 알아야 합니다
자, 다시 한번
이 부분이 프레젠테이션의
가장 지루한 부분일 수도 있는데요,
제게 잠시 시간을 주시면
마무리하도록 하겠습니다
이제 저희가 이 모든 걸 갖고 있습니다
이제 위치를 오프셋 시키려면

Chinese: 
不过我想使用节点图表
我只需要右键单击 转到FX
然后创建一个新的Niagara模块
它叫“AdjustCameraProjection”
然后我从这里就可以开始
运用我自己的附加解决方案
首先我需要知道某种矢量
它存储粒子的位置
我需要知道的下一个东西是
另一种矢量
它存储偏移方向
接下来我需要知道的是距离
就是和当前位置的距离
就叫它“OffsetDistance”
最后 我需要知道镜头的角度
和我希望投影图像最后的大小
对吧？
还是一样
这是这个讲座最乏味的部分
不过稍等一下就好
好 所有这些东西我们都有了
现在 如果我要偏移位置

Japanese: 
ここではノードグラフを使用します
そのためにやることは 右クリックして[FX]を選択し
新しいNiagaraモジュールを作成して
「AdjustCameraProjection」という名前にするだけです
このモジュールで 独自の追加ソリューションに
取りかかります
まず必要なのは パーティクルの位置が
格納されているベクターです
まず必要なのは パーティクルの位置が
格納されているベクターです
さらに必要なのは オフセット方向が格納されている
ベクターです
さらに必要なのは
現在の距離です
その距離を「OffsetDistance」という名前にします
最後に必要なのは レンズの角度と
望ましい最終サイズです
ここで 繰り返しになりますが
この部分は このプレゼンテーションで最も
ここで 繰り返しになりますが
この部分は このプレゼンテーションで最も
退屈なセクションですが 後少しです
どうかご辛抱を
さて これで すべて揃いました
位置をオフセットするには

Japanese: 
距離に対してオフセットする方向にを
乗算するだけです
ここに値を入れて
デフォルトでシード値が設定されるようにします
ここに値を入れて
デフォルトでシード値が設定されるようにします
方向は…現在下向きにオフセットされるように
なっています
方向は…現在下向きにオフセットされるように
なっています
これでいいですね これをつなげると
これをドラッグして
ここに接続して さらに ここにも接続します
そうしたら [Apply (適用)]をクリックします
これを [Particle Update]の最後に追加します
これを [Particle Update]の最後に追加します
追加するのは…
[Adjust Camera Projection (カメラ投影の調整)]です
これを動かすと
上に移動しますが
この時点では カメラの位置は分かっていません
そのためには
ここのデフォルト値を「45」に設定する
必要があります

Chinese: 
我需要做的就是把我们需要的
偏移方向乘以距离 对吧？
我要在这里用一些默认值
这样它们就是默认播种的
而方向将是
目前是向下偏移
好 现在如果我要把这个插入
那么没有什么能阻止我做到
把它放进那里
把它放进那里 对吧？
所以 如果我这么做
然后快速应用
我要把这个添加到
最后的粒子更新里 对吧？
我要添加设置位置……
哦 不对 我要添加摄像机投影
所以 调整摄像机投影
如果我移动这个
我们现在就会看到这个上移了
不过现在它不知道摄像机的位置
原因是我需要
把这里的默认值设置为45

English: 
all I need to do is multiply
the direction
that we want it offset
in against the distance, okay?
And I am going to put in
some default values here,
just so that
they are seeded by default,
and the direction
is going to be,
it is
currently offset downwards.
Okay, now,
if I was to plug this in,
there is nothing that would
stop me from just getting this,
putting it into there, and
putting it into there, okay?
So, if I did this
and just quickly applied it,
I am just going to add this
to the particle
update at the end, okay?
I am going to add
set position--
oh, no, I want to add
camera projection.
So, adjust camera projection.
And if I move this,
we are now going to see that
this is moved up,
but it currently does not know
the camera's position.
And the reason for that
is I need
to set the default values
for here as 45,

Korean: 
방향을 복제한 다음
오프셋 시키는 거리로 설정하는 겁니다
여기에 디폴트 값을 넣어서
그래서 디폴트로 진행되도록 하고
방향은 어떻게 되냐 하면
현재는 아래쪽으로
오프셋 시키도록 설정했습니다
좋습니다, 이제 이것을 플러그인하면
이렇게 하는 데에는 제한 사항이 없습니다
이것은 저기에 넣고
저것은 여기에 넣는 겁니다
그다음 적용을 누르고
끝에 있는 파티클 업데이트에
이것을 추가하겠습니다
이제 세트 위치를
아닙니다, 카메라 투영을
추가해 보겠습니다
자, 카메라 투영을 조절하고
이것을 움직이면
위로 움직이는 것을 보시게 됩니다
하지만, 현재는 파티클이
카메라의 위치를 모릅니다
그 이유는
각도의 디폴트 값을 45로
설정해야 하는데

English: 
and the current position is just
going to be down to the variable
that we have from that
camera projection.
And when we do that,
we can now see
that it is creating it
around the origin of the system.
And because of that,
I can actually shrink these down
to be a little bit more visible.
And if I wanted to, I could
crank up this spawn rate
as well to get
something pretty cool.
Going to hit save. Now,
if I look at that in the world,
let us go back to this a minute,
and I hit play ...
Ooh.
One moment.
Have I missed a variable?
Sorry, one second. 45,
opposite direction, -1,
7,000 scale
is irrelevant right now,
position is camera projection.
Okay, I will work this out
in just a moment.
I am going to move you outwards
so we can see you.

Korean: 
현재 위치는 저 카메라
포지션에서의 변수로
적용되어 있기 때문입니다
디폴트 값을 45로 지정하면
시스템 원점에서
생성되는 것이 보입니다
그래서 파티클이 더 잘 보이도록
이 값들을 축소할 수 있습니다
그리고 원하는 경우
스폰 비율을 높여서
꽤 멋진 결과물을 얻을 수 있습니다
저장하도록 하죠
월드에서 이것을 보면
잠시 돌아가서 재생을 누르면
어
잠시만요
변수를 놓쳤나 봅니다
죄송합니다 잠시만요
45, 반대 방향, -1
7,000 스케일은
지금은 상관 없는 것 같습니다
위치는 카메라 투영이죠
잠시만 이걸 해결하겠습니다
잘 보이도록 밖으로 빼내 보겠습니다

Chinese: 
当前位置就会在
我们从摄像机投影得到的变量的下面
在我们这么做的时候
我们可以看到
在系统的原点周围正在创建它
因此 我实际上可以把这些
缩小一点 让它们显得更清楚
如果我愿意 可以调高这个生成速度
并且得到一些很酷的结果
我要按“保存”了
现在 如果我在世界场景里看
我们先回到这个 我按“运行”……
呃哦
等一下
我漏了一个变量吗？
不好意思 马上就好
45 相反方向 -1
7000比例尺
现在无关紧要
位置就是摄像机投影
好吧 我马上搞定它
我把你移出来 让我们看到你

Japanese: 
また 現在の位置は Camera Projection の
変数になるようにします
そうすると パーティクルはシステムの原点の周りに
作成されるようになります
もっとよく見えるように
スプライトのサイズを小さくします
さらに 見栄えをよくするために
この[Spawn Rate (スポーン レート)]を大きくします
[Save]をクリックします
ワールドで見てみましょう
これに戻って[Play (プレイ)]をクリックします
おっと
少々お待ちください
変数がおかしいのかもしれません
すみません ちょっと待ってください
「45」に設定し 反対方向なので「-1」に設定し
「7,000」 今はスケールは関係ないですね
位置はCamera Projectionです
修正するので ちょっと待ってください
外側に動かして 見えるようにします

Japanese: 
ちゃんと機能していましたね
パーティクルが小さすぎて見えなかったのです
縮小しすぎていました
ヘマなことをしてしまいました
とりあえず「5」に設定してみます
これで見えるようになりましたね
「20」でもいいですね
いいですね 少しよくなってきました
でも 環境を見る方法については
わかったと思います
ドローンを動き回らせているときに
その環境のサーフェスを補完するように
実際のシステムが変化しているのが分かりますね
さて 次にやることは エミッタ自身の内側に
サイズを小さくした後に
再びスケールアウトすることです
それは非常に簡単にできます
まず この位置を取得してから
それをローカル空間に
まず この位置を取得してから
それをローカル空間に
変換するだけなのですから
では 位置を取得して
それを
ワールドからローカルに変換してみます
次に これをサイズで除算します
直径が5,000単位であれば
5,000で割ると 0～1の範囲の値になります
そこで 実際にサイズで割ってみることになりますが

Chinese: 
好 这办法有效
其实就是粒子太小了 看不见
干得好 Chris 
你把它们的比例调太小了
那么 我暂时把这个设置为5
好让我们看到它
好了 也许该用20
好 结果变得有趣一点了
不过你们看到我实际上
可以怎样保存环境了吗？
当我运行那架无人机的时候
让它四处飞行
我可以看到实际的系统变化
为的是补偿
环境的表面
接下来我需要做的事
就是把它的比例缩小到和自身一样
然后重新放大
这其实很简单
只要找到这个位置
然后对它说
我要把这个位置变换到局部空间
把你缩成自己的大小
所以 我们要找到那个
然后我要变换位置
我要说你从世界空间转到局部空间
明白吗？
然后我要拿它除以一个大小
因为如果它全长5000单位
那我就拿它除以5000
这样它就成了0到1之间的值

English: 
Okay, that is working.
The particles
are just too small to see.
Good job, Chris,
you scaled them down too much.
So, I am going to set these to 5
for the minute,
just so we can see them.
There we go, maybe 20.
Okay, we are getting something
a little more interesting.
But see how I can actually
see the environment?
And as I run that drone
so that it is driving around,
I can see the actual system
changing to compensate
for the surfaces
of that environment.
Next thing I need to do
is scale it down into itself,
and then scale it out again.
And that is actually as simple
as getting this position
and saying to it,
I want to transform
this position into local space,
so that you crush
in on yourself.
So, we are going to get that,
and I am going
to transform position.
And I am going to say you go
from world to local. Okay?
I am then going to divide this
by a size.
Because if it
is 5,000 units across,
and I divide it by 5,000,
it is now a value
between 0 and 1.

Korean: 
네, 작동하긴 하는데
파티클이 너무 작아서 안 보입니다
잘했어, 크리스
정말 많이도 줄였구나
일단 5로 세팅해 보겠습니다
눈에 보이도록 말이죠, 됐습니다
20으로 세팅해 봅니다
더 흥미로운 결과물이 나왔네요
제가 실제로 환경을 보는 방법이
보이시나요?
드론을 실행시켜서
드론이 움직이면서
이 환경의 표면을 보정하면서
실제 시스템이 바뀌는 것이 보입니다
다음으로 할 일은 안으로 스케일링하고
다시 밖으로 스케일링하는 것입니다
사실 위치를 잡는 것만큼 간단합니다
명령하기를
이 위치를 로컬 공간으로
트랜스폼 시켜서
파티클끼리 충돌하도록 하는 겁니다
그렇게 해보도록 하죠
위치 트랜스폼으로 가서
월드에서 로컬로 바꿔 줍니다
그리고 크기에 따라
나누도록 하겠습니다
총 5천 유닛이라면
5천으로 나누어서
이제 값이 0과 1 사이가 됩니다

Korean: 
이제 크기별로 나눌 텐데
나누는 크기는 사실 꽤 간단합니다
지금, 거리는 땅에서 렌즈까지의 거리입니다
그 말은 이 지점에서
바깥으로의 거리와
렌즈 각으로부터의 거리는
이 각도의 탄젠트 값에
거리를 곱한 것과 같겠죠
제가 갑자기 고등학교 때 배운
수학 공식을 쏟아내는 것을 알고 있지만,
그냥 한번 해 보는겁니다
그래서 이 각의 탄젠트 값을 보죠
죄송합니다, 탄젠트를
각도 값으로 보고
거리를 곱해주면
우리가 나누려는 기준이 됩니다
그다음으로 스케일을 곱해서
스케일만큼 커지도록 만듭니다
왜냐하면, 단순히 0과 1사이의
값으로 가져오고
값에 스케일을 곱하면
예를 들면, 만약에
600 정도의 값으로
곱한다고 해보겠습니다
그러면 값이
0과 600 사이에 있겠죠
값을 넣고 있습니다
좋습니다, 이제 마지막으로
한 가지가 남았습니다

Japanese: 
そこで 実際にサイズで割ってみることになりますが
除算に使うサイズは次のように
かなり単純に出ます
現在の距離は地面からレンズまでの距離ですよね
ということは 地面にぶつかったこの点から
レンズの角度によるこの点までの距離は
この頂点の角度のタンジェントに
距離を乗じた値に等しくなります
高校の数学の話になっていますが
そのまま受け入れてください
この値のタンジェントを取得します
すみません [Tangent (Degrees)]ですね
この距離を掛けると
これが 割る値になります
その結果に このスケールを掛けて
このスケールと同程度の大きさにします
0～1の範囲の値に
引き下げてから
たとえば
それに
600を掛けると
0～600の範囲の値になりますね
では そのように入力します
いいですね 次にやることが最後ですが

Chinese: 
所以我要拿你除以一个大小
我用来除它的大小实际上相当简单
目前 距离是从地面到镜头 对吧？
也就是说距离是从这里向外
从镜头角度,
等于这个角度的正切
乘以距离 对吧？
我知道我说的是高中数学
不过我们记住就好
所以我要获得这个的正切
哦 对不起 角度的正切
乘以这个距离
那就是我们的除数
然后将它乘以这个的比例
使它和这个比例一样大
因为如果我们把它缩小成一个
0~1之间的值
然后再把它乘以一个值
也就是说 比方说……
如果我把它乘以600
这时候
它就成为0~600之间的值 对吧？
所以就这么干
好极了 现在我们需要做最后一步

English: 
So, I am going to divide you
by a size,
and the size I am dividing it by
is actually rather simple.
At the moment, the distance
is the ground to the lens, okay?
Which means that the distance
from here to outwards,
from the lens angle,
is equal to the tangent
of this angle multiplied
by the distance, all right?
I know I am busting out
the high school math,
but let us just roll with it.
So, I am going to get
the tangent of this.
Oops, sorry, tangent in degrees.
Multiplied by this distance,
is what we are dividing it by.
And then we are multiplying it
by the scale of this
to make it as big as this scale.
Because if we bring it down
to a value
that is between 0 and 1,
and then I multiply it
to a value
that is say, between, like--
if I multiply it
by a value of 600,
it is now going to be a value
between 0 and 600, okay?
So just punching that in.
Excellent, and now we need
to do one last thing,

Japanese: 
それを変換してローカル空間からワールド空間に戻します
そしてこれをつなぎます 
計算上は…
(少しお待ちください)
これを読み込んで 下にスクロールします
現在のスケールはデフォルトではありません 
(表示されましたね)
これは削除して 中のものを見ます
これが 今見えているものです
非常に明るいですね
少しだけ待ってください
これを修正します
ご覧のとおり かなり面白い室内
ホログラフィックマップが
作成され始めましたが
まだ 満足できるほどではありません
さらに見栄え良くできますので
もう少しお付き合いください
さて パーティクルらしくスポーンできたので
なかなか良いのですが まだ良くなります
ここで シリンダー状のスポーナーを作成するときに
最初にやったことを思い出してください
ここで シリンダー状のスポーナーを作成するときに
最初にやったことを思い出してください
それをやるとどうなるでしょうか？
このパネルで

Chinese: 
就是把它从局部空间
重新转换到世界空间
把你插进去
而从理论上讲 理论上讲
好吧 稍等一下
我要加载这个
我要向下滚动
现在比例是当前这个
不是默认值 好了
所以 我要删除这个
直接去看里面那个
现在我们看的是这个
它亮度超高
稍等我一下
让我们来解决这个问题 好吧
现在行了
好，现在我们可以看到
我们实际上已经开始创造出
一个很有趣的内部全息图
现在你们还不能笑
我们可以把它做得比这漂亮很多
拜托 忍我一下
好 我们已经让这个生成了
正确的粒子 对吧？
这有点意思
但是大家还记得
我们创建那个CylindricalSpawner
时做的第一件事吗？
我们把它接着做下去怎么样？
如果我到这里 然后说

Korean: 
이것을 로컬 공간에서 월드 공간으로
변환하는 것입니다
연결해 줍니다
이론상으로는, 이론상으로
됐습니다, 잠시만요
이걸 로드하고
밑으로 스크롤 하겠습니다
스케일은 지금 디폴트가 아니군요
됐습니다
이제 이것을 지우고
안에 있는 것을 보겠습니다
이게 저희가 보고 있는 겁니다
너무 밝은 것 같네요, 잠시만요
밝기를 고쳐보겠습니다
이제 됐습니다
이제 저희가 아주 흥미로운
인테리어 홀로그램 맵을
만들기 시작한 것을
보실 수 있습니다
아직 승리의 미소를 지으시면 안 됩니다
더 멋있게 만들 수 있습니다
조금만 견뎌 주세요
이제 이 스포닝이 파티클로
제대로 작동하고 있습니다, 그렇죠?
그건 흥미로운 일입니다
하지만, 저희가 처음에
실린더 스포너를 만드신 것을
기억하시나요?
그것을 조금 더 발전시켜보면
어떨까요?
이 쪽으로 와서

English: 
which is convert it back from
local space into world space.
Plug you in. And in
theory, in theory,
Alright, just a second.
I am going to load this up,
I am going to scroll down.
Now, the scale is currently,
not default, there we go.
So, I am going to delete this
and just look at the one inside.
This is now what
we are looking at.
It is super bright.
Give me a second.
Let us go ahead and fix that
up, okay? Now, there we go.
So, we can now see that we are
actually starting to create
a pretty interesting
interior holographic map.
You are not allowed to grin yet.
We can make this look way
cooler, guys.
Come on, bear with me.
So, we have got this spawning
as particles that are just doing
their thing, all right?
And that is kind of interesting.
But remember the
first thing we did
when we created that
cylindrical spawner?
What about we go ahead
and do that?
What about if I go here
and I say,

Japanese: 
前に作成したHLSL式を削除して
その代わりに [Cylinder Location]を使います
さらに「Particles.Position」に保存するのではなく
「Particles.ProjectedPosition」という変数に
変更します
投影された位置であるため
自動的に
格納するための新しい変数が作成され
その変数にアクセスできるようになります
そうする理由は
わりとシンプルです
投影された位置を格納して
ここにある[Write to Intrinsic Values (固有の値を書き込む)]を
無効にすると
パーティクルがシリンダーとして
スポーンされるようになったことが分かります
パーティクルがシリンダーとして
スポーンされるようになったことが分かります
ただし 一部のパーティクルでは小さい赤色のドットと
青色のドットがありますね
ただし 一部のパーティクルでは小さい赤色のドットと
青色のドットがありますね
それらのドットは行き先が分かっているからです
それらの位置を違うように設定しているだけなのです
さあ ここは面白いところです
Particle Updateに移動して
パーティクルの位置を設定します
時間の経過とともに滑らかになるように設定します
(すみません 間違ったものを選択しました) 

Korean: 
저희가 만든 HLSL을 삭제하고
대신에 실린더 위치를 가지고
particles.position으로
저장하는 것이 아니라
이름을 새로 붙이는 겁니다
particles.projectedposition
그러면 어떻게 될까요?
투영된 위치라고 하는 것은
자동으로 사라져서
우리가 액세스 할 수 있는
위치를 저장하는
새로운 변수를 만드는 겁니다
이렇게 하고자 하는 이유는
상당히 간단합니다
투영된 위치를 저장하고
이쪽에 있는 고유 계산을 비활성화하면
파티클이 원형 모양으로 스폰되는 것이
보이실 겁니다
하지만 그 파티클 중에 작고 빨간 점과
파란 점이 보이시나요?
그 점들이 진행 방향을 알고 있기 때문에
나타나는 현상입니다
제가 그 위치를 다르게 설정했습니다
재미있는 부분은 여기입니다
업데이트 루프로 가서
파티클 위치를 세팅하면서
시간이 지나면서 부드럽게
아, 죄송합니다, 잘못 선택했네요
이겁니다

Chinese: 
我们创建的HLSL
你可以消失了
我要用这个圆柱体位置
我不会把这个保存到
particles.position
而是把这个转变为一个叫做
particles.projectedposition
的东西 明白吗？
现在 如果这是投影的位置
那就意味着它刚才自动触发了
创建了一个新的变量
来存储我们可以访问的那个
现在 我要那么做的原因
其实非常简单
如果我们选择存储投影的位置
然后我禁用这里的固有计算
我们可以看到粒子
现在不是作为圆柱体生成了 对吧？
但是你们看到了吧？
其中有些有小红点
有些有蓝点
就是因为他们知道自己要去哪里
我刚才对他们的位置
进行了不同的设置 对吧？
现在 有趣的部分来了
如果我进入我的更新循环
我说 我要设置粒子的位置
但是我要把它设置为
随着时间推移 它会平滑地……
哦 不好意思 搞错了
好了

English: 
be gone with you,
HLSL that we created.
Instead, I want
this cylindrical location,
and instead of saving this off
to particles.position,
what if I turned this
into something called
particles.projectedposition,
okay?
Now, if it is a
projected position,
this means it has just
automatically gone off
and created a new variable
to store that that
we can access.
Now, the reason
I might want to do that
is actually rather simple.
If we stored
the projected position instead,
and I disable the intrinsic
calculation over here,
we can see that the particles
are now spawning
as a cylinder, right?
But see how some of them
have little red dots
and blue dots in them?
That is because they know
where they are going to go.
I have just set their position
differently, okay?
Now, here is the fun part.
If I go to my update loop,
and I say, I am going to set
the position of the particle,
but I want to set it
that over time, it is smoothly--
whoops, sorry, wrong one.
There we go.

Japanese: 
時間の経過とともに 自身の値からターゲット値まで
滑らかに線形補間されます
ターゲット値は 先ほど作成した「Particles.ProjectedPosition」の値です
そうすると このようになります
これは 少し奇妙に思えるかもしれませんが
これらは
パーティクルはマップを作成しようとしています
ただし そうできるほど高速ではないため
目標を達成する前に消滅しているのです
しかし [Convergence Rate (収束の速度)]を大きくするだけで
パーティクルは開始位置から最終的な位置まで
素早く移動するようになります
でも これよりもっと巧妙な方法があります
この[Convergence Rate]を取得して
経時的に変化させてみてはどうでしょうか
[Convergence Rate]を
カーブに設定してみるのはどうでしょうか？
最初に初期化するときに
収束の速度を
ゼロに近い値に設定します
そうすると パーティクルの作成時に
ほんの一瞬で落ち着いてから 
素早く移動するようになります
それは 開始時には収束が許されず
その後に収束できるようになるためです

English: 
It smoothly lerps over time from
itself to its target value,
which is the value
that we just made up,
what we are left with is this.
Now, that might be
a little bit weird,
but what these are doing is,
those particles are
trying to make a map,
but they are not fast
enough to do it.
They are dying
before they get there.
But I could just crank up
my convergence rate.
And now the particles
are whisking away
from where they start into
their final position, all right?
But we can do cooler than this.
Because why do we not get
this convergence rate
and change it over time?
Why do we not say
convergence rate,
you are set to a curve?
And when you are
first initialized,
I want you to actually
have a value, --
convergence rate of near zero,
all right?
That means that as the particles
create, see, they are now
chilling out for just a second
before whisking away?
That is because
when they first start,
they are not allowed
to converge, and then they are.

Korean: 
현재 위치에서
저희가 방금 만든 목푯값까지
시간이 지남에 따라
부드럽게 선형 보간하도록 세팅하면
결과물은 이렇게 됩니다
조금 이상하다고 생각하실 수 있지만
파티클들이 지금 하는 것은
맵을 만들려고 하는데
속도가 충분하지는 않습니다
목표값에 도달하기 전에
소멸하고 있습니다
제가 수렴 속도를 올리면
파티클이 시작 지점부터
최종 위치까지
빠르게 움직입니다, 그렇죠?
이것보다 더 멋있게 만들 수 있습니다
이것을 수렴 속도로 조절하지 않으면서
시간에 따라 움직이게 만드는 것은
불가능할까요?
수렴 속도가 아니라
곡선으로 세팅하는 것은 어떨까요?
처음 초기화 상태에서
초깃값으로 수렴 속도는
0에 가깝게 합시다
그렇게 하면 파티클이 생성되면서
빠르게 움직이기 전에
잠시 멈춰 있습니다
그 이유는 파티클이 처음 생성될 때
바로 수렴하지 못하게 했기 때문입니다
이제는 수렴하고 있네요

Chinese: 
它随着时间推移
平滑地从自身插值到目标值
目标值就是我们刚才设定的值
我们得到的就是这样
现在 这看起来可能有点怪
不过它在做的事情是
这些粒子想要组成一幅图
但是它们的速度不够快
它们在到达目标之前就消失了
但是我可以调高我的收敛速度
现在这些粒子快速地
从它们的起始位置飞向最终位置了
对吧？
不过我们可以把这做得更酷
因为 我们何不让这个收敛速度
随着时间变化呢？
我们为什么不对它说
收敛速度
你被设置成了一条曲线呢？
当你第一次初始化的时候
我希望你有一个值……
接近于0的收敛速度 好吧？
这就意味着 当粒子创建的时候
看见了吧 它们现在
会先停留一会
然后再快速移动
这是因为 在一开始的时候
我们不允许它们收敛
然后又允许了

English: 
And what we end up doing
is creating something that,
over time, if I add this
and I can change their
convergence rate as I see fit,
and I can scale the convergence
rate max and mins,
say to 10, here
is the fun thing.
Those particles are now going
to dynamically move up and down.
So, when the texture moves,
they go, whoop,
I better move downwards,
whoop, I better move upwards.
So, see, you get that
really cool, like,
flow between the particles
as they move up and down.
And the other fun part here
is that
if I were to throw it
into slow-mo,
if I were to throw this
into slow-mo,
you can physically see
each and every particle --
let us follow this yellow
guy over to exactly
where it needs to be in the map.
And then of course,
depending on how much you want
to tweak this over time,
you know, we can do that
without too much drama.
I can change this, for instance.
You know the color value
that we set before?
Nothing stops me
from getting this color value
and saying, hey, you know what?
When you start, you are actually
going to be green.
And then I slowly
want you to convert

Chinese: 
于是我们就得到了这样的东西
随着时间的推移 如果我添加这个
我可以按照我认为合适的方式
更改它们的收敛速度
我可以调整收敛速度的
最大值和最小值
比方说调到10 这很有趣
现在这些粒子会动态地上下移动了
所以当纹理移动的时候
它们也会动
哦 我最好往下走
哦 我最好往上走
看到了吧？
你们可以把它做得非常酷
随着粒子上下移动而流动
另一个有趣的地方是
如果我把它转到慢动作模式
如果我把这个转到慢动作模式
你们可以真正看到每一个粒子……
让我们跟着这个黄色的家伙
看它需要到图中的什么地方
然后 当然了
这取决于你们希望它
怎样随着时间推移而变化,
我们不需要费太多功夫就能做到
比方说 我可以更改这个
你们知道我们前面设置的颜色值吗？
没有什么能阻止我找到这个颜色值
然后说 嘿 你知道吗？
在一开始的时候 你应该是绿色的
然后我希望你慢慢地

Korean: 
결과적으로는 이것을 만들고자 한 겁니다
시간이 지나면서 제가 이 값을 추가하고
보기에 맞는 수준으로
수렴 속도를 변경하고
수렴 속도의 최댓값과 최솟값을
설정할 수 있습니다
가령 10으로 설정하면
재미있는 일이 일어납니다
파티클이 동적으로 위아래로 움직입니다
텍스처가 움직이면 파티클은
앗, 아래쪽으로 움직여야겠다
어, 위쪽으로 움직이자 하는 식인 겁니다
그래서 보시면 파티클이
위아래로 움직이며
멋있는 흐름을 만드는 겁니다
여기서 또 다른 재미있는 점은
슬로우 모션으로 보낸다면
슬로우 모션으로 보내면
눈으로 직접 각 입자를
볼 수 있습니다
이 노란 점을 따라서
정확히 맵의 어디로 가야 할 지 봅시다
그리고 물론
여러분이 시간이 지나면서 어느 정도를
미세조정하고 싶은지에 따라
그렇게 힘들이지 않고도 할 수 있는 것
알고 계실 겁니다
예를 들면 이걸 바꿔보도록 하죠
저희가 앞서 설정한 색상 값 알고 계시죠?
아무런 방해물 없이 이 색상 값을
가지고 조정해보는 겁니다
시작할때는 녹색이지만
천천히 녹색에서 원래 색으로

Japanese: 
そして 最後にやることは 
収束速度を経時的に変化できるようにすることです
これを行うと
収束速度をうまくフィットするようにできます
収束速度の最大値と最小値をスケーリングできます
たとえば「10」を指定すると 面白いことが起きます
パーティクルが動的に上下に移動するようになります
テクスチャが移動すると パーティクルは
パーティクルたちが上や下に動きます
パーティクルが上下に移動するにつれて
流れができて 本当に見栄えが良くなりました
他にも面白いことがあります
これをスローモーションにすると
これをスローモーションにすると
1つ1つのパーティクルを肉眼で確認できます
この黄色のパーティクルを追いかけてみると
マップ内で居るべき正確な位置へと動きます
もちろん
この経時的な変化を微調整すれば
演出が過剰になることもありません
たとえば 色を変更できます
以前にカラー値を設定しましたが
ここからカラー値を取得して
知っている値を指定できます
スポーン開始時には緑色で
緑色から実際の色に

Chinese: 
从绿色变成你实际要变成的颜色
明白吗？
或者 如果我愿意
我可以创建出双环效果
我只要说 嘿
我们创建的这条曲线
我们在某个时刻让你停止收敛
做出一个很近的附属环
然后再把你调高 怎样？
所以 如果我找到这个
我们可以做一点跳跃
最后来到那里
这样一来那些粒子就会
先快速移动 然后慢下来
然后又快速移动
我要把这个拉近一点
让你再低一点
我们在这个过程中
就会创建出一个附属环
重申一下 所有这一切都是实时的
从外面这个家伙的摄像机投影
好 我就让你这样吧
因为我们的时间快没有了
我就让你这样吧
所以说 Niagara是一种很酷的系统
显然你们可以用它做到一些
在Cascade里做不到的事
不过我真的希望你们思考一下
这意味着什么 好吗？

Japanese: 
ゆっくりと変換されるようにもできます
あるいは 二重リングエフェクトを作成することも可能です
作成したこのカーブで指定することによって
ある時点で収束への動きを止めて
本物の閉じた2番目のリングにします
そしてもう一度上昇させます
ちょっと跳ね上がってから
最終的に上昇させます
パーティクルは素早く出現して 速度を落とし
再び素早く出現するようになります
(もう少し近くにして
もう少し下の方に下げます)
そのプロセスで2番目のリングが
作成されることになります
繰り返しになりますが このエフェクトは 
カメラからライブで作成されています
繰り返しになりますが このエフェクトは 
カメラからライブで作成されています
時間がなくなってきているようなので
残りはみなさんにお任せします
現段階ではここまでできています
さて Niagaraはとてもクールなシステムであり
Cascadeではできなかったことがいくつか
できるのは明らかですが
Cascadeではできなかったことがいくつか
できるのは明らかですが
それがどういうことを意味するのか
考えてみてください

English: 
from green into the actual color
that you are becoming, you know?
Or, if I wanted, I could
create a dual ring effect
by saying hey, this
curve that we created,
what if we stop converging you
at some point,
so we do like a real close
secondary ring,
and then you crank up again?
So, if I got this,
we kind of did a
little bit of a hop
before eventually
getting up there,
those particles are now
going to whisk out, slow down,
and then whisk out again.
I am just going to bring that
in a little closer,
and bring you a little lower.
So, we should create
a secondary ring in the process.
And again, this whole
thing is acting live
based on a camera
from this guy out here.
Now, here is what I am
going to leave you with,
as we are kind of
running out of time.
What I am going to
leave you with is this.
Look, Niagara is
a pretty cool system,
and obviously you
can do some stuff
that you could not
due in Cascade,
but I really want you to consider
what that actually means, okay?

Korean: 
변했으면 좋겠다고 조정하는 거죠
혹은 원하는 경우에
이중 고리 효과를 만들 수 있습니다
이미 만들어진 곡선을 가지고
어느 시점에 도달하면
수렴하지 않도록 하면 어떨까요?
그래서 아주 가까이에 두 번째 고리를 만들고
다시 시작하는 겁니다
이렇게 하면
저 위에 도달하기 전에
작은 점프를 하나 만들게 되고
이 파티클은 이제
빠르게 움직였다 느려지면서
다시 빠르게 움직일 겁니다
이 지점을 좀 더 가깝게 당겨오고
이 점은 조금 낮추겠습니다
이제 두 번째 고리를 만들어야 합니다
그리고 다시 말씀드리지만
이 모든 것은 밖에 나와 있는
이 드론의 카메라를 기반으로
생생하게 움직이는 겁니다
마지막으로 한 가지만 더 말씀드리고
여러분을 보내드리겠습니다
시간이 조금 빠듯할 것 같네요
마지막으로 해볼 것은 이것입니다
보시면, 나이아가라는
아주 멋진 시스템입니다
그리고 명백하게
캐스케이드로는 할 수 없는 것들이
여기서는 가능합니다
하지만 그 말의 의미를
심사숙고하셨으면 좋겠습니다

Korean: 
파티클 숫자를 올려서
멋있어 보이도록 만들겠습니다
실제로는 의미하는 것은 이것입니다
저는 여러분이 나이아가라로 제작하실
폭발에 흥미가 있는 것은 아닙니다
빔이든 다른 무엇이든
흥미를 불러일으키지 않습니다
왜냐하면 캐스케이드로도 가능한 일이고
여러분들은 꽤 능숙하실 테니까요
제가 흥미로워하는 부분은 이것입니다
저희가 지금까지 겪었던
어떤 파티클 시스템이나
이런 분야에 있던 다른 엔진보다
일반적으로 어떤 아티스트가
창조의 과정에서
장애물을 만난다면
프로그래머에게 도움을 요청하거나
포기하고 다른 방법을 찾았을 겁니다
나이아가라 시스템에서
제가 좋아하는 부분은
여러분이 내부를 살펴보고 싶을 때마다
바꾸고, 워프하고
여러분이 하고 싶은 거라면
어디까지나 확장하고
여러분이 가지고 싶은
어떤 하위 시스템이라도 추가하고 싶다면
바로 할 수 있다는 겁니다
정말로 한계가 없습니다
그리고 제게 정말로 흥분되는 지점은
여러분들이 이전 게임에서 본적 없는
새로운 것들을 만들어내실 거라는 겁니다
제가 설명하면서 동시에 작업하는데
25분밖에 걸리지 않았습니다, 그렇죠?
그리고 보통 이것은
3D 메시와 투명도 조절로
여러분이 눈속임할 수 있는 이펙트입니다
여러분은 아마도 이 정도면
괜찮은 정도라고 생각하실 수 있지만
실제로 실행해 보시면
이 파티클을 캐릭터의 스킨에 스폰하는 것도
전혀 어렵지 않습니다

Chinese: 
我要调高粒子计数
让它更酷一点
它真正的意义是这样的
对于你们将会在
Niagara里做出的爆炸
我并不感到兴奋
甚至对于光束或其他什么东西
我也不会感到兴奋
因为你们也可以在Cascade里做
而且可以做得很好
真正让我感到兴奋的是这个
在我们以前用过的
其他任何粒子系统
或者其他任何
确实有这方面功能的引擎里
通常当美术师遇到障碍
做不出他们想做的东西时
他们要么就得成为程序员
要么就放弃 做些别的东西
这套系统让我喜欢的是
每当你需要进入系统内部
更改它 调整它
添加你的东西
把它扩展出你希望它具有的任何功能
添加你希望它具有的任何子系统
你现在都可以这么做
这已经不是限制了
让我感到兴奋的是
人们将会用它
做出各种各样
我们以前从没在游戏里见到的东西
因为我做这个只花了25分钟时间
而且边做边解释 你们明白吗？
通常你要做出这样的效果
只能用一个3D网格体
加上一些透明度来模拟
你可能会觉得
我猜这样已经够好了
可是当你真正拥有了这些工具
没有什么能阻止你
从角色的皮肤生成粒子

Japanese: 
(パーティクルの個数を増やすと
もっと見栄えがよくなりますよ)
その本当の意味とは…
Niagaraで作成できる爆発やビームが
すごいと言っているのではありません
Niagaraで作成できる爆発が
すごいと言っているのではありません
ビームが素晴らしいと言っているのでもありません
そういったものはCascadeでもかなりうまく作成できます
私がすごいと思うのは次のようなことです
そういったものはCascadeでもかなりうまく作成できます
私がすごいと思うのは次のようなことです
これまでの他のどんなパーティクルシステムや
この分野の他のどんなエンジンであっても
アーティストが 何かを作成するときに
障害にぶつかると
プログラマーを呼んでくるか
諦めて何か別のことを行うのが普通でした
私がNiagaraで気に入っているのは
いつでも内部を開いて変更、変形、追加、拡張することによって
いつでも内部を開いて変更、変形、追加、拡張することによって
望みの機能を実現できることです
さらに いつでも必要なサブシステムを追加できることです
それがほぼ無制限に可能になったのです
ゲームでこれまでなら見たことのないようなものが
これから実現できるようになるのは非常に楽しみです
今お見せしたものを説明しながら作るのに
かかった時間は25分です
Niagara を使わなければ
3Dメッシュといくつかの透過処理を使用して
フェイクとして作り上げるエフェクトです
そして それで十分だと思ったはずです
しかし 実際にはNiagaraがあるのですから
キャラクターのスキンから自在に
これらのパーティクルをスポーンすることもできます
キャラクターのスキンから自在に
これらのパーティクルをスポーンすることもできます

English: 
I am going to turn up
the particle count
so we have something cooler.
What that actually
means is this.
I am not excited
for the explosions
that you will make in Niagara.
I am not even excited
for the beams or anything else,
because you could
make them in Cascade
and you could do pretty well.
What I am excited about is this.
In any other particle system
that we have ever had,
or any other engines
really had on this front,
typically when an
artist hit a roadblock
in what they were
trying to create,
they would either have
to get a programmer,
or give up
and do something different.
And what I love about this is,
any time you want to
reach under the hood
and change it, and warp it,
and add to your, you know,
extend it
to whatever you want it to do,
and add any sub-systems
that you want them to have,
you can do it now. It is
not actually a limitation.
And what I am excited about is,
all of the stuff that people
are going to do that we have
just never seen in games before.
Because this took 25 minutes
while explaining
what I was doing, you know?
And normally, this would be
an effect that you would fake
with a 3D mesh
and some transparency.
And you would be like,
I guess that is good enough.
But when you actually
have these things,
there is nothing to stop me
from spawning these particles
from a character's skin,

English: 
and literally turning the skin
into a map,
and then back
into a character again.
That is actually only
a couple of nodes.
So, I am super excited about
where people can take this all,
and I hope you enjoy
the rest of GDC.
Thank you very much for
coming to this presentation.
Stick around. We have got
learning theater stuff all day.

Japanese: 
また スキンをマップに変えてから
再びキャラクターに戻すこともできます
しかも 数個のノードだけで実現できるのです
Niagaraがどのように使われるか とても楽しみです
それでは 引き続きGDCをお楽しみください
ご清聴いただき ありがとうございました
他にもいろいろとご覧ください
ラーニングシアターは終日ご利用いただけますよ

Korean: 
그리고 그 스킨을 말 그대로
맵으로 전환한 다음
다시 캐릭터에 넣을 수 있죠
이것은 두세 개의
노드 만으로도 가능합니다
여러분이 이 모든 것을 다루게
되신다는 것이 너무나도 기대됩니다
GDC의 남은 행사도 즐기시기 바라며,
프레젠테이션에 와 주셔서 감사합니다
하루 종일 러닝 시어터가 진행되니
멀리 가지 마세요!

Chinese: 
然后把皮肤变成一张图
然后再重新变回角色
这实际上只需要几个节点
所以我对人们将会用这个系统
来做的事情感到特别兴奋
我希望你们好好享受GDC的其他部分
非常感谢你们来看这个演示
四处转转吧 
我们准备了让你们学习一整天的东西
