Войти
Unreal EngineФорумОбщее

UE4 - элементарное задание не по силам? пост ненависти (capture and reconstruct depth)

Страницы: 1 2 Следующая »
#0
23:09, 24 июня 2016

Приветы

Сейчас разбираюсь в UE4 и возникло желание сделать то, что я уже сотни раз делал в разных движках -
захватить depth сцены камерой, а позже в каком-нибудь другом шейдере использовать реконструкцию.

О ужас, за пол дня не смог даже близко нагуглить как это в принципе возможно сделать! Реально, рейтинг
УЕ в моих глазах сильно упал.
В камерах нету clip planes! Это как так?
SceneCapture не имеют матриц, и никак их не получить!

Удалось с танцами и бубнами получить рендер depth'a в текстуру, но сделать
с ним ничего нельзя! Нету матриц для реконструкции, нету даже инфы по поводу
того как он устроен - линеаризованный ли он уже, от 0 до 1? Што там вообще записано?

Короче, такая негибкость и ориентированность на узкий круг задач повергла меня
в мрачное расположение духа. Шаг в сторону - и сделать это на анрыле невозможно?
Супер. Супер.


#1
23:14, 24 июня 2016

Согласен
Здесь есть тема, где народ высказывает свои мысли о движке (в основном отрицательные): http://www.gamedev.ru/community/ue4/forum/?id=192174

Вы еще не сталкивались стем, как он начинает вылетать по 20 раз в час, если не так соединил проводки в чертежах (runtime без перехвата исключений...)

#2
23:19, 24 июня 2016

Надо понимать, что UE всегда был движком для больших команд и если что-то в движке работает не так, как надо, то эта часть дописывается или переписывается.

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

Некоторые вещи, которые в других движках исполнены изящно и близко к функциональности используемой библиотеки, в UE4 малофункциональны и имеют ряд ограничений. Например система коллизий в UE4 мне совершенно не понравилась, чувствуется след legacy, тянущийся из предыдущих версий. Очень криво и не интуитивно.

#3
23:23, 24 июня 2016

Да неприятно это всё просто.
Такая вещь элементарная, неужели нельзя более открытую архитектуру сделать.

#4
23:32, 24 июня 2016

Mephisto std
> Такая вещь элементарная, неужели нельзя более открытую архитектуру сделать.
Согласен.

Вообще плотно поработав с UE4 я разочаровался в нем. С одной стороны богатая библиотека и высокая производительность, но с другой — совершенно неудачное решение многих вещей, судя по всему наследие прошлых версий. Плюс забагованный и тормозящий редактор.

В Unity очень многое сделано куда лучше, чем в UE4. Если б еще C#-скрипты собирались в машинный код и на ПК, то цены б ему не было. Может со временем реализуют?

#5
0:20, 25 июня 2016

А как крайэнджин поживает? У него тоже всё плохо?

#6
19:26, 26 июня 2016

Не очень понятна ваша возня с глубиной. В редакторе материалов есть ноды Pixel Depth и Scene Depth. В режиме постобработки есть SceneTexture, в котором есть SceneDepth.

А вот по поводу клипплейнов и матриц, тут да, облом. Хотя вы можете их получить через Custom ноду в редакторе материалов.

Так или иначе, лучше говорить о задаче, которую хотите сделать. Будет легче понять, что именно не так и как можно реализовать.

#7
20:59, 26 июня 2016

Многие, еще толком не разобравший с движком, чуть что, сразу бегут на форумы с категоричными заявлениями.

#8
21:17, 26 июня 2016

way

+1. Постоянно говорят что-то вроде:

"В анриале потратил целый день что бы сделать то, что в юнити бы сделал за 5 минут"

При этом забывая, что в анриал только зашли, а на юнити за плечами большой опыт.

Конечно, и анриал имеет ряд недостатков, но лучше смотреть объективно на движки, и сравнивать их не за один пункт, а за все в целом.

