Научиться делать самозванцев вручную в Unity - как сделать объект текстурой, а не тем, что видит камера?

8

Я пытаюсь изучить самый эффективный способ сделать самозванец в Unity вручную - без использования готовых решений.

Мое первое предположение состоит в том, что это должно быть достигнуто с помощью RenderTexture и второй камеры, а затем делать разные «снимки» разных углов объекта. Если есть лучшие альтернативы с точки зрения производительности (даже если их сложнее реализовать), я хотел бы услышать о них.

В случае, если это единственный путь, я узнал, как визуализировать с камеры на текстуру с помощью скрипта, но я все еще не мог понять, как сделать следующее, что мне нужно сделать в первую очередь: как визуализировать -текстурировать конкретный объект без фона камеры (то есть с прозрачной остальной текстурой) качественным способом?

Указатели, предложения или, по крайней мере, рекомендации по ссылкам будут отличными.

Заранее спасибо.

AndraSol
источник
Пожалуйста, сузьте свой пост до одного вопроса. Вы можете создать 2 разных сообщения с вопросами для ваших двух вопросов.
Vaillancourt
@AlexandreVaillancourt Нет проблем! Я так и сделал. Дайте мне знать, если это все еще нуждается в дальнейшем улучшении
AndraSol
Вы также не можете запрашивать «ссылки», поскольку ответы, содержащие только ссылки, не считаются хорошим ответом для этого сайта, в противном случае ваш вопрос в порядке :)
Vaillancourt
@AlexandreVaillancourt Спасибо! Но я думаю, что тогда хорошие рекомендации по ссылкам могут прийти через комментарий, я прав?
AndraSol
Примерно так, да. Ответ может быть хорошо написан и иметь ссылки на более подробную информацию. Ответ, содержащий только ссылки, будет удален. Комментарии не подчиняются этим правилам.
Vaillancourt

Ответы:

3

Есть множество различных методов самозванцев.

Уровень детализации, вероятно, самый простой, но он имеет два основных недостатка. Заметный «всплывающий» эффект при переключении между моделями низкого и высокого разрешения, решаемый постепенным переходом между LOD. Вторая проблема заключается в том, что для художника гораздо больше работы по созданию LOD для каждой отдельной модели. В GDC говорится об автоматизированном способе генерации LODS - «Автоматизированный уровень детализации для HALO: REACH».

Более простой метод - это рекламный щит, где вы используете только плоский многоугольник, а не сетку с низким разрешением. Этот многоугольник обращен к камере и текстурирован от рендера вашей модели. Этот метод требует наличия нескольких разных видов вашего объекта, очень похоже на то, как враги обречены. Вы можете перенести все ваши виды на атлас текстуры. Современные игры используют такой подход, как Far Cry 3 https://www.youtube.com/watch?v=9P3EI17kHaI

Вы также можете иметь несколько различных статических рекламных щитов и комбинировать их, как в этом едином пакете https://forum.unity3d.com/threads/abi-automatic-3d-billboard-imposters-released.204579/

Но лучший способ (который, я думаю, вам нужен) - это динамическое отображение ваших рекламных щитов, как в этой статье о gamasutra. http://www.gamasutra.com/view/feature/130911/dynamic_2d_imposters_a_simple_.php Впервые это было сделано Jurrassic Park: Trespasser в 1998 году, так что это не новая техника. Посмотрите обзор кода здесь http://fabiensanglard.net/trespasser/index.php Прокрутите вниз до раздела о вейвлетах, чтобы увидеть их самозванцев.

За исключением стандартного подхода LOD, ваш первый шаг, вероятно, будет найти учебник рендеринга текстуры. Ориентация камеры renderTexture должна быть такой же, как у основной камеры, но обрезана вокруг игрового объекта для повышения эффективности. Вам нужно будет изолировать gameObject (ы), которые вы хотите визуализировать, с помощью маски отбраковки. И установите четкие флаги камеры, чтобы получить прозрачный фон. Затем выведите рекламный щит вместо оригинального объекта.

Рувим Кримп
источник