background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "UE4 Material Tricks you didn't know"

input logo icon
"videoThumbnail UE4 Material Tricks you didn't know
Оглавление
|

Оглавление

0:00
Intro
0:36
Primitive Data
6:46
Maximized Screen
8:05
Manipulating UVs
10:00
Rotate Texture
11:44
Flip Texture
12:48
UV Offset and Tiling
16:08
UV Clamping
17:26
Texture Projection - Screen
18:57
Texture Projection - World
21:32
Texture Projection - Tri-planar
24:59
Mesh Rotation
32:26
Camera-align Mesh
45:06
Shame! [bell rings] Shame!
47:21
Fix Scaled Mesh Normals
49:37
Shadow Pass
58:32
Multi-Shader Materials
1:04:53
Multiple UV Sets
1:08:38
Color Masks
1:19:37
Localized Post Process
1:21:03
Localized Post Process - How to
1:26:43
Localized Post Process - Limitations
1:28:39
Post Process for Widgets
1:33:24
Render Targets for Effects
1:41:30
RayTracing Limitations
Теги видео
|

Теги видео

unrealengine
unreal
game development
materials
ue4
graphics
vfx
texture
post process
projection
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:02
Привет
00:00:03
всем, добро пожаловать,
00:00:06
это презентация,
00:00:10
я готов рассказать вам о некоторых вещах, которые
00:00:13
не все знают, что их
00:00:15
можно сделать в материалах, еще несколько
00:00:18
оптимизаций, некоторые больше похожи на
00:00:22
спецэффекты, но они, кажется,
00:00:26
не очень известны, поэтому
00:00:29
я хочу помочь больше людей узнают об
00:00:31
этих функциях,
00:00:32
так что давайте начнем. Во-
00:00:36
первых, это оптимизация.
00:00:39
Сначала позвольте мне показать некоторую статистику здесь, на экране. С
00:00:46
рендерингом статистики все
00:00:50
в порядке, и вот у нас есть вызовы отрисовки сетки, о которых в
00:00:52
настоящее время
00:00:53
сообщается как 10 вызовов ящика сетки,
00:00:56
и у меня есть все эти сферы,
00:00:59
так что их будет больше 10. но в Unreal
00:01:01
есть
00:01:02
автоматическая оптимизация, которая
00:01:05
заставляет несколько объектов, использующих один и тот же
00:01:08
материал, отображаться как один или как можно меньше,
00:01:13
и эта зона оптимизации по умолчанию, я
00:01:16
думаю, она существует с тех пор, как Unreal 423 или 424,
00:01:20
и он включен по умолчанию, но
00:01:24
есть некоторые способы сделать что-то в
00:01:26
материалах, которые могут нарушить эту
00:01:27
оптимизацию,
00:01:28
и это пример этого, поэтому,
00:01:31
если я нажму «играть» здесь, вы увидите, что количество моих лучших
00:01:33
профессиональных звонков
00:01:35
выросло до 49 и
00:01:38
давайте поспорим, конечно, что это плохо, но
00:01:41
это потому, что я устанавливаю цвета в
00:01:42
этих
00:01:43
сферах, все они имеют один и тот же материал,
00:01:45
но я устанавливаю их цвета
00:01:47
с помощью примитива
00:01:51
с параметром цвета и параметром цвета,
00:01:55
любым параметром на самом деле, когда вы
00:01:58
установите его,
00:01:59
чтобы установить его, вам нужно создать
00:02:01
другой экземпляр этого материала,
00:02:03
а затем вы можете установить параметр при
00:02:05
создании другого экземпляра.
00:02:07
Unreal больше не может оптимизировать рендеринг,
00:02:09
визуализируя две сетки
00:02:10
с одним и тем же материалом, потому что
00:02:14
существуют разные экземпляры. если один
00:02:16
красный, а другой синий,
00:02:17
у них разные настройки, они не могут
00:02:19
отображаться одновременно,
00:02:21
но если вы отправите эту информацию
00:02:24
непосредственно на видеокарту и скажете: «Эй,
00:02:27
это один и тот же материал,
00:02:29
просто измените параметр для
00:02:32
обоих из них». эти сетки, если вы отправляете
00:02:36
разные цвета в качестве информации в
00:02:37
самой сетке,
00:02:39
тогда вы можете иметь один и тот же материал, и
00:02:41
материал будет считывать
00:02:42
информацию
00:02:43
из сетки, и это возможно в
00:02:45
реальности,
00:02:46
так как вы это сделаете, я собираюсь остановитесь
00:02:49
здесь,
00:02:50
и я собираюсь сначала показать вам, что
00:02:51
происходит, когда вы используете эту оптимизацию,
00:02:55
поэтому здесь я устанавливаю свои цвета
00:02:59
с помощью динамических экземпляров материала, теперь я
00:03:01
собираюсь установить их, у
00:03:02
меня есть что-то, что называется примитивными
00:03:04
данными,
00:03:07
поэтому я собираюсь смоделировать снова,
00:03:13
и, как вы можете видеть, количество вызовов отрисовки уменьшилось,
00:03:17
поэтому теперь их восемь вместо
00:03:19
предыдущих 10.
00:03:21
и это
00:03:24
спасибо,
00:03:28
это действительно хорошо для оптимизации,
00:03:30
потому что теперь вы можете иметь
00:03:32
сотни сеток с одним вызовом для
00:03:34
всех из них,
00:03:35
а это восемь из-за
00:03:37
других вещей в сцене,
00:03:38
свет не может рисовать, вызывает самолет,
00:03:41
небо, которое находится за ним, все,
00:03:43
но все же 49 против восьми вызовов отрисовки,
00:03:46
это уже что-то,
00:03:47
а теперь позвольте мне показать вам, как я это сделал
00:03:49
первым вам нужно настроить его
00:03:51
в материале, чтобы мой материал у
00:03:54
меня был тот же материал, но у меня
00:03:57
здесь есть обе настройки цвета,
00:03:59
как мы всегда делали это раньше, поэтому
00:04:02
векторный параметр,
00:04:03
затем я устанавливал цвет через него,
00:04:07
но у меня есть экран здесь,
00:04:10
когда я активирую это, когда я устанавливаю это значение
00:04:13
на
00:04:14
единицу, я интерполирую, чтобы использовать цвет из
00:04:16
чего-то, что называется примитивными данными,
00:04:18
а примитивные данные
00:04:21
похожи на массив поплавков, которые устанавливаются в
00:04:24
вашей сетке, а
00:04:25
не в материале, и материал
00:04:27
читается из сетки,
00:04:28
поэтому вам просто нужно сказать: «Эй, я хочу
00:04:30
использовать этот индекс
00:04:31
для этой переменной», поэтому, например, мои
00:04:34
примитивные данные здесь
00:04:37
настроены на использование индекса 4. Итак, что вы делаете,
00:04:40
вы создаете
00:04:42
такой параметр, а затем активируете это
00:04:45
настраиваемое примитивные данные,
00:04:47
теперь вам нужно установить индекс,
00:04:50
поэтому, если я начну этот вектор, например,
00:04:52
с индексом, давайте посмотрим на тот, который свободен, пять,
00:04:55
он будет использовать индекс пять, шесть,
00:04:58
семь и восемь, это будут
00:04:59
каналы
00:05:00
красный зеленый синий и альфа, так что это вектор
00:05:03
здесь
00:05:04
использует эти каналы, ну, начиная
00:05:08
с нуля, поэтому ноль - красный, один - зеленый, два - синий,
00:05:11
а три - альфа,
00:05:13
затем способ установки его с помощью чертежей
00:05:17
не сохраняйте это, вы переходите к своему чертежу,
00:05:23
вы получаете свою сетку,
00:05:26
как эта статическая здесь я
00:05:28
просто получаю сферы со сцены,
00:05:30
затем получаю от каждой из них статический
00:05:32
компонент сетки
00:05:34
и вызываю набор пользовательских примитивных данных с
00:05:37
плавающей запятой.
00:05:38
Здесь я устанавливаю индекс четыре, потому что
00:05:40
это мой параметр, который определяет,
00:05:42
какой тип цвет, я хочу использовать
00:05:44
тот, который является стандартным параметром, или
00:05:46
тот, который является
00:05:47
примитивными данными, поэтому я устанавливаю его как
00:05:49
примитивные данные,
00:05:50
а затем я устанавливаю цвет с помощью этого узла,
00:05:53
устанавливаю пользовательский примитивный коэффициент данных 3. у
00:05:56
вас есть и другие, но для цвета,
00:05:58
просто используя это, мне просто нужен цвет,
00:06:00
а затем я устанавливаю случайный цвет для
00:06:02
каждой сферы, и так же, как вы можете сделать с
00:06:04
обычными параметрами,
00:06:06
вы можете анимировать их, чтобы
00:06:09
я не анимировал синий цвет в
00:06:11
самом проекте.
00:06:12
Сразу же я анимирую его в
00:06:15
материале, используя этот узел сдвига,
00:06:17
а затем передаю время, чтобы определить, насколько сильно нужно
00:06:20
сдвинуть, чтобы он менял цвет
00:06:22
в цикле, но
00:06:26
потому что я меняю что-то в
00:06:28
сетке, а не в материал,
00:06:30
и видеокарта
00:06:32
все еще может распознать его как одну и ту же сетку,
00:06:34
только с некоторыми другими параметрами,
00:06:37
Unreal может
00:06:38
объединить все вызовы отрисовки из этих
00:06:40
сфер
00:06:41
в один вызов отрисовки, поэтому вместо 49
00:06:44
вызовов отрисовки
00:06:45
у вас есть только восемь ах, никто сказал мне, что я
00:06:49
не делал этого на своем главном экране, поэтому позвольте мне
00:06:51
показать, что
00:06:56
материал снова настроен,
00:07:00
активировав эту опцию здесь, используйте
00:07:02
пользовательские примитивные данные
00:07:05
в векторе
00:07:08
для параметра, вы также можете сделать это с
00:07:10
плавающими числами, и эти настройки вы можете
00:07:12
делайте их только
00:07:13
для вещей, которые являются плавающими, хорошо, вы
00:07:14
не можете сделать это с текстурами,
00:07:16
если у вас разные текстуры для
00:07:18
разных материалов
00:07:19
или просто разные экземпляры с
00:07:21
разными текстурами,
00:07:23
они не будут объединены вместе,
00:07:25
это не будет один и тот же клуб рисования, который
00:07:26
вы можете пока делайте это только с плавающими числами,
00:07:30
так что это была настройка в материале,
00:07:32
и в чертеже
00:07:38
это дает набор компонентов статической сетки,
00:07:41
набор пользовательских примитивных данных с плавающей запятой. Я
00:07:43
использую это, чтобы установить тот скаляр, который
00:07:45
решает, какой параметр я хочу использовать,
00:07:47
и я' Я использую секунды и примитивный
00:07:49
вектор данных, чтобы определить
00:07:51
цвета, хорошо, так что
00:07:54
это первый трюк, второй трюк, который
00:07:59
вы можете дать мне прояснить,
00:08:06
вы можете манипулировать ультрафиолетовыми лучами в своих материалах,
00:08:08
допустим, вы смоделировали свою сетку
00:08:11
и хотите масштабировать ультрафиолетовый луч, который
00:08:14
вы хотите не нужно делать это в
00:08:16
самой сетке ev, а затем повторно импортировать в
00:08:18
реальность. Вы можете сделать это непосредственно в
00:08:20
масштабе материала.
00:08:33
здесь справа
00:08:34
12 слева
00:08:37
я могу перевернуть v, так что теперь черный вверху,
00:08:42
так что я могу это сделать, я могу делать оба одновременно,
00:08:47
видите, но это выполнение обоих
00:08:49
одновременно, переворачивание
00:08:50
обоих x - это точно так же, как поворот на 180
00:08:53
градусов, и я могу повернуть на
00:08:54
180 градусов с этой переменной угла
00:08:56
здесь
00:08:57
то же самое, но на самом деле это работает для
00:09:00
любого угла,
00:09:03
поэтому я могу вращать свои ультрафиолетовые лучи,
00:09:07
я могу решить, будет ли плитка или нет,
00:09:09
например, у меня есть этот
00:09:10
векторный параметр здесь чтобы контролировать смещение u и v
00:09:13
и заданный тип,
00:09:15
и я могу сместить на вас настройку v,
00:09:20
и это изменило время, поэтому, если я верну это значение
00:09:24
обратно на ноль
00:09:27
и увеличу время, материал
00:09:29
повторяется, давайте наведем порядок,
00:09:30
я могу отключить время,
00:09:34
так что теперь материал не захватывает
00:09:37
текстуру, на самом деле текстура не так уж и
00:09:38
сильно,
00:09:39
поэтому текстура не повторяется, а ее
00:09:41
границы просто
00:09:42
зажимаются, теперь позвольте мне показать вам, как вы делаете
00:09:45
эти манипуляции с материалом, поэтому
00:09:47
позвольте мне просто вернуть их к одному,
00:09:57
хорошо, так что в материал
00:10:00
для вращения, у вас есть ротатор,
00:10:04
вы передаете свою координату, я передаю
00:10:06
здесь нулевую текстуру,
00:10:08
мне не нужно, если вы ничего не передаете в
00:10:10
этот узел, он все равно работает так же,
00:10:12
я просто нажимаю координату, потому что,
00:10:13
если бы я захотел это что-то вроде
00:10:16
ультрафиолетовой координаты или какой-то другой набор ультрафиолетовых лучей, я
00:10:19
могу управлять им,
00:10:21
тогда вам нужно перейти
00:10:24
во время, а также для ротатора,
00:10:26
вы должны установить скорость, чтобы это работало так,
00:10:28
как я сделал здесь,
00:10:29
вам нужно установить скорость в число пи два
00:10:32
раза два,
00:10:34
и это на самом деле, если вы не знаете число «пи»
00:10:36
наизусть,
00:10:37
вы можете просто ввести «пи» здесь, есть узел «пи», в
00:10:40
который вы входите, вот «пи»,
00:10:44
скопируйте его отсюда,
00:10:48
затем вы можете выбрать ротатор,
00:10:52
вставьте его сюда дважды вы можете выполнять математические операции с
00:10:55
этими числами в комнате,
00:10:58
так что вы можете сделать это сейчас, у меня есть у, умноженный на
00:11:01
два,
00:11:03
хорошо, поэтому, как только у меня будет пи, умноженный на два,
00:11:06
я могу контролировать свое вращение
00:11:09
от нуля до единицы, так что единица равна 360 градусам,
00:11:15
и что я здесь сделал у меня есть угол,
00:11:17
который будет вводиться от 0 до
00:11:19
360. Затем я делю его на 360, что означает,
00:11:23
что если пользователь вводит
00:11:25
180, он станет 0,5, если пользователь
00:11:28
вводит 360,
00:11:30
360 на 360, так что
00:11:33
это преобразованный угол в диапазоне
00:11:36
от нуля до единицы, а затем я передаю его во
00:11:37
вращение
00:11:38
со скоростью, установленной на два пи, вот как я
00:11:42
вращаю текстуру, затем,
00:11:44
чтобы сделать
00:11:47
переворот, у меня просто есть эти
00:11:50
параметры статического переключателя, так что, если вы
00:11:52
хотите создайте параметр статического переключателя,
00:11:55
тогда вы можете иметь что
00:11:57
-то истинное или ложное,
00:11:58
и то, что будет использоваться,
00:12:01
зависит от того, что подключено к истине или от
00:12:03
того, что подключено или ложно,
00:12:06
поэтому для переворота u, если это правда,
00:12:09
я использую минус один, и если это ложь, я используйте
00:12:13
одно и то же для переворота v, но затем я складываю
00:12:16
эти один или минус один в
00:12:18
одно число с плавающей запятой два, так что поток два означает, что это
00:12:21
похоже на вектор, который имеет
00:12:22
rgb или xyz, но у него есть только два числа,
00:12:26
так что это похоже на координату uv, которая есть
00:12:28
только u и v
00:12:29
x и y или r и g, но все это
00:12:32
одно и то же, это просто
00:12:33
группа чисел, поэтому я соединил их,
00:12:37
так что у меня есть x и y или u и v, и я
00:12:40
умножаю их на uvs,
00:12:42
так что умножение uvs на минус единицу
00:12:46
- это то же самое, что переворачивание uvs, затем
00:12:49
после того, как я перевернул v,
00:12:51
я вычитаю смещение
00:12:54
из моего векторного параметра здесь, evs, кстати,
00:12:58
я сделал, чтобы у них были имена, когда вы
00:13:00
выбираете этот параметр,
00:13:01
если вы идете сюда, чтобы параметр
00:13:02
настройки, у вас есть имена каналов,
00:13:04
поэтому вы можете настроить свое собственное имя для
00:13:06
каждого канала в целом, но вместо того, чтобы
00:13:08
быть такими же, как
00:13:09
красный, зеленый, синий и альфа, вы можете установить
00:13:11
для них свои собственные имена,
00:13:15
поэтому я вычитаю эти смещения, которые будут
00:13:18
перемещать координаты и затем я
00:13:21
умножаю их
00:13:22
на время, установленное пользователем,
00:13:26
что позволяет мне видеть больше повторяющихся текстур,
00:13:31
если число велико или меньше, если
00:13:33
число меньше, так что представьте, что у вас
00:13:34
есть
00:13:35
ультрафиолетовое изображение, позвольте мне показать вам на
00:13:37
практике,
00:13:39
гм, сдвиг p, в настройках моего проекта я установил Shift P в качестве
00:13:42
ярлыка для отображения
00:13:44
предварительного просмотра, так что это быстро,
00:13:47
все в порядке, поэтому я просматриваю UV-развертку
00:13:50
этого куба здесь, чтобы они начинались с нуля,
00:13:51
нуля здесь,
00:13:52
нуля максимума здесь, по y, а затем они становятся
00:13:54
одним здесь здесь они равны единице на y
00:13:56
и нулю на x, поэтому он зеленый, потому что
00:13:58
в реальном времени отображает ультрафиолетовые
00:14:00
лучи или любую любую группу из двух чисел
00:14:03
зеленым, красным и зеленым,
00:14:06
поэтому здесь вверху у меня есть один красный
00:14:10
и ноль на зеленом, и именно поэтому вы см.
00:14:12
эти цвета внутри,
00:14:14
это координаты uv uv теперь, если я
00:14:16
их умножу,
00:14:20
вот что произойдет, я умножу
00:14:24
на меньшее число, поэтому 0,5,
00:14:27
когда я нажму Enter, что произойдет,
00:14:29
это
00:14:30
ноль, ноль, умноженный на ноль целых пять, будет два
00:14:33
нуля, так что этот угол не изменится,
00:14:36
но этот угол изменится,
00:14:38
потому что это
00:14:39
один и один раз ноль целых пять равняется
00:14:43
0,5,
00:14:44
так что он станет темнее, я не
00:14:48
знаю, хорошо ли вы
00:14:49
это видите, позвольте мне сказать при
00:14:51
неосвещенном освещении, если это не очень заметно,
00:14:54
поэтому один 0,1, чтобы быть более резким, поэтому он
00:14:58
становится
00:14:59
очень темным, что означает, что этот угол здесь равен
00:15:00
0,1,
00:15:02
и если этот угол равен 0,1, вы видите
00:15:04
как
00:15:06
очень меньший кусок текстуры, который у вас
00:15:08
был бы,
00:15:09
это было бы гм в вашем материале
00:15:11
вместо всей текстуры, потому что
00:15:12
вся текстура теперь от нуля до единицы,
00:15:14
если я сделаю два, это более высокие числа,
00:15:17
числа выше единицы,
00:15:19
вы видите, что с этого момента он желтый,
00:15:21
потому что Unreal не может отобразить это в
00:15:23
цветах,
00:15:24
но это будет повторение текстуры,
00:15:25
потому что теперь у меня здесь от нуля до единицы и
00:15:27
от одного до двух,
00:15:29
что означает, что текстура будет
00:15:30
повторяться каждый раз, когда вы поднимаетесь выше единицы,
00:15:32
текстура начинает повторяться, и вы можете
00:15:35
увидеть это,
00:15:36
если вы сделаете freck freck - это узел, который
00:15:39
отображает только десятичная часть числа, поэтому, если
00:15:41
у вас 1,02,
00:15:43
это будет ноль, два целых, только если у вас
00:15:47
тысяча целых пять, это будет
00:15:50
0,5, не имеет значения, что стоит
00:15:51
за десятичными знаками, это только
00:15:54
десятичные дроби,
00:15:55
поэтому, если я просмотрю это сейчас, вы можете видите,
00:15:58
это происходит от нуля до единицы,
00:16:00
а затем у меня снова есть десятичные дроби от
00:16:02
нуля до единицы,
00:16:05
так что именно так работают текстуры мозаики,
00:16:09
а затем я выбираю, хочу ли я располагать плитку или
00:16:12
нет, и способ, которым я это делаю, если я хочу мозаику,
00:16:14
я просто использую это так, потому что
00:16:16
текстуры размещаются автоматически,
00:16:19
но если я этого не делаю, я использую насыщение. Насыщение
00:16:22
- это не то, что
00:16:24
меняет цвета так, как оно звучит,
00:16:26
насыщение
00:16:27
фиксирует значения от нуля до единицы, поэтому, если у вас
00:16:30
есть что-то меньше нуля,
00:16:31
оно станет ноль, и если у вас есть
00:16:33
что-то, что больше единицы, оно
00:16:34
станет единицей,
00:16:36
и когда вы делаете это с UV-координатами,
00:16:39
вы зажимаете
00:16:40
текстуру, чтобы UV-излучение было равно нулю и
00:16:43
единице, поэтому все, что выше единицы,
00:16:46
где бы текстура начала повторяться,
00:16:48
это просто один повсюду, так что вы
00:16:52
просто видите зажимы текстуры,
00:16:53
вы видите угол текстуры, поэтому,
00:16:58
когда я выключаю плитку здесь, как будто она
00:17:00
сейчас отключена,
00:17:01
и я пытаюсь повторить текстуру, она
00:17:03
не повторяется показывает
00:17:05
последний пиксель текстуры,
00:17:08
координата которого будет
00:17:09
повторяться снова и снова, но если я
00:17:12
снова включу тайлинг,
00:17:13
снова включив прилив, вы увидите, что
00:17:16
текстура повторяется,
00:17:18
так что это манипуляция УФ с
00:17:20
материалами,
00:17:22
теперь давайте перейдем к чему-то другому,
00:17:26
проекции текстуры.
00:17:29
в моем уроке на YouTube есть два-три видеоролика с
00:17:31
подробным описанием того,
00:17:33
как это реализовать, поэтому я не буду
00:17:35
объяснять всю математику,
00:17:36
но я хочу показать вам, что это
00:17:38
возможно, потому что это круто,
00:17:41
иногда вам просто хочется иметь
00:17:43
текстуру поверх вашей сетки, и
00:17:45
не имеет значения,
00:17:46
как сетка наложена на УФ-карту, она обернута,
00:17:50
вы просто хотите, чтобы она была поверх вашей
00:17:51
сетки, как если бы она была на экране,
00:17:54
так что именно так у меня есть моя текстура, теперь вы
00:17:56
можете видеть текстуру следует за
00:17:57
экраном объектов,
00:17:59
но все равно только на объектах, как если бы
00:18:01
объекты были маской для текстуры.
00:18:04
Это то, что мы называем защитой экрана.
00:18:09
Проекция экрана очень проста: вы
00:18:10
просто получаете положение экрана,
00:18:12
затем есть настройка UV экрана
00:18:15
и это просто ультрафиолет вашего
00:18:19
экрана, поэтому, если я заставлю объект занять
00:18:22
весь экран здесь, вы увидите, что
00:18:23
он черный
00:18:24
в этом углу и желтый внизу,
00:18:29
а затем я умножаю на размер,
00:18:31
помните, что умножение повторяет текстуру
00:18:33
Итак, я умножаю на два, я повторяю
00:18:34
текстуру дважды,
00:18:37
а затем соединяю ее с ультрафиолетовыми лучами моей
00:18:39
текстуры, и это все, что вам нужно
00:18:41
сделать, чтобы получить этот эффект проекции экрана,
00:18:46
теперь есть еще один эффект, который я могу показать
00:18:48
вы
00:18:49
позволяете мне выбрать эти сетки и применить
00:18:55
мировую проекцию, теперь мировая проекция
00:18:59
похожа на экранную проекцию,
00:19:01
но вместо использования экрана она использует
00:19:03
координаты из мира, поэтому
00:19:05
важно то, где находится объект в
00:19:07
мире,
00:19:08
поэтому, если я перемещаю эту сетку
00:19:12
вы видите текстуру, помимо
00:19:15
эффекта размытия в движении, который происходит в реальности,
00:19:17
текстура нет, она не движется вместе с
00:19:20
кубом,
00:19:21
это похоже на то, что куб движется сквозь
00:19:22
текстуру, потому что текстура
00:19:24
отображается по
00:19:25
мировым координатам, это очень полезно
00:19:27
для
00:19:28
ландшафта, поэтому вы текстура может повторяться
00:19:30
по всему ландшафту,
00:19:31
поэтому не нужно беспокоиться об ультрафиолетовом излучении на
00:19:33
ландшафте,
00:19:35
но это может быть плохо для стен и предметов,
00:19:37
которые действительно вертикальны,
00:19:38
конечно, это потому, что я использую
00:19:40
там координаты из мира это x
00:19:42
и y, я мог бы использовать другие координаты, например,
00:19:44
я мог бы использовать только
00:19:46
x и z, но в
00:19:49
результате моя текстура будет
00:19:50
проецироваться сбоку, а затем
00:19:52
растягиваться вдоль этой стороны
00:19:53
и этой стороны, чтобы у вас был этот
00:19:55
компромисс: вы выбираете одну сторону
00:19:57
и другие будут растянуты.
00:20:00
Способ выполнения этой проекции:
00:20:03
вы получаете абсолютное положение вашего
00:20:06
пикселя, то есть это позиция
00:20:08
текущего
00:20:09
отображаемого пикселя, затем вы выбираете две
00:20:12
координаты из мира, в этом случае
00:20:14
я получаю r и g
00:20:15
это x и y, поэтому две карты должны
00:20:18
сделать пол
00:20:19
реальными x и y, затем я разделяю их
00:20:23
на размер, который я хочу, чтобы текстура была,
00:20:25
это будет размер,
00:20:26
поскольку эти единицы измерения указаны в реальных единицах измерения,
00:20:28
то есть в сантиметрах.
00:20:30
размер относительно этого, поэтому, если я
00:20:32
разделю его на 100, это означает, что я защищаю то, что
00:20:35
текстура будет повторяться каждый
00:20:37
метр, потому что один метр имеет 100
00:20:39
сантиметров,
00:20:40
поэтому, если я увеличу это, например, вы
00:20:43
увидите, что текстура становится больше,
00:20:46
вот и это это то, что я сказал раньше, если я
00:20:50
захочу, я мог бы использовать координаты x и z,
00:20:52
и все мои текстуры проецировались бы на x
00:20:55
и z с обеих сторон, но все
00:20:58
остальные вещи, которые
00:21:01
перпендикулярны
00:21:02
этой проекции продукта, просто
00:21:05
растягивают текстуру, чтобы она была очень полезно для
00:21:08
ландшафтов, когда вы используете x и y,
00:21:11
и это все, что вам нужно сделать. Рабочая позиция: выберите
00:21:13
две координаты, разделите их на размер, который вы
00:21:15
хотите, чтобы текстура была вот и все,
00:21:20
третья, и я не
00:21:22
буду вдаваться в подробности. просто хочу,
00:21:23
чтобы вы знали, что оно существует, потому что у меня есть
00:21:25
видео об этом, и требуется время, чтобы
00:21:27
объяснить, как оно работает,
00:21:29
это проекция планировщика деревьев,
00:21:32
теперь проекция обучения поездке такая же,
00:21:34
как проекция мира,
00:21:36
так как текстура находится в мире, а не в
00:21:39
сетка,
00:21:40
но это планировщик строк, это означает, что
00:21:44
он проецирует три плоскости текстуры на
00:21:47
ваши сетки,
00:21:48
поэтому у вас есть текстура со всех сторон
00:21:52
вашей сетки, не имеет значения
00:21:54
ее форма, где она находится, у
00:21:55
вас есть текстура со всех сторон, он определяет,
00:21:58
какую проекцию использовать в зависимости от того, в каком
00:22:01
направлении
00:22:02
смотрит сетка,
00:22:05
вы можете увидеть это там, это что-то вроде
00:22:07
смеси между верхней проекцией и
00:22:09
боковой проекцией,
00:22:10
вот здесь есть смесь, поэтому в планировщике поездок
00:22:14
вы делаете это вот так, э-э, вот проекция планировщика поездок,
00:22:18
как я уже сказал, я Я не буду вдаваться в
00:22:20
подробности, потому что у меня есть видео об этом,
00:22:22
и требуется время, чтобы объяснить
00:22:23
все подробно, но вы получаете нормали, а
00:22:26
затем выполняете некоторые математические вычисления с нормалями,
00:22:29
чтобы узнать,
00:22:31
какую проекцию вам следует использовать, это похоже на
00:22:33
создание маски
00:22:34
для всех трех проекций
00:22:37
нормалей, поэтому сначала вы создаете маску, а
00:22:39
затем используете
00:22:40
эту маску для фильтрации проекций
00:22:43
мировых проекций
00:22:44
текстуры,
00:22:47
поэтому у меня есть верхняя сторона и еще одна боковая
00:22:49
проекция,
00:22:51
и это та же логика, что и мировая
00:22:54
проекция Единственная разница в том, что я использую
00:22:58
три комбинации координат из
00:23:01
мира
00:23:02
из мирового положения, чтобы сделать эти
00:23:04
три проекции такими
00:23:06
зелеными и синими, красными и синими или x и z,
00:23:10
а затем x и y, а затем я смешиваю их,
00:23:13
используя маски, вычисленные из нормали,
00:23:16
а затем у вас есть проекции планировщика поездок,
00:23:20
это действительно круто, и если ваши совпадения, если
00:23:22
ваша сетка вообще не имеет ультрафиолета,
00:23:24
это способ применить
00:23:27
к ней текстуру, которая выглядит
00:23:29
хорошо,
00:23:30
выглядит так, что это имеет смысл
00:23:33
и что-то в этом роде еще вы можете сделать это,
00:23:36
например,
00:23:37
если вы хотите, чтобы текстура прилипала к вашей
00:23:39
сетке,
00:23:41
вы можете использовать этот
00:23:45
вектор преобразования из мирового пространства в
00:23:47
локальное пространство как для
00:23:48
вашей нормальной, так и для вашей мировой
00:23:50
координаты,
00:23:54
и у меня есть переключатель для этого в моем
00:23:55
материале, где он находится
00:23:57
проекция Trip Blender, позвольте мне просто
00:23:59
применить ее, чтобы
00:24:01
я мог видеть локальное пространство, поэтому, если я включу
00:24:04
это
00:24:05
сейчас, текстура будет следовать за сеткой,
00:24:09
и даже если я поверну ее, она все равно работает,
00:24:12
так что это похоже на то, что сетка была правильно УФ, но это
00:24:16
не так, я имею в виду кип, но я не использую его
00:24:18
UV, точно так же, как этот, я не использую телевизоры,
00:24:22
так что это очень круто для сеток, например, если
00:24:24
вы создаете процедурную сетку
00:24:26
из кода или чертежей, вам не нужно
00:24:28
создавать EV, если вы используете материал
00:24:30
например, это немного тяжеловато, потому что
00:24:31
вы выбираете
00:24:32
три текстуры для каждой текстуры, например,
00:24:34
три, это будет три текстуры для
00:24:36
основного цвета, три
00:24:37
текстуры для шероховатости, металлик и т. д.,
00:24:40
три текстуры для нормального,
00:24:42
это тяжелее, но оно выполняет свою работу,
00:24:47
и в настоящее время оно вроде бы тяжелее, но это
00:24:49
не похоже на то, что он никогда не закончится,
00:24:50
он запускается и
00:24:51
работает нормально, особенно в этих 30
00:24:53
сериях,
00:24:55
еще один трюк, давайте перейдем к следующему,
00:25:00
теперь этот каждый раз, когда я вижу, что люди
00:25:02
хотят вращать свои сетки
00:25:04
в течение некоторого периода времени, постоянно
00:25:06
вращаясь сетку они делают это по галочке на
00:25:08
чертеже,
00:25:09
это способ сделать это, но если вы просто
00:25:11
хотите повернуть сетку,
00:25:13
вы можете сделать это в материале, позвольте
00:25:15
графическому процессору вычислить вращение,
00:25:17
и тогда вы сэкономите много
00:25:18
вычислительной мощности, потому что графический процессор делает
00:25:20
это так, как
00:25:21
будто вы едите треугольники и пиксели на
00:25:23
завтрак, как
00:25:26
будто вы вообще не платите никаких затрат,
00:25:29
и способ сделать это
00:25:33
нереальный, есть некоторые примечания для вас, не так ли,
00:25:35
вам даже не нужно
00:25:36
серьезно разбираться вне математики, тот, который нужно
00:25:39
вращать, - это
00:25:40
вращаться вокруг мировой оси. Я использую
00:25:43
дешевую версию,
00:25:45
она позволяет мне вращаться только по x,
00:25:48
y или z, если вам нужен какой-то другой вектор,
00:25:50
который не является одним из этих
00:25:52
трех перпендикулярных, вам
00:25:54
придется использовать другой узел и тип
00:25:56
make,
00:25:57
посчитайте сами, но если вы
00:25:59
просто хотите повернуть его
00:26:00
по одной из этих трех осей, это
00:26:03
самый дешевый вариант, он выполняет вычисления
00:26:04
другим способом,
00:26:05
который легче, чем другой способ, и
00:26:10
требует только от вас чтобы установить
00:26:11
величину вращения, которую я использую
00:26:14
что-то время от времени, чтобы она со
00:26:16
временем менялась, поэтому я продолжаю вращать сетку, затем
00:26:20
вам нужно установить точку поворота, и вы
00:26:22
можете получить положение актера
00:26:23
в своих материалах, чтобы это была
00:26:25
точка поворота для моей сетки
00:26:27
и положение поворота требует
00:26:29
положения вершины, которую вы
00:26:30
вращаете,
00:26:31
если вы получаете абсолютное мировое положение,
00:26:34
это положение вашей вершины,
00:26:36
поэтому в реальном материале происходит
00:26:40
несколько выходов, некоторые из них
00:26:43
выполняются и
00:26:44
выполняются в вершинный шейдер
00:26:46
материала материал имеет вершину и
00:26:47
пиксельный шейдер вершина — это то,
00:26:49
что выполняется
00:26:50
только для каждой вершины в сетке
00:26:54
и для каждой вершины в сетке, а
00:26:57
пиксельные шейдеры выполняются для каждого пикселя на
00:27:00
экране, поэтому все, что вы можете сделать в вершинный
00:27:03
шейдер
00:27:04
обычно работает быстрее, потому что
00:27:06
на экране отображается гораздо больше пикселей,
00:27:08
особенно когда сетка полноэкранная,
00:27:11
тогда у вас
00:27:13
вычисляются вершины, поэтому это работает на
00:27:16
вершинном шейдере
00:27:17
и вращает вершины, но
00:27:19
потому что вы вращаете вершины,
00:27:21
позвольте мне здесь кое-что сломать,
00:27:24
потому что вращение вершин, вращение
00:27:26
всей сетки,
00:27:27
нормали, то, что
00:27:30
говорит о том, в каком направлении указывает поверхность,
00:27:33
также вращается вместе с ней, но на
00:27:36
самом деле она вращается, она не вращается,
00:27:37
проблема в том, что она не вращается поверните
00:27:39
автоматически, чтобы вы вращали
00:27:40
вершины, скажем, у вас здесь есть нормаль,
00:27:42
и это
00:27:44
эта фальшивая сфера, вот моя сетка, поэтому
00:27:47
вы сохраняете ее,
00:27:48
но нормаль все еще указывает
00:27:52
в одном и том же направлении, всегда, как сейчас,
00:27:54
я указывая на камеру, он всегда
00:27:56
указывает на камеру, и сетки
00:27:57
вращаются, поэтому они должны вращаться
00:27:59
вместе с сеткой, теперь способ исправить это -
00:28:01
использовать этот узел здесь.
00:28:03
исправить поворот вокруг x - это нормали, затем вы
00:28:06
передаете ось вращения, так как я используя
00:28:09
ось Z здесь,
00:28:10
я передаю Z
00:28:13
оси вращения, затем угол поворота,
00:28:17
который является тем же самым, что вы передаете
00:28:19
здесь величине вращения,
00:28:22
а остальные дают точку и т. д. по умолчанию
00:28:25
есть те же самые вещи, которые я сделал здесь
00:28:28
абсолютные четыре позиции, вершина мирового пространства,
00:28:31
на самом деле это не нормально,
00:28:32
нормалью будут нормали вершин,
00:28:36
так что это автоматически устанавливается на это, так что мне
00:28:38
не нужно этого делать, если
00:28:39
я не хочу
00:28:41
по какой-то причине установить некоторые пользовательские нормали,
00:28:43
маска движения я не нужно его устанавливать, это
00:28:46
что-то вроде того, что
00:28:47
вы хотите, чтобы некоторые его части не вращали
00:28:48
вершины, но я хочу, чтобы вращалась вся сетка,
00:28:50
поэтому я не использую ее,
00:28:52
а точка поворота, ну, если я не ошибаюсь,
00:28:55
точка поворота
00:28:56
по умолчанию позиция актера
00:28:59
без точки поворота равна нулю, о, но она равна нулю
00:29:03
за пределами сетки,
00:29:04
ни в коем случае нет, это просто ноль,
00:29:08
но это не имеет значения, я не знаю, почему
00:29:10
они поставили, что
00:29:11
они позволяют вам установить точку поворота
00:29:14
в этой функции, потому что это
00:29:15
для нормальных людей это не имеет значения, на самом деле
00:29:17
ты не можешь, ты можешь установить здесь что угодно, это
00:29:19
не будет иметь значения,
00:29:21
но они сделали, хм, поэтому я
00:29:23
на какое-то время запутался, а потом
00:29:26
я делаю вот что, я пропускаю
00:29:29
новая нормаль вершины касательного пространства, которая является
00:29:31
нормальной правильной головой после поворота
00:29:33
в вершинный интерполятор, а затем в
00:29:36
нормаль,
00:29:38
это фиксирует нормали, почему я использую
00:29:39
вершинный интерполятор,
00:29:41
потому что вершинный интеграл позже позволяет
00:29:43
вам вычислять вещи
00:29:44
в вершинном шейдере, а не в вершинном шейдере пиксельный
00:29:46
шейдер, так что это означает, что вместо того, чтобы
00:29:48
вычислять
00:29:49
все, что здесь есть, один раз для каждого пикселя,
00:29:52
я вычисляю это только
00:29:54
один раз для каждой вершины в сетке, что
00:29:56
намного быстрее,
00:29:59
даже если сетка имеет много вершин,
00:30:01
обычно у вас меньше вершин, чем у вас
00:30:03
есть пиксели на экране,
00:30:04
вот как
00:30:08
я делаю это преобразование. О, и есть
00:30:10
еще одна вещь, это действительно важно,
00:30:11
если вы выберете материал, позвольте мне показать
00:30:14
вам, что
00:30:16
это нормаль, которая получает результат
00:30:19
этого вычисления, так что это
00:30:21
нормали, которые
00:30:22
вращаются, и как вы можете видеть, что это
00:30:25
не обычная
00:30:27
карта нормалей, но она не предназначена,
00:30:30
потому что эти карты нормалей
00:30:32
обычно в основном
00:30:33
синие с небольшим количеством красного и зеленого, это не
00:30:36
потому, что это мировая
00:30:37
карта нормалей, это мгновенное мировое пространство,
00:30:40
поэтому оно сообщает, в
00:30:41
каком направлении ударяет лицо в мировых
00:30:43
координатах,
00:30:45
теперь эти материалы по умолчанию
00:30:47
ожидают карты касательных нормалей, синие,
00:30:50
в основном синие, вам придется
00:30:53
отключить их,
00:30:56
о, это нормаль вершин касательного пространства,
00:31:00
так что да, это касательная вещь, и
00:31:03
если вы действительно все забудете, я просто
00:31:05
сказал, что я сбиваю с толку, потому что я в замешательстве,
00:31:07
потому что это то, о чем мне
00:31:09
раньше приходилось беспокоиться,
00:31:11
но теперь, когда у них есть эта
00:31:12
вершина касательного пространства, это нормально, это
00:31:14
просто работает, если вы подключите ее сюда, а
00:31:16
затем вы можете смешать ее с
00:31:18
другими нормалями, так что
00:31:21
да, вам не нужно об этом беспокоиться,
00:31:23
вам придется беспокоиться о том, что
00:31:24
если бы вы использовали эту настройку здесь,
00:31:28
новое мировое пространство, видите, это то, что я
00:31:31
говорил о касательном пространстве, я должен
00:31:32
был прочитать это
00:31:33
касательное пространство это уже то, что этот
00:31:35
материал ожидает от
00:31:36
мирового пространства, это то, что если вы используете
00:31:42
это мировое пространство, все в порядке, теперь вы
00:31:44
видите, что нормали вращаются,
00:31:46
и это имеет смысл, и вам придется
00:31:49
отключить
00:31:50
касательное пространство, нормальное, поэтому, если вы отключите
00:31:52
изменение в пространстве нормально, это может быть полезно
00:31:53
и для других вещей в будущем,
00:31:55
если вы отключите это сейчас, материал
00:31:57
ожидает нормали мирового пространства,
00:32:00
и тогда это все еще работает нормально, но
00:32:03
если я оставлю это по умолчанию,
00:32:08
теперь все сломается, потому что я
00:32:10
прохожу мир нормальные координаты,
00:32:12
и для этого нужны касательные,
00:32:16
так что именно так вы вращаете сетку.
00:32:19
Извините за путаницу с касательной,
00:32:23
и на этом уровне у меня есть кое-что еще,
00:32:26
поэтому у меня здесь есть эта плоскость,
00:32:28
и эта плоскость
00:32:31
следует за моей камерой независимо от того,
00:32:35
где находится камера он всегда смотрит в
00:32:37
камеру,
00:32:38
и это то, что мне не нужно было
00:32:41
делать в чертежах,
00:32:42
и это лучший способ сделать это,
00:32:44
потому что мне не нужно ничего вычислять
00:32:45
в чертежах,
00:32:46
поэтому я делаю это и в материале, поэтому у меня есть
00:32:49
мой материал здесь.
00:32:50
Камера m-face и камера m-face
00:32:54
используют этот узел, выравнивают сетку по камере.
00:32:57
Это
00:32:58
матричные математические вычисления, которые Epic
00:33:01
сделал для нас. Я не делал эту функцию,
00:33:03
она уже есть в движке, вы можете
00:33:04
ее использовать,
00:33:06
и это делает сетка всегда обращена к
00:33:10
камере,
00:33:11
на самом деле она заставляет сетку следовать за
00:33:14
вращением камеры,
00:33:17
поэтому она не будет
00:33:20
гарантировать, что ваша сетка
00:33:21
по умолчанию будет обращена к камере, просто вы
00:33:24
используете этот узел в своем материале, вы
00:33:25
должны знать, как его использовать, вы Мне нужно
00:33:27
знать, как установить
00:33:28
здесь эти базы объектов, и это то, на что
00:33:30
мне потребовалось больше всего времени,
00:33:33
поэтому вот эта плоскость - стандартная
00:33:36
нереальная плоскость, позвольте мне показать вам, как вы устанавливаете
00:33:38
эти
00:33:39
базы, передняя часть этой плоскости
00:33:42
это
00:33:46
так, если я позволю себе, это наше локальное
00:33:50
пространство, поэтому, если я поверну плоскость, вы увидите
00:33:52
преобразование, когда штуковина
00:33:55
все еще движется с плоскостью, так что это
00:33:57
пространство плоскости здесь,
00:33:59
поэтому эта плоскость должна быть обращена к плоскости.
00:34:01
камера,
00:34:02
мне нужно использовать положительное значение z,
00:34:05
затем часть, которая поднимается в камере,
00:34:09
я думаю, что для этих плоскостей я не могу
00:34:13
отключить это вращение, просто чтобы
00:34:16
что-то проверить, я просто хочу увидеть текстуру,
00:34:20
все в порядке, так что верхняя часть текстуры,
00:34:22
о, ладно так что это странно, верхняя сторона
00:34:24
текстуры
00:34:25
минус y, потому что y указывает на
00:34:28
текстуру вниз, поэтому мне нужно инвертировать ее,
00:34:30
чтобы инвертировать вектор, вы просто умножаете его
00:34:32
на минус один, так что
00:34:34
это минус y, а его правая сторона равна
00:34:37
x, вы должны помнить это лицевая
00:34:40
сторона, то, к чему я хочу смотреть в камеру,
00:34:41
положительная
00:34:42
z, тогда правая сторона — это
00:34:45
x, а верхняя сторона — минус y,
00:34:49
поэтому я установил эти цифры
00:34:52
в своей заметке здесь, это
00:34:55
какое-то безумие, и это
00:34:57
почему мне потребовалось время, чтобы это понять,
00:34:59
позвольте мне показать вам кое-что, если я создам
00:35:01
вектор здесь,
00:35:02
точки в точках x,
00:35:06
а затем преобразую его
00:35:11
из пространства обзора, которое является пространством
00:35:13
камеры,
00:35:15
в мировое пространство, я увижу, что
00:35:18
нереально считается правой стороной
00:35:21
камеры, поэтому, если я просматриваю это
00:35:26
сейчас, правая сторона камеры будет
00:35:29
красной, что означает, что она указывает на
00:35:31
ось X,
00:35:33
если я поверну это сейчас относительно мира, на который
00:35:37
указывает правая сторона камеры
00:35:39
y, так что
00:35:40
x - это правая сторона
00:35:44
камеры, почему
00:35:51
сейчас это имеет смысл, это
00:35:53
будет безумие,
00:35:56
почему камера поднята,
00:36:00
поэтому верхняя часть обзора находится за
00:36:04
пределами мира, так что это синее, потому что
00:36:05
это z
00:36:07
если я укажу зеленым вверх по отношению к
00:36:10
камере, то теперь
00:36:11
y окажется вверху по отношению к моему взгляду здесь,
00:36:14
вы можете видеть, что это зеленый цвет, поэтому я всегда
00:36:16
указываю здесь
00:36:18
на верхнюю часть камеры, так что это
00:36:20
очень просто, но для камеры вверх Вот
00:36:23
почему вы всегда должны помнить, что это будет
00:36:24
важно, и z
00:36:27
— это направление, в котором смотрит камера,
00:36:30
так что теперь z, если я, если я сделаю
00:36:33
x, идите в том направлении, куда смотрит камера,
00:36:36
вы увидите, что это станет красным, если я заставлю
00:36:40
идти. почему мир движется в том
00:36:42
направлении, куда смотрит камера,
00:36:43
это становится зеленым,
00:36:44
и если я смотрю прямо вверх, я смотрю на
00:36:47
c, поэтому он становится синим,
00:36:48
значит, z — это передняя часть камеры в
00:36:51
пространстве обзора,
00:36:55
так почему я вам говорю это потому, что
00:36:57
это важно для того, как вы настраиваете этот
00:36:59
материал, вы должны помнить, что эти координаты x, y и z,
00:37:02
которые не написаны как x y и z,
00:37:03
но это то, чем они являются,
00:37:04
являются x y и z вида камеры,
00:37:08
поэтому x - это то,
00:37:11
какая ось вашего сетку, которую вы хотите
00:37:14
выровнять по оси
00:37:15
x камеры, и помните, что x
00:37:17
камеры находится правильно,
00:37:18
поэтому здесь я хочу выровнять
00:37:22
прямо по камере x, поэтому
00:37:25
x в плоскости, так что
00:37:28
я буду использовать x в качестве координаты
00:37:31
x на моей камере
00:37:32
теперь y, потому что камера вверху, так что я
00:37:36
хочу, чтобы мой мастер был лицом вверх
00:37:38
минус y, потому что вниз находится y в моей сетке, поэтому
00:37:41
я хочу, чтобы минус y был
00:37:42
обращен вверх, поэтому я установил это значение на ноль
00:37:45
минус один
00:37:46
и ноль альфа здесь не имеет значения при
00:37:47
взлете, поэтому ноль минус один
00:37:50
и ноль, и, наконец, то, что я хочу видеть перед
00:37:54
камерой, -
00:37:55
это z, но то, на что
00:37:58
смотрит камера, является положительным z, и этот z
00:38:02
в сетке идет против камеры,
00:38:04
поэтому это минус z, поэтому моя
00:38:07
координата здесь
00:38:08
0 0 минус 1 минус c, вот
00:38:11
как вы делаете сетку обращенной к
00:38:13
камере, вам нужно знать, какой x вы
00:38:14
хотите быть прямым вектором, другой
00:38:16
вектор - правильным вектором, а затем использовать
00:38:18
их в этот узел,
00:38:19
а затем вы используете смещение мировой позиции
00:38:21
в позиции вашего материального слова set,
00:38:24
а затем повернутые нормали, которые вы вводите
00:38:26
в нормаль,
00:38:28
и позвольте мне просто посмотреть, являются ли они
00:38:31
касательными или мир
00:38:36
в порядке, так что это то, что вам
00:38:38
нужно увидеть,
00:38:40
позвольте мне просто покажу вам здесь мои входные данные, чтобы
00:38:42
вы могли видеть мои сочетания клавиш, когда я их делаю,
00:38:44
так что это нормально для мира, вот что
00:38:48
выводит этот материал,
00:38:49
поэтому вам нужно настроить материал так, чтобы
00:38:51
мировые нормали
00:38:53
не касались друг друга, поэтому вам придется отключить
00:38:55
нормаль касательного пространства,
00:38:56
если вам нужно чтобы смешать
00:39:00
эти нормали с какой-либо картой нормалей в
00:39:03
вашей игре, которая обращена к камере
00:39:05
или что-то, что следует за камерой,
00:39:07
вам придется преобразовать это
00:39:09
в касательное пространство 10,
00:39:11
чтобы вы могли сделать это с помощью
00:39:13
узла преобразования, которым является этот узел очень полезно,
00:39:15
поэтому я конвертирую мировое пространство,
00:39:17
потому что это мир
00:39:19
в касательное пространство, так что теперь, если я заставлю этот
00:39:22
материал работать по умолчанию,
00:39:26
он будет работать нормально, а затем
00:39:28
я мог бы смешать
00:39:29
это с картами нормалей, так что, если у меня есть
00:39:32
нормальные карты карта, которая добавляет деталей,
00:39:33
я мог бы смешать их, потому что они
00:39:35
касаются касательной карты нормалей, поэтому
00:39:38
заставить их просто работать, но это не
00:39:40
то, что я хочу здесь, поэтому я просто оставлю
00:39:42
это,
00:39:43
чтобы использовать карты нормалей мира,
00:39:47
все в порядке, есть одно
00:39:50
предостережение с этим узел, который я вам покажу,
00:39:53
я покажу вам, как исправить
00:39:58
эту плоскость без этого материала,
00:40:02
с вращением ноль ноль ноль, если вы
00:40:04
повернете свою сетку,
00:40:06
вы увидите, что она больше не соответствует камере,
00:40:09
и тогда вы можете думать так: о,
00:40:10
решение состоит в том, чтобы просто поддерживать вращение на
00:40:12
нуле, но что, если ваш актер является дочерним элементом другого
00:40:14
актера, который вращается и перемещается по
00:40:16
миру, поэтому вы не можете просто быть уверенным, что
00:40:18
он всегда будет
00:40:19
на нуле, поэтому то, что вы делаете,
00:40:24
это вы исправьте это в материале,
00:40:27
основы
00:40:28
- это направление материала
00:40:31
сетки, которое должно быть обращено к этим направлениям
00:40:32
в камере.
00:40:33
Если вы вращаете основания с
00:40:35
вращением материала, вы исправляете эту
00:40:37
проблему,
00:40:38
поэтому давайте трансформируем
00:40:41
лишнее, что я выбрал из сетка
00:40:45
из локального пространства в
00:40:48
мировое пространство, я думаю, что это так,
00:40:52
я мог бы инвертировать
00:40:54
ее, но я
00:40:55
думаю, что это так, так что давайте посмотрим,
00:40:59
вам нужно установить ее на три оси,
00:41:05
хорошо, так что из локального пространства, чтобы
00:41:07
они ни вращались,
00:41:08
они это станет направлением, в
00:41:10
котором этот узел должен измениться
00:41:12
в мировом пространстве, поэтому они будут
00:41:14
вращаться вместе с сеткой,
00:41:18
поэтому, если это сработает, моя плоскость должна быть
00:41:19
обращена к камере, независимо от того, как я ее поворачиваю,
00:41:24
так что теперь я могу, да, это работает поэтому я могу
00:41:26
вращать свою плоскость, вы можете видеть, что ее вращение
00:41:27
меняется,
00:41:29
и она всегда обращена к моей камере, поэтому даже
00:41:31
если бы это был ребенок другого актера,
00:41:32
который перемещается по миру,
00:41:34
это все равно работало бы, теперь вы можете видеть,
00:41:37
что, когда я поворачиваю
00:41:39
освещение, меняются, и это
00:41:41
странно, правда, это потому, что я не
00:41:43
фиксирую нормали с помощью вращения,
00:41:46
как эта заметка делает математические расчеты, которые
00:41:51
он считает, что нормали не
00:41:55
находятся в мировой координате, или
00:41:58
это не нормали, есть
00:41:59
нормали,
00:42:00
это нормаль вершины
00:42:03
из сетки, и вы считаете, что она
00:42:06
не повернута,
00:42:07
но она повернута, поэтому нам нужно
00:42:10
ее развернуть
00:42:11
сейчас, чтобы повернуть эти оси, нам нужно было сделать
00:42:15
локальное пространство мировым пространством, чтобы
00:42:17
что-то повернуть, я
00:42:18
имею в виду теперь, когда это повернуто,
00:42:22
вам нужно обнулить вращение обратно, поэтому, чтобы
00:42:25
отменить поворот чего-либо,
00:42:27
вы просто инвертируете это, поэтому вы переходите из
00:42:29
мира в локальное пространство
00:42:31
и передаете это нормалям,
00:42:32
к счастью, этот узел позволяет вам устанавливать
00:42:35
нормали
00:42:37
для настройки нормалей,
00:42:42
и теперь, после того, как он сохранится,
00:42:46
теперь это всегда имеет смысл, независимо от того,
00:42:50
как повернуть, так что теперь это
00:42:52
немного, оно против солнца, оно
00:42:54
спиной к солнцу,
00:42:56
и оно темно, и независимо от того, как я поворачиваю
00:42:58
самого актера,
00:43:00
оно всегда темное, а если я повернусь к
00:43:02
солнцу,
00:43:03
оно яркое, вот как вы сделайте совпадение
00:43:07
всегда лицом к камере, это немного
00:43:09
сбивает с толку, я знаю,
00:43:10
просто приведу второй пример, чтобы он
00:43:12
действительно запомнился вам,
00:43:16
это конус, я собираюсь сделать так, чтобы конус
00:43:18
следовал за камерой, всегда обращенной
00:43:20
вправо, так что давайте посмотрим, что такое конус оси,
00:43:22
которые мне нужно установить на камере,
00:43:24
чтобы правая ось была
00:43:27
синей осью конуса, так что
00:43:31
давайте посмотрим, у меня есть они в качестве
00:43:33
экземпляров, так что он может просто создать
00:43:35
экземпляр моего материала,
00:43:42
хорошо, поэтому я создал пример моего
00:43:44
материала, я собираюсь применить его к
00:43:46
конусу,
00:43:47
теперь давайте посмотрим,
00:43:51
мы должны помнить, что это x y
00:43:53
и z камеры,
00:43:55
эти векторы здесь x y и z так что
00:43:59
правильно посмотрите на x, поэтому я
00:44:03
так правильно их назвал ось обзора, к чему я хочу быть
00:44:06
обращен прямо
00:44:07
на моей камере, посмотрите, вот один,
00:44:10
теперь мой конус, они должны быть
00:44:12
перпендикулярны, поэтому сетка
00:44:13
исчезла, теперь
00:44:14
мне нужно закончить это исправлять,
00:44:17
поэтому позвольте мне вернуться к стандартному
00:44:19
нормальному стандартному материалу чтобы я снова мог
00:44:21
видеть ось,
00:44:22
поэтому я хочу, чтобы z был направлен вправо, я хочу, чтобы
00:44:26
x был направлен вниз, а
00:44:29
в камере белый цвет был вверху, поэтому
00:44:32
моя ось обзора вверх здесь будет
00:44:38
минус x, потому что x я хочу, чтобы он был направлен
00:44:40
вниз, я хочу инвертировать это
00:44:41
будет минус
00:44:45
один, и ось, которая смотрит
00:44:48
прямо на камеру, будет
00:44:50
белой, и поскольку камера
00:44:53
по направлению к оси обзора находится от камеры,
00:44:56
а это будет по направлению к
00:44:58
камере, мне придется ее инвертировать, чтобы
00:45:00
это было будет минус один на g,
00:45:04
что равно y,
00:45:07
и если я применю это, это не
00:45:10
сработает, давайте посмотрим, не потому ли это, что он
00:45:14
повернут
00:45:15
нет, я сделал что-то не так, это
00:45:18
интересно, потому что
00:45:19
он вращается вместе с камерой
00:45:23
вправо, несколько осей подождите секунду
00:45:33
RGB в направлении оси обзора
00:45:40
g если я удалю этот материал,
00:45:45
это будет
00:45:48
правая ось обзора z,
00:45:51
тогда к виду x будет минус один на зеленых и
00:45:59
верхних осях обзора, а также красный,
00:46:02
интересно, это работает для плоскости, но
00:46:05
не для конуса,
00:46:13
мне любопытно,
00:46:16
я проверил это
00:46:25
сегодня подключите эти неправильные здесь правильные оси обзора
00:46:29
вверх на несколько осей в сторону нескольких осей
00:46:33
нет, они подключены правильно,
00:46:40
хорошо, мне придется разобраться с этим
00:46:43
позже, и я обязательно сделаю руководство о том,
00:46:47
как именно это работает, я просто предполагаю ценности
00:46:50
теперь здесь, я просто не особо
00:46:52
о них думаю, все в порядке, так что
00:46:57
я хотел, чтобы это выглядело так,
00:47:01
но сейчас это не имеет для меня смысла,
00:47:07
хорошо, мне действительно придется сделать
00:47:08
учебник по этому поводу как только я понял
00:47:10
это 100,
00:47:11
я думал, что понял это, но,
00:47:13
очевидно, я не понял, ну,
00:47:16
ладно, у меня есть кое-что еще на этом
00:47:19
уровне, что я хочу показать вам,
00:47:22
так что вы, возможно, сталкивались с этой
00:47:25
проблемой
00:47:26
в реальной жизни, прежде чем
00:47:29
позвольте мне смоделируйте это, чтобы, когда вы масштабируете
00:47:33
сетку
00:47:34
в реальности, вы могли видеть по
00:47:36
затенению сетки,
00:47:38
что нормали не фиксируются
00:47:40
вместе с масштабом, они не
00:47:41
меняются с масштабом,
00:47:43
когда у вас есть что-то в реальной жизни,
00:47:45
например, скажем у вас есть сфера, а
00:47:46
затем вы сжимаете сферу,
00:47:49
она становится плоской с обеих сторон, но
00:47:52
эти левые сетки здесь, как вы можете видеть,
00:47:55
они не выглядят так, как будто они становятся
00:47:57
плоскими,
00:47:58
когда их сжимают, они все еще
00:48:00
сфера там,
00:48:01
где моя здесь, сфера там
00:48:05
все еще выглядит круглым, но этот выглядит
00:48:07
простым,
00:48:09
как этот выглядит так, как будто он должен
00:48:11
выглядеть
00:48:12
так же, как этот вот этот конус, который теперь
00:48:15
выглядит как плоскость,
00:48:16
а этот нет, этот все еще
00:48:18
выглядит так, как будто он круглый
00:48:20
и такой же, как и цилиндр, так что с
00:48:22
материалами
00:48:23
вы можете исправить, как нормали выглядят после
00:48:27
масштабирования сетки,
00:48:28
вы можете исправить это, и то, как вы это делаете,
00:48:33
это очень простая математика, вы просто
00:48:37
получаете нормали вершин и делите их на
00:48:39
масштаб объекта,
00:48:42
я получаю масштаб объекта по
00:48:44
вершинам, потому что я не обязательно, чтобы это было
00:48:46
попиксельно, но это все, что вам нужно сделать, чтобы
00:48:49
разделить нормали на масштаб объекта
00:48:53
и поместить это в нормаль, теперь это
00:48:56
также будет
00:48:57
в мировом пространстве, поэтому вам нужно заставить ваш
00:49:00
материал
00:49:01
принимать мировое пространство или преобразуйте эти
00:49:03
нормы в касательные, как я показывал ранее. Вот
00:49:07
как вы это исправите, так что теперь, когда
00:49:10
сетка масштабируется,
00:49:11
вы можете видеть, что это так,
00:49:16
вы можете видеть, что она меняет
00:49:19
нормали, чтобы они
00:49:21
выглядели как плоскость, чтобы они выглядели так, как
00:49:23
говорит форма. выглядеть
00:49:27
так, это еще одна вещь, которую вы можете сделать, исправить
00:49:29
нормали, когда вы масштабируете сетку,
00:49:33
все прямо сейчас, следующий проход тени,
00:49:38
это то, что я считаю действительно
00:49:39
крутым, вы можете изменить
00:49:41
способ рендеринга сетки в ее тенях,
00:49:44
только вы можете перемещать сетку
00:49:47
или в только тени, чтобы вы могли изменить
00:49:49
это,
00:49:50
например, скажем, если вы знаете карту,
00:49:54
вы могли бы сделать куб похожим на сферу
00:49:57
в тени,
00:49:58
что я здесь делаю, я заменяю
00:50:00
непрозрачность этих сеток, они замаскированные
00:50:02
сетки с непрозрачностью, всегда равной единице, но
00:50:06
в их тенях я использую текстуру
00:50:08
здесь, текстуру шашки, чтобы установить
00:50:10
непрозрачность, и для этих двух спереди для
00:50:14
этого я делаю некоторые математические вычисления с
00:50:16
направлением света,
00:50:18
а затем я вычисляю, что если это что-то
00:50:22
обращено к свету,
00:50:23
оно прозрачно, а когда оно не
00:50:26
обращено к свету, оно становится
00:50:27
непрозрачным, поэтому здесь создается своего
00:50:29
рода эффект каустики, и это
00:50:32
красиво только
00:50:33
для сфер, это не работает с
00:50:34
другими сетками.
00:50:36
странно, потому что у вас просто одно лицо
00:50:37
сделано прозрачным, другое
00:50:39
нет, это не выглядит круто, оно
00:50:41
хорошо смотрится со сферами,
00:50:43
но оно находится в тени, как будто я могу переместить
00:50:45
объект, и тень всегда
00:50:46
будет такой,
00:50:48
и для куб, я делаю градиент,
00:50:51
который
00:50:52
непрозрачен внизу и прозрачен вверху, вот
00:50:55
почему у вас это в
00:50:57
тенях, у вас есть этот
00:50:59
градиентный переход снизу вверх,
00:51:02
и способ сделать это - использовать
00:51:05
узел пропуска тени э, позвольте мне
00:51:09
сначала показать другой, текстуру,
00:51:11
потому что это три разных
00:51:12
материала: один для текстуры,
00:51:14
один для этого градиента и один для
00:51:16
этого каустического эффекта,
00:51:20
так что у вас есть этот переключатель пропуска тени, это
00:51:23
то, что
00:51:24
он говорит, когда вы рендеринг теней
00:51:27
для этого объекта. Я хочу, чтобы вы использовали
00:51:29
все, что есть во входных данных тени,
00:51:31
когда вы не используете все, что есть во
00:51:34
входных данных по умолчанию,
00:51:35
поэтому для этой сетки для этого материала
00:51:38
я делаю то, что вы не читаете тени, когда
00:51:40
вы повторно визуализируйте ее для камеры или
00:51:42
что-то в этом роде,
00:51:44
используйте ее в качестве маски непрозрачности,
00:51:47
чтобы она всегда была непрозрачной, но когда вы
00:51:50
визуализируете тени,
00:51:52
используйте эту текстуру в качестве маски непрозрачности, поэтому
00:51:54
ваша тень выглядит
00:51:56
так,
00:51:58
и это именно то преобразование, которое я
00:52:00
делал делаю поворот сетки на
00:52:01
другом материале, так что все дело в том, что
00:52:04
переключатель пропуска тени знает, что
00:52:06
вы хотите
00:52:08
для двух других материалов, это тот
00:52:11
же материал, это тот же материал,
00:52:14
теперь для этих здесь, я также использую
00:52:18
путь тени я просто измените то, что я
00:52:21
отправил на теневой вход,
00:52:24
так что для куба, я шучу,
00:52:27
давайте используем куб здесь,
00:52:31
я получаю его мировую позицию,
00:52:34
размер границ объекта, который является
00:52:36
очень большим числом, поэтому он
00:52:37
просто выглядит как белый, я разделяю их,
00:52:40
поэтому я получаю значения от нуля до единицы
00:52:44
по всему кубу,
00:52:45
так что это градиент в зависимости от размера
00:52:47
куба, поэтому,
00:52:49
если я отфильтрую здесь
00:52:52
только красный цвет,
00:52:57
вы увидите, что в правильном направлении
00:52:59
у меня есть Здесь градиент от минус одного
00:53:01
к единице, поэтому он равен нулю
00:53:03
посередине, и
00:53:04
нереально не может отображать отрицательный цвет, поэтому
00:53:06
слева он черный,
00:53:09
тогда я масштабирую эти значения
00:53:13
с константой по шкале со значениями
00:53:16
1 и 0,5. константа по шкале добавляет
00:53:18
первое значение, а затем умножает на
00:53:20
второе,
00:53:21
поэтому я добавляю единицу, так что минус 1 к 1 плюс 1
00:53:25
становится 0 к двум,
00:53:28
а затем я умножаю его на ноль
00:53:30
целых пять, так что
00:53:32
ноль по-прежнему равен нулю, и дважды точка
00:53:35
пять, что равносильно делению на
00:53:36
два,
00:53:37
становится единицей, поэтому у меня есть диапазон ноль, два,
00:53:39
один для всех
00:53:40
x, затем я фильтрую только синюю
00:53:44
ось, которая является
00:53:45
осью z, поэтому у меня есть этот градиент
00:53:47
снизу вверх, который
00:53:49
я использую один минус, чтобы инвертировать то, что равно
00:53:51
нулю, а что единице,
00:53:53
поэтому я инвертирую градиент и использую это
00:53:56
с временным джиттером, временное дрожание -
00:54:01
это старый вариант, который уже существует в реальном мире,
00:54:04
который создает этот шаблон только из черно-белых
00:54:08
точек,
00:54:10
но
00:54:13
но каким-то образом рандомизирует эти точки что
00:54:15
они становятся размытыми
00:54:17
и выглядят как идеальный градиент, вы
00:54:19
не
00:54:21
очень хорошо видите точки, вы их не видите, я нет, я не
00:54:23
знаю, видно ли вы это на
00:54:24
экране, в потоке,
00:54:26
но вы можете видеть что-то вроде
00:54:28
точек, но это очень хорошо для такого
00:54:30
рода эффектов, когда вам
00:54:32
нужно, чтобы что-то было либо
00:54:34
единицей, либо нулем, и вы хотите иметь
00:54:36
градиент,
00:54:37
и поскольку это замаскированный материал, а не
00:54:40
полупрозрачный
00:54:41
непрозрачность равна единице или нулю, поэтому
00:54:43
я использую здесь этот эффект,
00:54:45
и я просто использовал случайное значение, чтобы сделать эти
00:54:47
точки более рандомизированными,
00:54:50
и вам нужно установить его на единицу, чтобы сделать это,
00:54:52
а затем я передаю это в
00:54:54
переключатель теневого пути,
00:54:56
так что вот почему мои тени
00:55:00
выглядят как этот градиент, который непрозрачен
00:55:03
внизу, потому что
00:55:04
у меня белый внизу, черный вверху,
00:55:10
поэтому он выглядит непрозрачным
00:55:11
внизу и прозрачным вверху,
00:55:16
а для сферы это что-то, это
00:55:20
просто немного другое из математики, но
00:55:22
все еще использую лучший переключатель тени,
00:55:24
поэтому для тени сферы у меня есть
00:55:27
нормальный свет, это то, что
00:55:28
я просто использовал, чтобы сказать, в каком направлении
00:55:30
свет, это не автоматически,
00:55:32
потому что в нем может быть любое количество
00:55:33
источников света
00:55:34
сцена, так что это не
00:55:36
то, что
00:55:37
вы можете сделать автоматически, вам нужно
00:55:39
создать нормаль самостоятельно и установить ее,
00:55:42
затем я нормализую ее, чтобы убедиться, что это
00:55:43
нормально, это просто направление с размером
00:55:45
в единицу,
00:55:46
это вектор с размером в единицу, затем я
00:55:50
расставляю точку пикселем с точкой нормали пикселя
00:55:53
- это то, что выводит
00:55:56
минус единицу, если это так, это
00:55:59
направление моего света,
00:56:02
это здесь, так что все нормали,
00:56:04
указывающие в этом направлении, становятся
00:56:06
единицей, потому что точка - это, если два вектора
00:56:09
указывают в одном направлении
00:56:10
результат один, если они направлены
00:56:13
перпендикулярно друг другу, то
00:56:15
это ноль, а если они направлены
00:56:16
совершенно противоположно друг другу,
00:56:18
это минус один, поэтому вы видите
00:56:21
здесь
00:56:22
один, затем переход до
00:56:24
нуля, а затем на этой стороне он отрицательный.
00:56:27
Итак, я делаю точку, тогда я только считаю, что
00:56:30
считаю
00:56:31
все значения от точки положительными, поэтому
00:56:33
обе стороны здесь положительны,
00:56:36
тогда я инвертирую их, чтобы
00:56:39
белый посередине, один посередине
00:56:43
и черный
00:56:44
по бокам,
00:56:48
и это хм
00:56:52
это значения от 0 до 1,
00:56:54
затем я конвертирую их
00:56:55
в диапазон, который лучше работает с временным джиттером, и
00:57:00
я умножаю их на два, на самом деле я
00:57:03
провел здесь небольшое тестирование и
00:57:04
в итоге получил эти числа, теперь я
00:57:06
понимаю, что я могу просто умножить на два,
00:57:08
потому что это все, что я делаю там
00:57:11
два, поэтому я умножаю это на два,
00:57:14
просто чтобы мое дрожание временно
00:57:19
сделало все более белым на границах,
00:57:25
чтобы быстрее добраться до белого, но все еще
00:57:28
почти черного в середине, а затем я насыщаю эти
00:57:31
значения,
00:57:32
просто чтобы убедиться, что все находится между
00:57:34
нулем и единицей,
00:57:38
потому что в этом вся хитрость, он
00:57:39
зажимает,
00:57:41
и я передаю это в переключатель пути тени,
00:57:43
поэтому
00:57:44
на своем уровне
00:57:48
я установил этот вектор в материал, позвольте мне
00:57:51
посмотреть
00:57:52
здесь, поэтому я установил это вектор здесь на
00:57:55
что-то, что
00:57:57
было примерно в направлении моего света,
00:58:00
я могу изменить его здесь, вы видите, чтобы я мог
00:58:02
повернуть его,
00:58:03
он перестает, он перестает работать, потому что моего
00:58:05
света на самом деле нет
00:58:07
в других направлениях, поэтому я нашел
00:58:09
направление света здесь
00:58:12
и у меня теперь есть этот эффект
00:58:18
для моих следующих трюковых мультишейдерных
00:58:22
моделей Moti, это что-то
00:58:25
новое в Unreal,
00:58:26
поэтому я понимаю, что большинство людей еще не знают
00:58:28
об этом,
00:58:30
но это помогает с производительностью,
00:58:33
позвольте мне снова показать здесь некоторую статистику, поэтому
00:58:35
вместо этого
00:58:37
рендеринг сцены,
00:58:43
так что у меня есть, сколько у меня здесь, у меня
00:58:52
здесь, на моем уровне, 114 таких окон,
00:58:55
и, как вы можете видеть,
00:58:59
давайте посмотрим, смогу ли я снова найти эту позицию,
00:59:04
поскольку вы можете видеть, что они визуализируются
00:59:06
как
00:59:08
э-э, на самом деле они рендеринг выполняется
00:59:10
примерно со
00:59:11
160 вызовами отрисовки, и это вполне реально,
00:59:15
их оптимизация так что Unreal знает, что это одна и
00:59:18
та же сетка с одинаковыми
00:59:20
материалами, поэтому Unreal исправляет вызовы, но все
00:59:23
же это много вызовов отрисовки, и каждая из
00:59:25
этих сеток позволяет мне показать вам
00:59:27
настройки в сетке, у
00:59:29
них есть три материала: один для
00:59:31
окна,
00:59:32
один для дерева, один для стекла,
00:59:34
один для дерева и один для этих
00:59:36
сфер, здесь
00:59:37
и есть три разные
00:59:38
модели затенения: одна полупрозрачная,
00:59:41
другая — по умолчанию. крышка, а
00:59:43
другой - материал автомобильной краски,
00:59:46
материал с двойным покрытием,
00:59:50
поэтому раньше вам приходилось делать это
00:59:52
с тремя разными материалами,
00:59:55
но теперь с настоящим,
00:59:59
поскольку я не знаю, начиная с 423 или
01:00:02
чего-то в этом роде,
01:00:03
это не супер недавно, но это последнее,
01:00:06
вы можете использовать его по-другому, вы
01:00:08
можете использовать несколько материалов по-
01:00:09
другому,
01:00:10
поэтому позвольте мне заменить все окна
01:00:12
этой моделью,
01:00:15
мои звонки дронов немного сократились, поэтому теперь
01:00:17
со 160 их стало 140.
01:00:21
позвольте мне, если у вас было несколько сетки, они
01:00:24
не одинаковые,
01:00:26
стрелка не сможет выполнить эту
01:00:28
оптимизацию, поэтому давайте
01:00:29
эмулируем, если бы у вас было это, например, скажем,
01:00:32
несколько персонажей с большим количеством
01:00:33
материалов в них, поэтому я собираюсь
01:00:35
отключить эту оптимизацию
01:00:39
что-то от lamech
01:00:43
создание экземпляров, давайте отключим его, поэтому, если я
01:00:46
отключу это,
01:00:47
представьте, что каждая из этих сеток представляет собой
01:00:50
совершенно другую сетку
01:00:51
с разными материалами, поэтому они будут
01:00:54
отображаться, они будут отображаться как 488
01:00:59
вызовов отрисовки 488 вызовов отрисовки, если бы я
01:01:02
использовал
01:01:03
другую сетку, которая имеет три
01:01:05
материалы, которые я только что поместил
01:01:07
сюда, это не три материала, а только два,
01:01:09
если бы я использовал другой,
01:01:13
это подскакивает до восьмисот сорока,
01:01:16
что-то звонит,
01:01:18
так что давайте вернемся к
01:01:21
оптимизированной сетке, я собираюсь показать вам, как
01:01:24
это было оптимизирован,
01:01:27
поэтому вы видите от 800 до 473.
01:01:31
Это оптимизированная сетка, и в ней
01:01:35
есть только два материала.
01:01:37
Я хотел, чтобы это был один, но
01:01:40
новая функция, которую я собираюсь вам показать,
01:01:41
все еще ограничена между полупрозрачными и
01:01:44
непрозрачными материалами. Итак,
01:01:46
непрозрачные материалы вы можете
01:01:48
объединить их в
01:01:49
один материал, и вот
01:01:52
как вы это делаете, настоящий
01:01:56
t-шейдер, так что
01:02:00
это мой материал, я настроил материал
01:02:03
на использование атрибутов материала, поэтому вместо того, чтобы
01:02:05
иметь все отдельные выходные данные, которые
01:02:08
я только что сделал тот, который представляет собой полный материал,
01:02:11
и я смешиваю материалы, которые я
01:02:12
создал внутри функций,
01:02:16
чтобы он работал.
01:02:19
Это обычный древесный материал с
01:02:21
текстурами дерева, здесь
01:02:22
шероховатость нормальная и т. д., но дело в
01:02:26
модели затенения, которую я устанавливаю
01:02:29
для модели затенения. по умолчанию горит,
01:02:30
поэтому у вас есть эта новая модель заголовка узла,
01:02:36
а затем вы можете выбрать, что меняет,
01:02:38
какой шейдер
01:02:40
вы хотите использовать с этим, поэтому я устанавливаю
01:02:42
его в модуль шейдера
01:02:44
по умолчанию, а затем вывожу его
01:02:47
из функции, чтобы моя функция
01:02:48
выводила материал с помощью горит по умолчанию,
01:02:51
и мой материал настроен на использование
01:02:54
модели затенения из выражения материала, вот в
01:02:56
этом и
01:02:58
суть трюка: вам
01:03:00
нужно настроить материал для использования из
01:03:02
выражения материала вместо одной из
01:03:04
этих конкретных моделей затенения здесь,
01:03:06
а затем каждого из ваших материалов что
01:03:09
вы смешиваете
01:03:10
свой последний узел, последний
01:03:11
узел материала может установить свою собственную модель затенения,
01:03:16
и вы можете сделать это с помощью маски текстуры,
01:03:18
например, вам даже не нужно делать
01:03:20
полные материалы, вы можете сделать то
01:03:22
же самое все выходные данные, как будто я
01:03:24
мог бы
01:03:26
иметь здесь стандартный материал, делаю
01:03:28
все как
01:03:29
обычно, как я, и меняю только
01:03:31
модель затенения,
01:03:32
используя некоторую текстуру в качестве маски, но здесь
01:03:34
я меняю весь материал
01:03:36
с помощью маски, и это маска,
01:03:40
так что это действительно Я использую просто, я
01:03:43
использую здесь только зеленый канал,
01:03:45
где я нарисовал маску для
01:03:47
сфер,
01:03:49
просто скажите, эй, где беспорядок для
01:03:52
сфер белый,
01:03:54
поэтому, если я умножу это
01:03:59
только на единицу, чтобы вы могли увидеть значение,
01:04:03
которое вы Вы можете видеть, что он белый только здесь,
01:04:06
где находятся мои
01:04:07
буквы V для моих сфер. Вы можете видеть
01:04:10
материал только
01:04:11
в этой части, и у него другая модель затенения,
01:04:15
поэтому вы можете установить это по пикселю, вы
01:04:17
даже не зависите от треугольников, как если бы вы использовали
01:04:19
разные материалы,
01:04:21
вы можете установить модель затенения попиксельно,
01:04:24
что очень круто, потому что очень
01:04:25
точно,
01:04:26
вы можете заметить,
01:04:30
что эта текстура
01:04:34
на самом деле позволяет мне получить, хм,
01:04:38
нет, эта текстура хороша, если я покажу вам
01:04:41
эту текстуру,
01:04:42
вы увидите это где сфера по-
01:04:46
прежнему используется деревом, поэтому UV-развертка, которую я
01:04:49
использую для сферы,
01:04:50
и видимость, которую я использую для дерева,
01:04:52
не совпадают,
01:04:53
и это еще одна вещь, которую вы можете сделать
01:04:55
в реальности и использовать ее в материалах
01:04:57
для вашего Предпочитаю, чтобы эта текстура
01:05:00
использовала UV-развертку по умолчанию для сетки, поэтому
01:05:02
uv-нуль,
01:05:04
координата cos здесь ноль,
01:05:07
но здесь я установил для них использование
01:05:12
первой координаты,
01:05:15
поэтому я использую другой набор uv-объективов в своей сетке,
01:05:19
поэтому я сделал это в блендере и сделал два
01:05:22
сопоставления для моей сетки: первое
01:05:24
— это то, которое я использую для маски, поэтому я говорю:
01:05:26
вот дерево,
01:05:27
вот стекло, вот материал автомобиля,
01:05:31
а затем на втором ультрафиолетовом канале у
01:05:34
меня все эти вещи занимают
01:05:36
всю текстуру,
01:05:38
но каждый отдельный материал занимает
01:05:41
вся текстура,
01:05:42
поэтому все мои деревянные части занимают
01:05:45
всю текстуру. У меня есть
01:05:46
две части стекла: передняя и
01:05:49
задняя части
01:05:50
сетки, занимающие всю
01:05:52
текстуру.
01:05:54
Фокус в порядке, поэтому у меня обе стороны
01:05:56
моего стекла занимают всю текстуру.
01:05:58
вот эти квадраты здесь
01:06:00
довольно трудно увидеть,
01:06:01
а также сферы, эти штуки, полные
01:06:03
вершин,
01:06:04
занимающие всю текстуру, и это потому, что,
01:06:07
поскольку я
01:06:08
меняю, какие материалы и какие
01:06:10
текстуры я использую для каждой части
01:06:12
текстуры,
01:06:13
с помощью этой маски, которая использует первый UV, я
01:06:16
могу установить
01:06:17
текстуры, которые используют другой UV для
01:06:19
тех частей, которые маскируются,
01:06:22
это может быть немного запутанно, но
01:06:25
как только вы сделаете это в первый раз,
01:06:26
и у вас возникнут проблемы или нет,
01:06:28
вы поймете это с первого раза,
01:06:31
как только вы сделай это, и у тебя возникнут
01:06:32
проблемы, ты поймешь, что
01:06:34
происходит,
01:06:35
и как можно использовать разные ультрафиолетовые лучи в
01:06:37
свою пользу.
01:06:38
Это очень полезно. Я много раз
01:06:41
делал такие вещи, как, например, у
01:06:42
меня был космический корабль, а потом вокруг меня были огни.
01:06:45
космический корабль,
01:06:46
и я хотел, чтобы в материале был метамфетамин,
01:06:49
чтобы сделать что-то, что просто имело бы белое
01:06:52
вентиляционное отверстие, проходящее через текстуру по
01:06:54
горизонтали, и я хотел, чтобы
01:06:56
белая полоса освещала
01:06:59
эти огни,
01:07:00
и я сделал это так: у меня был УФ
01:07:03
для всей сетки,
01:07:04
а затем у меня был отдельный УФ только для
01:07:05
источников света, все
01:07:07
разделенные по горизонтали УФ, поэтому,
01:07:10
когда я пропускал эту белую полосу
01:07:12
через УФ, он освещал
01:07:14
эти огни
01:07:15
один за другим, потому что был один
01:07:17
университетский набор со всеми ними
01:07:18
прямо вверх я мог бы сделать это в одном
01:07:21
UV-высоте, но у
01:07:23
меня было другое отображение для рисования
01:07:25
текстур поверх источников света и
01:07:26
всего остального,
01:07:28
поэтому мне нужно было сделать второй UV только для
01:07:30
источников света,
01:07:32
так что это то, что вы можете используйте для
01:07:33
оптимизации, потому что теперь вместо
01:07:36
каждого материала, который есть в вашей сетке,
01:07:38
создается вызов отрисовки,
01:07:39
поэтому вместо трех вызовов отрисовки
01:07:41
на сетку у меня здесь только два,
01:07:43
и поэтому, когда я увеличиваю, когда я
01:07:46
меняю его обратно
01:07:48
на другую сетку, вы видите количество вызовов отрисовки
01:07:52
становится очень высоким, и это потому, что
01:07:54
вы не
01:07:55
рисуете еще раз для каждой сетки, а
01:07:57
рисуете еще дважды для каждой сетки,
01:07:59
потому что свет
01:08:00
также должен рисовать каждый материал, поэтому
01:08:02
вы рисуете один раз для
01:08:04
каждого. камера одна для света, и это с одним источником
01:08:07
света. Представьте себе больше или перенесите снимки
01:08:11
в свою сцену. у
01:08:21
персонажей было около семи материалов,
01:08:24
и тогда этого не существовало,
01:08:28
теперь, когда они есть, они могли бы выполнить
01:08:30
эти совпадения с меньшим количеством материалов,
01:08:32
намного меньше вызовов отрисовки на персонажа,
01:08:36
хорошо, так что следующий — цветные маски,
01:08:41
так что это текстура, я используя в качестве маски,
01:08:45
и вы, вероятно, знаете, как использовать
01:08:48
один из каналов каждый в качестве маски,
01:08:51
например, я мог бы использовать красный в качестве маски,
01:08:54
зеленый в качестве маски, синий в качестве маски
01:08:56
и альфа
01:08:57
в качестве маски, но что я Я делаю здесь
01:09:01
единственное ограничение, которое ограничивает вас только
01:09:03
четырьмя разными масками, потому что
01:09:05
достаточно только красного, зеленого, синего.
01:09:07
Я использую
01:09:08
каждый цвет в качестве маски,
01:09:12
поэтому у меня есть этот материал,
01:09:16
так что позвольте мне избавиться от стопки там, поэтому у
01:09:20
меня есть этот материал здесь,
01:09:23
и я установил
01:09:27
разные настройки для каждого слоя, поэтому у меня
01:09:30
есть базовый слой, который
01:09:32
может быть красным,
01:09:35
а затем у меня есть параметры, у меня есть все
01:09:37
параметры в одном векторном
01:09:38
параметре, поэтому
01:09:42
я мог бы получить металлическую шероховатость сделайте шероховатость
01:09:45
нулевой, чтобы теперь эта основа блестела,
01:09:50
вы можете обнулить металлик, чтобы он
01:09:52
выглядел как пластик и т. д., можете сделать его
01:09:54
излучающим,
01:09:57
и я могу сделать это для других слоев, теперь
01:10:00
мои другие слои настроены по цветам,
01:10:02
поэтому все, что
01:10:06
на этой текстуре будет бело-желтым это
01:10:09
его нижний
01:10:12
угол, поэтому его нижний угол желтый,
01:10:16
вот где он станет этим
01:10:18
материалом
01:10:20
на моей сетке, чтобы вы могли видеть, что мои параметры
01:10:22
здесь
01:10:24
излучательные 100, поэтому он горит,
01:10:27
он синий, он может сделать его, скажем,
01:10:30
зеленым,
01:10:33
я могу сделать его нулевым излучательный и т. д., и я
01:10:35
могу установить их для трех вещей,
01:10:37
чтобы я мог смешивать три
01:10:40
разных материала, просто используя эти
01:10:42
цветные маски, скажем, я хочу использовать
01:10:44
здесь синий цвет, поэтому я знаю, что синий - это красный ноль
01:10:46
зеленый ноль
01:10:47
b1, поэтому теперь я использую стоп часть, и
01:10:50
поскольку у меня размытая текстура,
01:10:52
я также могу сказать, что если моя маска должна
01:10:56
использовать
01:10:58
размытие как своего рода переход,
01:11:02
поэтому у меня здесь есть этот параметр нечеткости,
01:11:05
поэтому, если он равен нулю,
01:11:06
это похоже на материал, или нет, его
01:11:09
нет в между, если я увеличу это,
01:11:12
есть промежуточные,
01:11:13
поэтому я могу размыть это, у меня также есть это
01:11:16
расширение,
01:11:17
которое я могу увеличить, например, насколько
01:11:20
большую разницу с
01:11:22
этим цветом вы принимаете в качестве маски
01:11:24
или нет, например, если я
01:11:27
заморозлю его равен нулю,
01:11:29
я могу увеличить его, сохраняя при этом нулевой
01:11:32
переход на границах,
01:11:33
но затем он начинает перетекать в другие
01:11:35
цвета, потому что серый
01:11:37
в цифрах похож на синий, и я
01:11:40
собираюсь показать вам, почему я говорю
01:11:41
цифры, потому что, за исключением того, как я делаю
01:11:43
эти маски, у
01:11:44
меня их три, а
01:11:46
последняя - черная, вот этот угол,
01:11:49
и давайте посмотрим, какого это цвета,
01:11:53
возможно, да, он металлический, поэтому он
01:11:56
там просто отражает черный цвет, так что тот факт, что он равен нулю,
01:11:58
уже не металлик они делают его
01:12:00
излучающим, хорошо,
01:12:01
позвольте мне показать вам, как работает материал,
01:12:11
поэтому я снова создаю некоторые материалы,
01:12:14
как я это сделал в функциях,
01:12:15
а затем смешиваю их и передаю
01:12:18
материалу как атрибут материала, и
01:12:21
я смешиваю их и т. д. я мог бы смешать столько
01:12:23
материалов, сколько хотел, здесь по одному для каждого
01:12:25
цвета, если бы я хотел, как
01:12:27
вы выполняете смешивание, вы получаете
01:12:29
цвет из текстуры,
01:12:31
вы должны думать как цвета, как
01:12:34
локации, поэтому местоположение в реальном мире - это
01:12:38
xyz координата, поэтому, если вы выбираете
01:12:41
актера, у вас есть
01:12:42
координата x y z
01:12:46
цветов актера также являются тремя числами r g и b,
01:12:49
если вы думаете об этих трех числах как о
01:12:51
местоположениях,
01:12:52
вы можете вычислить расстояние от одного
01:12:54
местоположения до другого,
01:12:56
чтобы я мог измерить, насколько далеко
01:12:59
насколько далеко находится один цвет от другого,
01:13:03
и если они очень близки друг к другу
01:13:05
или
01:13:06
обнулены на нулевом расстоянии друг от друга,
01:13:08
это означает, что они одного цвета,
01:13:10
поэтому я использую эти данные как маску, и что я Вот что я
01:13:13
делаю: у меня есть маска
01:13:14
цвета, который я хочу использовать в качестве маски,
01:13:16
поэтому в данном случае она черная,
01:13:18
тогда я измерил расстояние, позвольте мне показать
01:13:20
это здесь,
01:13:21
я измерил расстояние от черного до
01:13:24
цветов здесь, в этой текстуре,
01:13:26
и если я просмотрев это, вы можете увидеть, что
01:13:28
расстояние от черного
01:13:29
равно нулю, а к другим текстурам оно
01:13:32
начинает увеличиваться,
01:13:34
поэтому от серого оно составляет вроде 0,5, но это
01:13:38
не совсем
01:13:39
0,5, потому что это похоже на линейное расстояние
01:13:41
от одного цвета к другому, а
01:13:44
затем я вычитаю количество
01:13:47
расширения, которое я хочу,
01:13:48
поэтому я вычитаю из вычисленного расстояния,
01:13:54
скажем, ноль здесь,
01:13:58
один здесь, если я вычитаю, вы увидите, что
01:14:01
все начинает становиться черным, поэтому я
01:14:03
расширяю
01:14:04
эту маску, она будет черной только здесь, если я
01:14:06
вычитаю эти значения
01:14:08
и они начинают темнеть,
01:14:11
вы увидите, что маска начинает
01:14:13
расширяться, потому что сейчас маска — это
01:14:15
черная часть,
01:14:16
и если вы уменьшаете числа, они становятся
01:14:19
ближе к черным, так что
01:14:20
я расширяю черную
01:14:22
часть, а
01:14:24
затем после расширения я сравнил его с
01:14:27
нечеткостью,
01:14:28
и во-первых, я получаю расстояние
01:14:33
и делю его на то,
01:14:36
какую часть перехода я хочу,
01:14:40
по умолчанию я устанавливаю его как
01:14:43
своего рода низкое значение, поэтому у меня есть только
01:14:46
0,48 от вариант выполнения этого перехода,
01:14:51
поэтому позвольте мне показать вам, что я делю
01:14:55
значение этого перехода, чтобы это
01:14:57
значение расстояния было
01:14:59
определенным числом, и все будет равно
01:15:00
нулю, поэтому
01:15:02
все, что черное, не изменит
01:15:04
все, что будет единицей.
01:15:07
разделенное,
01:15:09
я имею в виду любое значение больше нуля, оно
01:15:11
будет разделено
01:15:13
на это значение нечеткости, и я просто
01:15:15
слежу за тем, чтобы оно всегда было выше нуля,
01:15:17
потому что вы знаете, что нельзя делить на
01:15:19
ноль, чего нет в существующей математике,
01:15:21
поэтому я просто делаю уверен, что если пользователь
01:15:23
вводит здесь ноль
01:15:25
и вводит ноль вручную, это все равно
01:15:27
считается как максимум
01:15:28
ноль ноль, как эээ s01, потому что максимум
01:15:31
- это самое высокое значение, если
01:15:34
это ноль, самое высокое значение - ноль ноль
01:15:35
один,
01:15:37
поэтому я просто проверяю, что это так никогда не
01:15:38
ноль, тогда я делю
01:15:40
свое расстояние от этого значения, и теперь, когда
01:15:42
я делю его на очень маленькое число, у
01:15:44
меня очень маленький переход, поэтому он
01:15:47
невидим, вы не сможете увидеть переход,
01:15:48
если не
01:15:49
сможете бесконечно масштабировать его, вот
01:15:53
как я управляю тот вид
01:15:55
нечеткости, который я называю нечеткостью, потому что
01:15:56
именно так вы говорите в фотошопе, но
01:15:58
это размер перехода
01:16:02
от маски к остальной части
01:16:05
текстуры,
01:16:06
а затем я инвертирую эти цвета,
01:16:09
так что черный становится белым, а белый становится
01:16:11
черные или более темные цвета,
01:16:15
и я насыщаю их, позвольте мне уменьшить
01:16:17
нечеткость, потому что прямо сейчас я утраиваю
01:16:19
цвета, которые не совсем черные,
01:16:22
и я насыщаю просто для уверенности, потому что
01:16:24
здесь я вычитал, когда вычитал
01:16:26
то, что уже было 0, стало отрицательными
01:16:29
цветами и это может повлиять на
01:16:31
ноту интерполяции, поэтому я насыщаю
01:16:34
просто для того, чтобы убедиться, что все мои значения
01:16:36
от нуля до единицы, нет ничего
01:16:38
меньше нуля,
01:16:41
а также расстояние между цветами
01:16:43
может быть больше единицы, поэтому
01:16:45
я тоже зажимаю его, чтобы насытить это
01:16:48
подъем от нуля к единице,
01:16:50
и именно так вы делаете маску, поэтому сначала
01:16:52
вы измеряете расстояние от цвета,
01:16:54
который вы хотите использовать в качестве маски,
01:16:56
от цвета до текстуры,
01:16:59
и это само по себе уже создает
01:17:00
маску, а затем вы можете выполнить некоторые математические вычисления, чтобы расширьте
01:17:03
и измените нечеткость, и вам придется
01:17:07
инвертировать ее,
01:17:08
чтобы черный стал белым, и
01:17:10
наоборот, зажмите, чтобы убедиться, что все
01:17:12
от нуля до единицы,
01:17:13
и использовать его для облегчения смешивания материалов, это
01:17:16
как альфа для смешивания материалов,
01:17:18
я изучил эту технику не смешивать
01:17:21
материалы, а смешивать обычные текстуры,
01:17:23
потому что, когда вы создаете персонажа и
01:17:24
хотите, чтобы у него были
01:17:26
морщинистые анимированные карты морщин,
01:17:29
например, персонаж
01:17:30
нейтральный, вот так, а затем он делает
01:17:31
это, вы хотите, чтобы морщины на
01:17:32
лбу были
01:17:34
Чтобы сделать это, самый простой
01:17:37
способ иметь одну единственную текстуру,
01:17:39
одну карту нормалей, помимо вашей
01:17:41
стандартной карты нормалей,
01:17:43
одну отдельную карту со всеми морщинами,
01:17:46
а затем, если у вас есть способ замаскировать
01:17:48
части
01:17:49
этой текстуры, чтобы они появлялись и исчезали,
01:17:52
когда вы хотите они для вас могут иметь только
01:17:56
одну текстуру для маски поверхности для
01:17:59
каждой части вашего лица, поэтому я однажды сделал это с
01:18:02
персонажем,
01:18:03
и у меня было что-то вроде: эта часть
01:18:05
красная, эта часть зеленая,
01:18:06
эта часть розовая, эта часть какая-то
01:18:09
другая наука о цвете и т. д.,
01:18:10
а затем я бы изменил количество
01:18:13
этих масок.
01:18:14
Я бы хотел просто умножить конечный
01:18:16
результат здесь на что-то, что может быть
01:18:17
от нуля до единицы,
01:18:18
если оно равно нулю. Я знаю маску, поэтому
01:18:21
я изменю,
01:18:22
я бы умножьте эти маски на значение,
01:18:25
зависящее от целей морфинга
01:18:26
персонажа, поэтому, если бы вы улыбались,
01:18:29
я бы активировал морщины на обеих
01:18:31
сторонах лица,
01:18:33
используя эти цветные маски, и это
01:18:35
было действительно полезно, потому что,
01:18:37
если вы, если вы, просто если вы посмотрите учебники
01:18:39
об этом вы можете найти эти
01:18:40
уроки, использующие
01:18:41
каналы здесь в качестве масок,
01:18:45
но это ограничивает вас только четырьмя масками
01:18:48
на текстуру, поэтому вам придется использовать больше
01:18:50
текстур, чтобы иметь маски для
01:18:52
всего
01:18:53
лица, если вы хотите разделить обе стороны,
01:18:55
потому что вы можете у носа есть морщины,
01:18:56
потому что из-за слабости снаряжения здесь
01:18:58
все отдельно,
01:18:59
поэтому вам нужно много масок, если вы делаете
01:19:01
их с цветами,
01:19:02
и таким образом у вас может быть
01:19:06
несколько масок, если вы сделаете
01:19:09
расширение нулевым, а фаззинг будет как
01:19:11
супернизкий
01:19:12
или если вы просто скажете, что расстояние должно
01:19:15
быть ровно
01:19:16
нолем, то это должно быть точно, что именно
01:19:18
этот цвет,
01:19:19
вы можете использовать много цветов, потому что они
01:19:21
не будут перетекать друг в друга, вы не
01:19:22
принимаете вариации, и это очень
01:19:26
полезно иметь например,
01:19:27
несколько масок в одной текстуре,
01:19:31
вот в этом и был трюк, все
01:19:35
почти закончилось, клянусь, это
01:19:38
то, что я называю
01:19:40
локализованным постпроцессом. Хотели ли вы когда-нибудь
01:19:42
иметь постпроцесс,
01:19:45
который влияет только на то, что находится
01:19:47
внутри постпроцесса,
01:19:49
даже если вы вне
01:19:51
процесса публикации вы могли видеть, что эти вещи только
01:19:53
затрагиваются.
01:19:55
Я думаю, что многие люди, многие люди
01:19:57
уже
01:19:58
пробовали это, а затем поняли, что
01:20:00
это невозможно на самом деле, потому что
01:20:01
я имею в виду не невозможно, я покажу вам
01:20:03
способ чтобы сделать это, но с
01:20:05
объемом постобработки
01:20:06
вы не можете этого сделать, потому что
01:20:08
объем постобработки влияет на то, что
01:20:10
видит камера, когда камера
01:20:12
находится внутри объема,
01:20:13
или если вы сделаете его бесконечным, это повлияет на
01:20:14
весь мир, и невозможно увидеть, как это
01:20:16
влияет на что-то когда вы находитесь вне объема
01:20:18
и воздействуете только на область,
01:20:20
есть трюк, чтобы сделать что-то подобное. У меня
01:20:24
здесь есть сфера с определенным
01:20:26
материалом
01:20:28
и этим материалом, и этот материал, как вы можете видеть,
01:20:31
вызывает освобождение
01:20:32
эффекта дифракции, увеличьте
01:20:35
интенсивность вот
01:20:36
так он вызывает этот эффект дифракции
01:20:39
только там, где
01:20:41
есть атмосфера, поэтому, если я уменьшу сферу,
01:20:44
если я уменьшу ее,
01:20:48
вы можете увидеть, что только там, где эта сфера
01:20:51
подвергается воздействию ее эффекта, и
01:20:55
на границах экрана наблюдается как бы затухание, поэтому
01:20:58
эффект исчезает,
01:21:01
так что это полупрозрачный материал.
01:21:04
Чтобы добиться такого эффекта,
01:21:05
вам нужно создать полупрозрачный
01:21:08
материал.
01:21:09
Это не постобработанный материал,
01:21:11
это стандартный материал поверхности, затем
01:21:14
вы делаете его полупрозрачным,
01:21:16
я делаю это поздно, потому что я Мне не
01:21:18
понадобится затенение в материале, поэтому
01:21:20
я делаю это позже, потому что это намного
01:21:22
снижает
01:21:23
производительность, а затем, как только вы
01:21:26
установите материал как полупрозрачный, вы получите
01:21:28
доступ ко всем текстурам, к которым
01:21:30
есть доступ в постобработке, поэтому у вас
01:21:32
есть доступ к
01:21:34
цвет сцены для пользовательской разработки для
01:21:37
трафаретов
01:21:38
для всего, что постобрабатывает материалы постобработки,
01:21:42
к которым у меня есть доступ, и что я здесь делаю,
01:21:45
я беру образец вызывающего объекта сцены, это может быть
01:21:48
тот же самый, который использовался в постобработке,
01:21:50
синхронизация текстуры с
01:21:54
постобработкой вводите ноль, это может быть тот
01:21:56
же самый,
01:21:58
тогда я искажаю его UV и из
01:22:01
этих искаженных версий
01:22:03
я использую только красный я использую
01:22:06
из одной из стартовых версий красный канал из
01:22:09
неискаженной версии
01:22:11
зеленый канал и из
01:22:12
другой версии искажения на единственном
01:22:14
синем канале, а затем я объединяю их,
01:22:16
позвольте мне посмотреть, смогу ли я просмотреть это здесь, о,
01:22:20
к сожалению, я не могу, да, вы не можете
01:22:23
просмотреть результаты здесь, что очень
01:22:24
грустно
01:22:30
на самом деле я думаю, что вы не можете, но
01:22:31
это очень плохо,
01:22:34
поэтому я использую положение экрана,
01:22:36
помните, что это УФ-излучение за
01:22:38
пределами экрана, поэтому, если вы хотите отобразить
01:22:40
на экране что-то,
01:22:41
что я хочу, потому что я получаю тот же
01:22:43
цвет,
01:22:44
все, что было визуализировано до создания воздушно-
01:22:46
прозрачной сетки,
01:22:48
поэтому я использую это в качестве текстуры поверх
01:22:50
моей сетки. Я
01:22:52
накладываю это на экран, поэтому
01:22:54
получаю
01:22:56
то, что было визуализировано на экране, и
01:22:58
растягиваю,
01:22:59
чтобы посмотреть, смогу ли я можно сделать это в
01:23:00
камере и растянуть ее на сам экран,
01:23:03
чтобы она просто получала текстуру,
01:23:06
получая все, что было за этим объектом,
01:23:08
и рендеринг именно там, где это было
01:23:09
раньше, но я просто начинаю координаты,
01:23:12
которые я использовал для выборки из него, если я бы
01:23:15
не сделал,
01:23:16
я бы просто рендерил сцену
01:23:17
поверх своей сетки, и это
01:23:19
выглядело бы так, как будто моей сетки даже не существует,
01:23:22
и чтобы добиться такого эффекта
01:23:26
исчезновения материала на
01:23:29
границах,
01:23:30
я использую эффект Френеля, инвертирующий его,
01:23:32
чтобы сделать черным, сделать его черным по
01:23:34
бокам,
01:23:37
затем я умножаю его также на разрешение пикселя,
01:23:40
потому что разрешение пикселя становится темнее по мере
01:23:42
приближения к объекту, это расстояние
01:23:45
от объекта до экрана, делящееся
01:23:47
на 100,
01:23:48
поэтому я иметь скорость входа и выхода, когда я нахожусь на расстоянии
01:23:50
одного метра
01:23:51
от сетки или меньше,
01:23:55
затем я насыщаюсь, чтобы убедиться, что у меня нет
01:23:57
значений выше единицы,
01:23:59
умноженных на сейчас, поэтому у меня есть
01:24:01
сейчас и постепенное
01:24:02
исчезновение, когда я приближаюсь и я
01:24:05
умножаю это на количество
01:24:06
дробей, которые я использую, чтобы
01:24:08
решить, насколько сильно
01:24:09
я искажаю ультрафиолетовые лучи на экране,
01:24:15
так что, о, и это я просто инвертирую
01:24:18
направление, которое я только начинаю, чтобы просто
01:24:20
получить синий синий канал переходит на
01:24:21
другую сторону,
01:24:24
поэтому, когда я приближаюсь к сетке,
01:24:27
этот эффект также исчезает,
01:24:29
поэтому вы не видите, как он
01:24:31
внезапно исчезает, когда вы проходите через сетку,
01:24:35
и просто чтобы показать вам возможности,
01:24:38
я сделал второй материал,
01:24:40
который затемняет предметы. позади него,
01:24:44
и это насыщает, так что это своего рода
01:24:47
материал в стиле нуар, и он также имеет
01:24:51
еще один эффект, которого я не делал на
01:24:53
другой сфере: он исчезает,
01:24:56
непрозрачность эффекта, когда сетка
01:24:59
проходит через другие сетки,
01:25:02
поэтому чем ближе к другим сеткам, тем
01:25:03
прозрачнее он становится, пока вы
01:25:05
его больше не увидите, поэтому переходы перемещаются
01:25:07
вокруг его границ, когда он проходит
01:25:09
через другие сетки,
01:25:11
вы делаете это довольно легко,
01:25:14
сзади есть узел, который делает это, это называется
01:25:16
затухание глубины, поэтому установлено это затухание,
01:25:20
какова дистанция затухания, например, как далеко
01:25:21
должно начинаться затухание,
01:25:23
поэтому я делаю это на один метр 100
01:25:25
сантиметров
01:25:27
и использую все те же эффекты, что и
01:25:29
раньше, с разрешением пикселей и т. д., я
01:25:31
просто добавляю эту страницу в математика так
01:25:33
умножается,
01:25:34
я передаю эту способность, которую я уже
01:25:36
вычислил, в непрозрачность для
01:25:38
этого затухания,
01:25:39
и эта судьба сделает вещи
01:25:40
более прозрачными, когда они находятся близко к
01:25:42
другим сеткам,
01:25:44
а затем у меня есть свой эффект здесь, так что я
01:25:46
получаю текстура из
01:25:48
сцены, вещи, которые были такими, как
01:25:49
они были визуализированы до моей полупрозрачной
01:25:51
сетки,
01:25:53
это умножается
01:25:57
на количество, насыщенность
01:25:58
доли насыщенностей, количество, которое я
01:26:00
хочу,
01:26:01
умноженное на количество эффекта, которое я должен
01:26:03
получить,
01:26:05
тогда я использую лерп здесь с количеством
01:26:08
эффекта, который я должен иметь,
01:26:10
также как
01:26:13
да, например, когда он равен нулю, у
01:26:17
меня есть один для силы, потому что сила
01:26:20
затемняет вещи,
01:26:22
поэтому, если это значение равно нулю, я помещаю одно здесь, оно
01:26:25
ничего не меняет, когда вы используете
01:26:26
силу, это похоже на количество степеней до
01:26:28
единицы
01:26:29
- это само число, и если оно одно, то
01:26:32
это значение, которое берется отсюда, если
01:26:34
оно одно, я увеличил его до трех, так что это
01:26:37
просто затемненная
01:26:38
сцена, и я вывожу ее в излучающий
01:26:40
цвет,
01:26:41
я также помещаю ее в непрозрачность и это сделано для того, чтобы
01:26:44
показать вам что-то
01:26:46
вроде ограничения,
01:26:49
поэтому, если я попытаюсь смешать эти два материала,
01:26:53
поместив один перед другим, это
01:26:56
не сработает, вы либо увидите один, либо увидите другой, в
01:26:59
зависимости от того, что
01:27:00
нереальное решит, что находится в спереди,
01:27:03
и это потому, что это не
01:27:07
совсем прозрачные объекты, это
01:27:09
полупрозрачные материалы,
01:27:11
но они непрозрачны, а сцена
01:27:14
применяется к ним как
01:27:15
текстура, поэтому это похоже на непрозрачную сетку с той
01:27:18
же текстурой поверх нее,
01:27:20
поэтому они на самом деле не полупрозрачны, поэтому вот
01:27:22
почему вы видите то или другое,
01:27:24
если вы меняете, как видите,
01:27:27
я вижу небольшую дифракцию
01:27:30
материала под ним,
01:27:32
но это потому, что верхний, который у меня был,
01:27:35
я сделал для него непрозрачность, так что вы как будто
01:27:39
можете видеть немного смешиваю эффекты,
01:27:42
но это не так, вы не затемняете,
01:27:45
позвольте мне поставить перед этим другой,
01:27:49
я не могу его выбрать, потому что
01:27:51
вторая сфера находится поверх нее,
01:27:52
все в порядке, так что на самом деле вы не только
01:27:55
начинаю, как вы можете видеть здесь, я
01:27:56
искажаю
01:27:57
нормальные цвета сцены, а не
01:27:58
затемненные цвета сетки, потому что
01:28:00
текстура, которую я использую для
01:28:02
искажения, - это то, что
01:28:03
было визуализировано до
01:28:04
полупрозрачных сеток, а
01:28:07
не то, что было визуализировано до этой
01:28:09
сетки,
01:28:10
поэтому полупрозрачные сетки визуализируются
01:28:12
отдельно после
01:28:13
всех непрозрачных сеток, и вы можете прочитать
01:28:16
текстуру этого
01:28:17
северного оленя в своих полупрозрачных сетках,
01:28:20
но ваши полупрозрачные совпадения не могут прочитать
01:28:22
полупрозрачные сетки позади них,
01:28:24
так что это ограничение: вы видите либо
01:28:26
один эффект, либо другой, или вы сделайте некоторую
01:28:28
непрозрачность, но на
01:28:29
самом деле вы не влияете на эффект,
01:28:31
который уже был применен позади вас,
01:28:35
теперь для предпоследнего, у
01:28:39
меня есть ложный процесс для виджетов,
01:28:43
поэтому, если я сыграю это, я увижу, что у меня есть мой
01:28:46
виджет, и у меня есть этот сумасшедший эффект тени
01:28:51
Я могу изменить размер размытия
01:28:56
моего эффекта, чтобы сделать его действительно
01:28:57
размытым. Я могу сделать его совсем
01:29:00
не размытым. Я
01:29:03
могу задать смещение для своей тени, чтобы
01:29:06
это было похоже на эффект тени,
01:29:08
который я создал,
01:29:11
и как его применить.
01:29:14
эффекты постобработки для виджетов,
01:29:16
позвольте мне показать вам, потому что это действительно
01:29:18
здорово
01:29:20
в ваших виджетах, вы можете сделать свои
01:29:23
виджеты дочерними, э-э, дочерними элементами виджета, который
01:29:26
называется
01:29:27
блоком фиксатора, а блок фиксатора - это
01:29:30
виджет оптимизации в реальном времени,
01:29:32
вы можете настроить его для рендеринга только примерно раз в
01:29:36
10 кадров, и вы делаете это,
01:29:38
настраивая эти параметры фазы и счетчика фаз
01:29:40
здесь,
01:29:42
чтобы вы могли рассчитывать свои достижения для
01:29:43
рендеринга меньше раз,
01:29:45
если виджеты вообще не двигаются, вы
01:29:47
можете часто иметь эти
01:29:48
оптимизированные показания, поэтому вы не если
01:29:51
вы не тратите производительность на вещи,
01:29:53
которые не перемещаются на экране,
01:29:55
бонус наличия этого виджета заключается в том, что
01:29:58
для того, чтобы что-то не отображалось
01:30:00
каждый раз, это означает, что эти объекты
01:30:02
должны быть визуализированы в одну
01:30:04
текстуру, а затем эта текстура отображается на экране, а
01:30:07
не просто отображается
01:30:09
каждый раз, когда текстура, отображаемая
01:30:11
на экране,
01:30:12
отображается на экране, что означает, что вы
01:30:15
можете
01:30:16
поместить эту текстуру в материал и
01:30:17
применить к ней эффекты, прежде чем она выйдет на
01:30:19
экран, на
01:30:20
самом деле это было в других играх. круто, потому что
01:30:22
они сделали это возможным
01:30:24
с помощью фиксирующей коробки, используя материал эффекта,
01:30:27
поэтому вы создаете материал, вы создаете
01:30:30
в нем параметр текстуры с именем,
01:30:32
которое находится здесь, поэтому параметр текстуры, он
01:30:34
называется текстурой, вы можете изменить это
01:30:36
имя,
01:30:37
если хотите хочу, поэтому я оставил это как текстуру по
01:30:40
умолчанию, поэтому в моем материале у меня есть
01:30:44
о, это экземпляр в
01:30:46
самом материале, у
01:30:48
меня есть этот параметр текстуры здесь,
01:30:51
а затем, прежде чем это произойдет, конечно, это
01:30:54
должен быть материал пользовательского интерфейса,
01:30:56
потому что он будет можно использовать в
01:30:57
интерфейсе, а режим наложения
01:31:00
является полупрозрачным, если вы хотите сохранить
01:31:01
прозрачность прозрачных элементов в
01:31:03
вашем пользовательском интерфейсе, что вам, вероятно, нужно,
01:31:06
чтобы вы могли получить текстуру и просто
01:31:08
отобразить ее как есть,
01:31:10
или умножить ее вызовом или и т. д., что я Я
01:31:12
делаю здесь
01:31:14
то, что передаю эту текстуру через
01:31:16
пользовательский узел, который создает эффект размытия,
01:31:20
и это то, что я получил от
01:31:23
самого Unreal. Я просто
01:31:24
изменил его, чтобы он делал несколько вещей
01:31:27
по-другому с альфа-каналом, но в
01:31:30
Unreal есть спираль размытия.
01:31:34
Узел текстуры спирального размытия, в котором вы передаете
01:31:37
текстуру объекту текстуры, поэтому ваш
01:31:39
параметр должен быть объектом текстуры, а не
01:31:41
образцом текстуры,
01:31:42
поэтому, когда вы создаете параметр текстуры,
01:31:45
вы можете иметь параметр сэмплера текстуры,
01:31:49
параметр объекта текстуры или
01:31:51
параметр образца текстуры 2d,
01:31:53
это стандартная одна текстура на
01:31:56
параметр,
01:31:57
когда вы только сэмплируете ее, вы сэмплируете ее
01:31:59
непосредственно в параметре
01:32:00
или вы можете использовать параметр текстового объекта,
01:32:03
который позволяет вам сэмплировать ее несколько
01:32:04
раз, и это то, что делает этот узел: он
01:32:06
сэмплирует текстуру несколько раз,
01:32:08
чтобы размыть ее и вычислить
01:32:12
его размытую версию,
01:32:13
поэтому я использую это с некоторыми вещами для
01:32:15
изменения цвета и т. д., я
01:32:18
имею в виду, как я создал этот эффект, это не самое
01:32:19
крутое, что здесь
01:32:21
может быть для кого-то, круто то,
01:32:23
что вы можете
01:32:24
применять эффекты к своим виджетам, поэтому это
01:32:27
как будто это действительно круто,
01:32:32
как только я сделал, у меня есть это, у меня есть этот
01:32:34
урок на моем канале YouTube,
01:32:36
вы также можете сделать так, будто ваш пользовательский интерфейс находится
01:32:40
под водой,
01:32:41
если вы получите эту текстуру и запустите ее,
01:32:43
используя
01:32:44
карту нормалей для воды, так что если вы
01:32:48
просто начинаете координату
01:32:49
с карты нормалей, вы можете и перемещать
01:32:52
карту нормалей вокруг,
01:32:53
вы можете сделать так, как будто пользовательский интерфейс находится
01:32:55
под водой, просто сортируя,
01:32:57
так что вы можете делать много вещей, и я использую
01:32:59
это, чтобы сделать этот эффект тени
01:33:02
потому что много раз я хочу отбросить тени в
01:33:05
пользовательском интерфейсе,
01:33:07
а этого уже
01:33:08
нет, но
01:33:10
поскольку вам разрешено применять любой
01:33:12
материал поверх вашего
01:33:13
пользовательского интерфейса, прежде чем он выйдет на
01:33:15
экран,
01:33:17
вы можете сделать эти эффекты сейчас
01:33:20
и Последнее, что у меня есть для вас,
01:33:23
это то, что вы можете делать с целями рендеринга,
01:33:27
поэтому позвольте мне показать вам это, я
01:33:30
не делал это с нуля,
01:33:32
потому что большая часть математики все еще
01:33:34
выходит у меня из головы,
01:33:36
но я хочу показать вам возможность,
01:33:39
когда у вас есть цели рендеринга,
01:33:43
поэтому я получил это из примеров контента
01:33:45
из Unreal,
01:33:49
и это означает, что есть плоскость,
01:33:53
и каждый раз, когда вы стреляете в плоскость,
01:33:55
вы нажимаете на плоскость,
01:33:58
она отслеживает точку от камеры до
01:34:00
плоскости
01:34:01
и от Удар, который он получает,
01:34:05
УФ-излучение удара в плоскости,
01:34:09
а затем он рисует в текстуре рендеринга, которую мне
01:34:12
придется вам показать,
01:34:17
потому что много чего можно сказать, а
01:34:20
где это,
01:34:24
конечно, брызги, так что есть материал,
01:34:28
похожий на кисть они рисуют сферу
01:34:34
там, где вы говорите, нарисуйте сферу здесь, так что
01:34:37
в этом материале есть сфера, и
01:34:40
она называется, они называют
01:34:41
положение леса положением экрана
01:34:43
сферой, так что сейчас это пять пять, если я поставлю
01:34:46
это на один, вы собираетесь видите, что он появляется
01:34:50
в углу
01:34:51
поля,
01:34:55
давайте посмотрим, смогу ли я просто просмотреть
01:34:58
непрозрачность, чтобы вы могли видеть, что это здесь,
01:35:02
прямо здесь, в углу,
01:35:05
поэтому позвольте мне вернуть центр, который
01:35:07
является значением по умолчанию, чтобы они использовали этот материал
01:35:10
для рендеринга в цели рендеринга, поэтому у
01:35:13
них есть
01:35:14
две цели рендеринга,
01:35:17
они рендерят это в одну из этих
01:35:19
целей рендеринга,
01:35:20
затем у них есть второй материал, который
01:35:24
выполняет симуляцию высоты,
01:35:27
и это, вероятно, тот, который у
01:35:29
меня в голове,
01:35:32
давайте посмотрим, нет это не тот,
01:35:36
где я заполнял маляра без
01:35:40
компьютера, нормально,
01:35:45
возможно,
01:35:48
сейчас это просто вычисление нормали, я
01:35:51
не могу найти материал,
01:35:55
который определяет скорость движения воды,
01:35:58
я думаю, что это этот,
01:36:04
но хитрость в том, что у них есть две цели рендеринга, которые
01:36:08
они нарисуйте пятно, когда вы щелкаете по
01:36:11
воде,
01:36:12
в одну из целей рендеринга, а затем
01:36:15
передаете его с вашей целью
01:36:16
второму материалу,
01:36:17
этот материал имитирует рябь
01:36:20
из этого плоского места, и они рендерят
01:36:23
этот материал
01:36:24
в другую цель рендеринга и используют этот
01:36:26
окончательный вариант цель рендеринга
01:36:29
для генерации нормалей
01:36:32
и использование этих целей рендеринга
01:36:36
в качестве поля высоты и нормали поля высоты
01:36:40
в водном материале,
01:36:44
и они делают это в проекте
01:36:49
через узел, и это ключевой момент в
01:36:52
трюке,
01:36:55
где это, нет, я не хочу Чтобы нарисовать
01:36:59
холст, я хочу, чтобы более простой вариант
01:37:01
рисовал материал для рендеринга цели, поэтому вы
01:37:04
передаете цель рендеринга,
01:37:06
если это материал, а затем вы
01:37:09
можете нарисовать
01:37:10
материал непосредственно в текстуре,
01:37:12
все, что вы вкладываете в свой материал,
01:37:14
и это довольно круто для многих вещи,
01:37:17
потому что
01:37:19
вы знаете, что если вы создаете какой-то эффект, если
01:37:21
вы делаете что-то вроде,
01:37:22
скажем, это действительно тяжело, как
01:37:25
текстура шума, которая
01:37:26
требует много производительности от графического процессора,
01:37:29
вы можете визуализировать это
01:37:30
на цели рендеринга, а затем вы можете
01:37:32
щелкнуть правой кнопкой мыши цель рендеринга
01:37:34
и выберите «Создать статическую текстуру», чтобы вы
01:37:36
создали текстуру
01:37:37
из этого эффекта, например, когда я
01:37:39
моделирую,
01:37:42
я могу это сделать и т. д. и т. д.
01:37:45
теперь, если я посмотрю на цели рендеринга здесь,
01:37:48
ах, эти цвета должны быть отрицательными,
01:37:51
ой, это прозрачно, вода,
01:37:55
вероятно,
01:37:56
уже отстоялась
01:37:59
давайте посмотрим, смогу ли я заставить его появиться ах,
01:38:02
он не отображается,
01:38:04
что, если я это сделаю, он теперь появился, хорошо,
01:38:08
так что, как вы можете видеть, все, что я
01:38:10
там делал, было нарисовано
01:38:12
в этих текстурах, и тогда я мог
01:38:16
щелкнуть правой кнопкой мыши даже на обычной это
01:38:18
рассчитывалось
01:38:19
в реальном времени, я могу щелкнуть правой кнопкой мыши по этому объекту
01:38:22
и создать статическую текстуру, так что теперь у меня есть
01:38:24
текстура,
01:38:26
которая является этим эффектом, так что это один из
01:38:29
способов, который вы можете использовать для рендеринга целей, вы
01:38:31
можете нарисовать к ним сложный телефон,
01:38:33
а затем преобразовать их в постоянные
01:38:34
текстуры в вашем проекте, или
01:38:37
вы можете сделать то, что они делают здесь,
01:38:38
что потрясающе и до сих пор у меня в
01:38:41
голове,
01:38:42
вы можете нарисовать высоту точки,
01:38:45
они наносят здесь точечный урон, и так далее,
01:38:48
они отслеживают,
01:38:51
э-э, или останавливают
01:38:54
след повреждения, который вектор сказал, что рассеяние
01:38:59
вычисляет нормально, применяет ядро ​​симуляции жидкости,
01:39:03
где находится след, я помню, я видел, как
01:39:05
здесь след
01:39:08
перекрывается, чтобы спасти Кирка, я думаю, что
01:39:11
след находится в пешке,
01:39:14
где пешке понадобится целая вечность, чтобы
01:39:17
найти это,
01:39:18
но пешка, которую она оставляет след, а затем
01:39:21
когда он отслеживает плоскость, он наносит
01:39:22
урон,
01:39:23
а затем, когда он наносит урон, они получают
01:39:26
место попадания
01:39:27
из места попадания, они вычисляют
01:39:29
EV, который был
01:39:31
поражен в плоскости в плоскости, легко
01:39:33
найти УФ, потому что это просто плоскость, поэтому
01:39:35
вы вычисляете
01:39:36
где координата находится между
01:39:38
началом и концом плоскости,
01:39:40
поэтому они передали ее в материал,
01:39:43
используя значение параметра заданного вектора, чтобы
01:39:46
они получили материал здесь, чтобы создать
01:39:47
экземпляр динамического материала
01:39:49
из исходного значения
01:39:52
параметра заданного вектора материала из этого UV-
01:39:54
координата,
01:39:55
это четвертое разделение материала, так что
01:39:58
это тот материал, который я вам показал, который
01:40:00
рисует
01:40:01
или рисует одну
01:40:03
единственную точку силы,
01:40:04
поэтому они применяют эту силу с белым
01:40:06
цветом
01:40:08
и из этого они передают эту
01:40:11
цель рендеринга, где этот материал был визуализирован
01:40:14
в другой материал, который вычисляет рябь,
01:40:18
и это одна из вещей, которые вы можете сделать,
01:40:19
вы можете сделать много вещей,
01:40:21
рисуя цели рендеринга в материалах, вам
01:40:23
нравится
01:40:24
размытие, ну, что-то очень быстрое, потому что
01:40:28
размытие объектов с помощью графического процессора происходит быстро,
01:40:29
если вы знаете, как выполнять математические вычисления, или вы
01:40:31
можете использовать размытие паука для дополнительного узла, который я
01:40:34
показал вам
01:40:35
из движка, так что вы можете делать все
01:40:38
это, рисуя материалы
01:40:39
в целях рендеринга, а затем использовать эти зимние
01:40:41
цели, текстуру для чего-то еще для
01:40:43
чего-то еще
01:40:45
вот и все, это конец этой
01:40:48
презентации,
01:40:50
я надеюсь, вы узнали что-то новое, мне
01:40:53
жаль, что я запутался,
01:40:54
потому что
01:40:55
вы знаете, я хотел много о многом поговорить
01:40:59
о многих вещах, а
01:41:03
вы всегда путаетесь с таким количеством
01:41:05
информации,
01:41:07
но я надеюсь, что я надеюсь научить вас, я
01:41:10
думал, что научил вас чему-то новому,
01:41:12
и что у вас есть идеи по решению некоторых
01:41:16
материальных проблем, с которыми вы сталкивались в
01:41:17
своих собственных проектах,
01:41:19
и я
01:41:22
когда-нибудь вернусь с новыми методами, о, просто одна
01:41:26
вещь, которая очень важна, это то, что
01:41:31
проход тени не работает
01:41:34
при обратной трассировке. Трассировка лучей не позволяет
01:41:37
вам изменять тени ваших
01:41:38
объектов,
01:41:39
поэтому она работает только тогда, когда вы не используете
01:41:41
обратную трассировку
01:41:42
и функцию преобразования сетки в
01:41:45
материале.
01:41:48
если вы хотите видеть, как сетка вращается в
01:41:51
отражениях и т. д., когда вы выполняете
01:41:53
обратную трассировку,
01:41:54
вам нужно включить, где она
01:42:03
использует видимость касания,
01:42:08
здесь нет обратной трассировки,
01:42:12
при трассировке вам нужно включить оценку
01:42:15
смещения мирового положения, это при рендеринге,
01:42:18
дополнительные настройки
01:42:20
трассировки лучей, оценить широкую
01:42:22
смещение позиции, если вы этого не сделаете,
01:42:24
вы будете вращать свою сетку
01:42:25
с материалом, тени не
01:42:27
будут вращаться,
01:42:28
а отражения этой сетки
01:42:30
не будут вращаться, поэтому вам нужно
01:42:31
активировать это в порядок, чтобы
01:42:33
изменения, которые вы вносите в сетку в
01:42:35
материале, учитывались
01:42:37
при отслеживании наших собственных отслеженных эффектов, вот и все,
01:42:41
надеемся увидеть вас здесь в следующий раз