#9
22:31, 26 июня 2016

ну так я написал задачу в нулевом посте, вместо абстрактной критики - как насчет конструктива?

Нужно отрендерить в глубину сцену с точки зрения персонажа,
а потом в постпроцессе использовать эту информацию для того чтобы рисовать visibility cones.
Как тут:
Изображение

Для того, чтобы использовать depth для такой проверки, нужно получить из неё world position.
Для этого нужно Inverted View Projection Matrix камеры, которая снимала.

И я работаю в UE4 в хобби-режиме с апреля, т.е. уже какое-то время. И гуглить я умею хорошо,
никакой инфы про реконструкцию depth я не нашел, как и про доставание матриц и т.п.

p.s. и в камерах всё же нету clip planes!

#10
22:58, 26 июня 2016

Чем то похоже на то, если бы точечный источник света, со включенными тенями, перемещался по уровню.
Можно было бы рендерить отдельным проходом и накладывать в режиме умножения на финальную картинку.
Правда я не знаю как это в Unreal сделать.

#11
23:06, 26 июня 2016

way
можно и через лайтинг, но это изврат)

Я описал как это правильно сделать.
Можно конечно на ЦПУ - перебирать объекты, строить шейпы, рисовать их, но это не кошерно и не универсально

#12
23:41, 26 июня 2016

Я эту задачу решал, правда генерацией геометрии. Не тот вариант, но все же лучше чем перебирать геометрию, мне кажется)

https://www.youtube.com/watch?v=lcJvhE1CP2U&index=14&list… RAYwluMpC_pOB

А вообще, глубину сцены от персонажа отрендерить не сложно.. Ставите 2D Capture, делаете PP материал, что бы выводил глубину, потом ставите этот материал в качестве шейдера постобработки на камеру (заменяя постобработку). Получаете глубину с этого места.

А вот что бы все это дело подцепить, тут да, проблема. Единственный вариант, это высчитать в коде обзор этой камеры, передать это в материал и уже на шейдерах определить. Впрочем, если интересно, можем вместе разобраться. По сути, это как свои каскадные тени от источника раскидывать :)

#13
0:29, 27 июня 2016

Flakky
> это как свои каскадные тени от источника раскидывать
Почему именно каскадные? Любые шадоумапы так работают

> Ставите 2D Capture, делаете PP материал, что бы выводил глубину, потом ставите этот материал в качестве шейдера постобработки на камеру (заменяя постобработку).
Да, это у меня уже делал.

Тут на самом деле две проблемы - первая в том, что нету доступа к матрице, чтобы сделать репроекцию. Можно, конечно, попробовать аналитически восстановить её
из позиции, фова и настроек UE (у scene capture такие же clipping planes как у любой камеры в проекте?)
Т.е. в приииинципе решаемая.

Вторая - что для решения задачи 2D capture нужно 4 штуки. В шейдере либо 4 сэмпла, либо 4х динбранч, что вообще ад.

Моё решение на данный момент (которым я и занимаюсь пассивно):
Намного проще было бы использовать scene cube capture, но с какого-то х@ра у неё нету blendables, и в неё нельзя отрендерить глубину.
Короче, собираю UE4 из сорцов, допиливаю cube capture (чтобы были blendables), и тогда, по идее, первой проблемы можно не боятся -
сампл по нужному направлению кубмапы даст необходимый результат безо всяких матриц (хотя, конечно, depth придётся перевести в world, но
это значительно проще и не требует вытаскиваний полных матриц).

#14
13:17, 27 июня 2016

Mephisto std
> И гуглить я умею хорошо,
> никакой инфы про реконструкцию depth я не нашел, как и про доставание матриц и
> т.п.
Почему у разрабов UE4 напрямую не спросил?:
https://answers.unrealengine.com/
https://forums.unrealengine.com/

Элементарное не по силам?

Страницы: 1 2 Следующая »
Unreal EngineФорумОбщее

Тема в архиве.