Описание:

This is a long video because it's several small tutorials in a single one. I've separated it in chapters in case you're interested in something specific. I find there's a lot of features and possibilities with Materials in Unreal many don't know about. In this video I try to expose some in hope that you learn something new or solve that problem you've been thinking about. I had an issue on the Face Camera part that I've already figured out how it really works and how to solve it and I'll record a live about it soon. 0:00:00 - Intro 0:00:36 - Primitive Data 0:06:46 - Maximized Screen 0:08:05 - Manipulating UVs 0:10:00 - Rotate Texture 0:11:44 - Flip Texture 0:12:48 - UV Offset and Tiling 0:16:08 - UV Clamping 0:17:26 - Texture Projection - Screen 0:18:57 - Texture Projection - World 0:21:32 - Texture Projection - Tri-planar 0:24:59 - Mesh Rotation 0:32:26 - Camera-align Mesh 0:45:06 - Shame! [bell rings] Shame! 0:47:21 - Fix Scaled Mesh Normals 0:49:37 - Shadow Pass 0:58:32 - Multi-Shader Materials 1:04:53 - Multiple UV Sets 1:08:38 - Color Masks 1:19:37 - Localized Post Process 1:21:03 - Localized Post Process - How to 1:26:43 - Localized Post Process - Limitations 1:28:39 - Post Process for Widgets 1:33:24 - Render Targets for Effects 1:41:30 - RayTracing Limitations http://rvillani.com/ https://www.artstation.com/artist/rvillani https://sketchfab.com/rvillani https://www.twitch.tv/rvillani

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "UE4 Material Tricks you didn't know"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "UE4 Material Tricks you didn't know" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "UE4 Material Tricks you didn't know"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "UE4 Material Tricks you didn't know" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "UE4 Material Tricks you didn't know"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "UE4 Material Tricks you didn't know"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.