Генерация карты освещения UVs

Генерация карты освещения UVs pos gosuslugi

Unity может рассчитать UV для запеченных карт освещенияпредварительно обработанной текстуры, которая содержит эффекты источников света на статических объектах в сцена. Карты освещения накладываются поверх геометрии сцены для создания эффекта освещения. Подробнее
Посмотрите в Словарь при импорте модели или укажите свои данные .

Эта страница содержит следующую информацию:

  • Как предоставить свои собственные карты освещения
  • Как автоматически генерировать UV-карты освещения

Как создать собственные UV-карты освещения

Вы можете создавать свои собственные UV-карты освещения в выбранном вами программном обеспечении для создания контента. Unity использует эти UV в качестве входных данных для своих расчетов.

Место размещения этих данных зависит от того, предоставляете ли вы UV-развертку для запеченных карт освещения, карт освещения в реальном времени или и того, и другого:

  • Для запеченных карт освещения необходимо поместить UV-карты освещения в файл Mesh.uv2. Этот канал также называется «UV1».
  • Для карт освещения в реальном времени:

    Если у вас уже есть запеченные UV-карты освещения в Mesh.uv2 вашей сеткиОсновной графический примитив Unity. Меши составляют большую часть ваших 3D-миров. Unity поддерживает триангулированные или четырехугольные полигональные сетки. Поверхности Nurbs, Nurms, Subdiv должны быть преобразованы в полигоны. Подробнее
    См. в Словарь, и вы хотите использовать те же UVs в качестве входных данных для карты освещения в реальном времени, вам не нужно ничего делать. Unity возвращается к совместному использованию запеченных карт освещения.Если у вас уже есть запеченные UV-карты освещения в Mesh.uv2 и вы хотите предоставить разные UV-развертки в качестве входных данных для ваших карт освещения в реальном времени, поместите UV-карты освещения в реальном времени. в Mesh.uv3, также называемом “UV2”.Если у вас еще нет запеченных UV-карт освещения во втором канале вашей сетки, вы можете использовать Mesh.uv2 или Mesh.uv3 для карт освещения в реальном времени.

  • Если у вас уже есть запеченные UV-карты освещения в Mesh.uv2 вашей сеткиОсновной графический примитив Unity. Меши составляют большую часть ваших 3D-миров. Unity поддерживает триангулированные или четырехугольные полигональные сетки. Поверхности Nurbs, Nurms, Subdiv должны быть преобразованы в полигоны. Подробнее
    См. в Словарь, и вы хотите использовать те же UVs в качестве входных данных для карты освещения в реальном времени, вам не нужно ничего делать. Unity возвращается к совместному использованию запеченных карт освещения.
  • Если у вас уже есть запеченные UV-карты освещения в Mesh.uv2 и вы хотите предоставить разные UV-развертки в качестве входных данных для ваших карт освещения в реальном времени, поместите UV-карты освещения в реальном времени. в Mesh.uv3, также называемом “UV2”.
  • Если у вас еще нет запеченных UV-карт освещения во втором канале вашей сетки, вы можете использовать Mesh.uv2 или Mesh.uv3 для карт освещения в реальном времени.

Хороший набор UV для карт освещения должен соответствовать следующим правилам:

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

Как автоматически генерировать UV-карты освещения

Вы можете указать Unity автоматически генерировать UV-карты освещения для модели, используя настройки импорта модели.

  • Выберите модель в представлении проекта. Unity открывает настройки импорта модели в Инспектореокне Unity, в котором отображается информация о текущем выбранном игровом объекте, активе или настройках проекта, что позволяет вам проверять и редактировать значения. Дополнительная информация
    См. в Словарь.
  • В настройках импорта модели перейдите на вкладку Модель, а затем в раздел Геометрия.
  • Установите флажок Создать UV-карты освещения. Раздел Настройки UV-карты освещения отображается под флажком «Создать UV-карту освещения».
  • Необязательно: настройте параметры в разделе Настройки UV карты освещения. Дополнительную информацию см. в разделе Настройки.
  • Нажмите кнопку Применить. Unity генерирует UV-карты освещения в канал Mesh.uv2.

Настройки автоматической генерации карты освещения UV

Эти настройки отображаются на вкладке Модель в разделе Настройки импорта модели, когда вы включаете Создать UV-карты освещения.

Устранение неполадок с автоматически сгенерированными UV-картами освещения

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

Разрешение карты освещения определяет разрешение текселей ваших карт освещения. LightmappersИнструмент в Unity, который запекает карты освещения в соответствии с расположением источников света и геометрией в вашей сцене. Подробнее
См. в Словарь: расширьте некоторые тексели диаграммы в карте освещения, чтобы избежать черных краев, поэтому УФ-диаграммы вашей сетки должны быть отделены друг от друга как минимум на два полных текселя, чтобы избежать легкого размытия. Используйте параметр Pack Margin, чтобы обеспечить достаточное расстояние между UV-диаграммами вашей геометрии.

Генерация карты освещения UVs

В UV-пространстве карты освещения отступы между диаграммами должны составлять не менее двух полных текселей, чтобы избежать наложения UV и случайного просачивания света. На этом изображении черный пробел представляет собой пространство между диаграммами.

Минимальное разрешение карты освещения и минимальный масштаб объекта

Размещение УФ-диаграмм слишком близко друг к другу может привести к просвечиванию текселей кросс-диаграмм в итоговой карте освещения. Размещение диаграмм слишком далеко друг от друга тратит память. Идеальное поле упаковки объекта зависит от того, сколько текселей карты освещения ему выделено.

Количество текселей, которые Unity использует для MeshRenderer, зависит от разрешения карты освещения MeshRenderer и масштаба преобразования. Чтобы рассчитать хорошую маржу, Unity необходимо знать ожидаемые минимальные значения этих свойств.

Разрешение карты освещения MeshRenderer представляет собой комбинацию свойства Разрешение карты освещения актива настроек освещения для СценыСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
Посмотрите в Словарь, в котором появляется MeshRenderer, и Scale in Lightmap свойства MeshRenderer. Обратите внимание, что это означает, что один и тот же MeshRenderer может иметь разное разрешение карты освещения в разных сценах.

Вы можете использовать Инспектор для просмотра разрешения карты освещения MeshRenderer в данной сцене:

  • В виде сценыинтерактивный вид мира, который вы создаете. Вы используете Scene View для выбора и размещения пейзажей, персонажей, камер, источников света и всех других типов игровых объектов. Дополнительная информация
    Посмотрите в Словарь или в Иерархии, выберите класс GameObjectОсновной объект в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
    См. в Словаре компонент MeshRenderer.
  • В Инспекторе перейдите к разделу Lightmapping компонента MeshRenderer.
  • Откройте вкладку Baked Lightmap. Unity отображает разрешение карты освещения MeshRenderer в запеченной карте освещения с меткой Разрешение карты освещения и масштаб преобразования в запеченной карте освещения с меткой Масштаб объекта карты освещения.

Угловое искажение

На следующих снимках экрана показано одинаковое разрешение, но с разным значением UV. Первое изображение имеет высокую ошибку угла, и результат содержит непреднамеренные артефакты. Второе изображение имеет ошибку угла по умолчанию (8%). В сетках с большим количеством треугольников угловое искажение может значительно исказить форму.

Генерация карты освещения UVs

Генерация карты освещения UVs

Площадь искажения

На изображении ниже два прожектора с одинаковыми параметрами освещают стороны цилиндра. Правая сторона цилиндра имеет более высокое значение Area Error, что искажает треугольники и приводит к более низкому разрешению, создавая артефакты в свете.

Генерация карты освещения UVs

Генерация карты освещения UVs

Генерация карты освещения UVs

Описание карты

На карте засветки показано световое загрязнение неба в Московской и части сопредельных областей. Световое загрязнение возникает от ночного освещения крупных и средних населенных пунктов. Чем выше степень засветки, тем меньше объектов ночного неба может разглядеть человек. Карта пригодится как астрономам любителям, так и просто романтикам, любящим посмотреть на звезды.

Для прочих городов России и ближнего зарубежья степень засветки можно определить по космоснимку России, сделанному в ночное время.

Степени засветки на карте показаны следующими цветами:

– Небо ночью серое, бурое, может казаться фиолетовым. Из созвездий можно распознать только самые яркие, типа Большой Медведицы, Ориона, Кассиопеи. Видимость звезд в Москве во много еще зависит от текущей чистоты воздуха. В идеальную зимнюю погоду с ясным небом и смогом унесенным ветром при наблюдениях в середине парков с большими площадями можно различать двойные звезды, и спутники Юпитера с использованием обычного 10 кратного бинокля. Доступная звёздная величина до 4.

– Видна структура Млечного пути. От света особо ярких звезд, как и от млечного пути могут проявляться тени на светлых объектах. Облака темнее неба. Доступная звёздная величина до 7.0-8.0

Light pollution map of the Moscow region

Компьютер освещения Enlighten от Unity использует предварительно вычисленное глобальное освещение в реальном времени для создания непрямого освещения. Это может быть преимуществом, поскольку при изменении освещения могут создаваться новые карты освещенияпредварительно обработанная текстура, содержащая эффекты источников света на статические объекты на сцене. Карты освещения накладываются поверх геометрии сцены для создания эффекта освещения. Подробнее
Увидеть в Словарь довольно быстро. Тем не менее, это также может быть недостатком по сравнению с прогрессивным картированием освещения, поскольку оно накладывает ограничения на макет UV, даже если вы хотите использовать его только для запеченного освещения.

Поддержка конвейера рендеринга

  • Встроенный конвейер рендеринга поддерживает модуль карты освещения Enlighten.
  • Универсальный конвейер рендеринга (URP) не поддерживает модуль карты освещения Enlighten.
  • Конвейер рендеринга высокого разрешения (HDRP) не поддерживает модуль карты освещения Enlighten.

Использование карты освещения Enlighten

Многие функции, доступные в этом окне, можно выполнять с помощью скриптовфрагмента кода, позволяющего создавать собственные Компоненты, запускайте игровые события, изменяйте свойства Компонентов с течением времени и реагируйте на ввод данных пользователем любым удобным для вас способом. Подробнее
См. в Словарь, используя LightmapEditorSettings и API Lightmapping.

Оба Глобальное освещение в реальном времениГруппа методов, которые моделируют как прямое, так и непрямое освещение для получения реалистичных результатов освещения. В Unity есть две системы глобального освещения, сочетающие прямое и непрямое освещение: запеченное глобальное освещение и глобальное освещение в реальном времени.
См. в системе Словарь и использовании системы Baked Global Illumination карты освещения, поэтому требуется карта освещенияпредварительно обработанная текстура, содержащая эффекты источников света на статических объектах сцены. Карты освещения накладываются поверх геометрии сцены для создания эффекта освещения. Подробнее
См. в Словарь UVs.

Unity использует отдельные наборы UV-карт освещения для системы глобального освещения в реальном времени и системы запеченного глобального освещения. На это есть две причины:

  • Нет прямого соответствия в группировке экземпляров между картами освещения в реальном времени и запеченными картами освещения; экземпляры, которые находятся в одной и той же карте освещения в реальном времени, могут быть в двух разных запеченных картах освещения, и наоборот.
  • Сети, отображаемые в разных масштабах, имеют общие UV-карты освещения в запеченных картах освещения, но не используют общие UV-развертки в картах освещения в реальном времени.

Запеченные UV-карты освещения

Запеченные UV-карты освещения создаются для каждой сетки: все экземпляры одной и той же сеткиосновного графического примитива Unity. Меши составляют большую часть ваших 3D-миров. Unity поддерживает триангулированные или четырехугольные полигональные сетки. Поверхности Nurbs, Nurms, Subdiv должны быть преобразованы в полигоны. Подробнее
См. в Словаре одинаковые запеченные UV-карты освещения. Unity может рассчитать UV для запеченных карт освещения, когда вы импортируете модель, или вы можете предоставить свои собственные данные.

Unity хранит запеченные UV-карты освещения в своей сетке в канале Mesh.uv2. Этот канал соответствует шейдерупрограмме TEXCOORD1, которая работает на графическом процессоре. Подробнее
См. в семантике Словарь и обычно называется «UV1».

Если включено Baked Global Illumination и данный MeshRenderer получает глобальное освещение от карт освещения, Unity использует данные в канале Mesh.uv2 для правильно сопоставить запеченные карты освещения с сеткой.

Примечание. Если вы хотите использовать Mesh.uv2 для другой цели в данном сетки, вы должны убедиться, что все компоненты MeshRenderer, использующие сетку, получают глобальное освещение от Light ProbesLight probes сохраняют информацию о том, как проходит свет через пространство в вашей сцене. Набор световых зондов, расположенных в заданном пространстве, может улучшить освещение движущихся объектов и статических пейзажей LOD в этом пространстве. Подробнее
Смотрите в Словарь, а не в картах освещения. Измените это с помощью Инспектора компонента Mesh Renderer или API MeshRenderer.receiveGI.

Дополнительную информацию см. в разделе Создание UV-карт освещения.

Lightmap UVs в реальном времени

UV карты освещения в реальном времени создаются для каждого Mesh Renderer: все экземпляры одной и той же сетки используют одни и те же входные данные, но разные экземпляры Mesh RenderersКомпонент сетки, который берет геометрию из фильтра сетки и визуализирует ее в положении, определенном компонентом преобразования объекта. Подробнее
может использовать различные UV-карты освещения в реальном времени во время выполнения. Unity рассчитывает UV для системы глобального освещения в реальном времени на этапе предварительного расчета. Этот расчет берет UV для каждой сетки в качестве входных данных и использует эти данные для создания UV для Mesh Renderer. Unity может генерировать входные UV-развертки для каждой сетки при импорте модели, или вы можете предоставить свои собственные данные.

Это работает следующим образом:

  • Unity может использовать данные из канала Mesh.uv3 в качестве входных данных для расчета UV карты освещения в реальном времени. Mesh.uv3 соответствует семантике шейдера TEXCOORD2 и обычно называется «UV2».
  • Если в Mesh.uv3 нет данных, но есть данные в Mesh.uv2 , Unity возвращается к использованию данных в Mesh.uv2 в качестве входных данных для расчета карты освещения UV в реальном времени. Mesh.uv2 используется для запеченных карт освещения UV. Обычно запеченные UV-карты освещения используются в качестве входных данных для UV-карт в реальном времени.
  • Результаты вычислений сохраняются для каждого MeshRenderer в MeshRenderer.enlightenVertexStream. Если глобальное освещение в реальном времени включено и данный компонент MeshRenderer вносит свой вклад в глобальное освещение и получает свое глобальное освещение от карт освещения, Unity автоматически передает данные из MeshRenderer.enlightenVertexStream в TEXCOORD2 в шейдерах вместо этого. данных в Mesh.uv3.

Примечание. Если вы хотите использовать Mesh.uv3 для другой цели в сетке, использующей глобальное освещение в реальном времени , вы должны убедиться, что все компоненты MeshRenderer, использующие сетку, получают глобальное освещение от Light Probes, а не от карт освещения. Измените это с помощью Инспектора компонента Mesh Renderer или API MeshRenderer.receiveGI.

Как Unity рассчитывает UV-карты освещения в реальном времени

Вот что происходит, когда Unity берет входные UV для каждой сетки и обрабатывает их в выходные UV для каждого Mesh Renderer.

Упаковка

Unity переупаковывает UV-карты освещения в реальном времени, чтобы гарантировать, что граница каждой диаграммы попадает на центр текселя во всех направлениях, а затем добавляет пол-текселя отступа вокруг границы каждой диаграммы. Это гарантирует, что между всеми диаграммами будет полный тексель.

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

Генерация карты освещения UVs

Примечание. Этот метод упаковки означает, что вычисляемые UV-развертки зависят от масштаба и разрешения карты освещения экземпляра, поэтому UV-развертка карты освещения в реальном времени рассчитывается для каждого Mesh Renderer; однако Unity автоматически оптимизирует это, когда это возможно, и рендереры сетки, которые используют одну и ту же сетку с одинаковым масштабом и разрешением карты освещения, используют одни и те же UV.

Объединение

При желании вы можете указать Unity объединять UV-диаграммы, где это возможно, во время этого процесса. Это уменьшает размер карт освещения и может улучшить использование памяти во время выполнения и производительность.

Вы можете включить эту оптимизацию для любого GameObjectосновного объекта в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь с компонентом Mesh Renderer. В Инспекторе визуализации сетки перейдите к разделу Lightmapping и выберите Оптимизировать UV в реальном времени.

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

Читайте также:  Новая дидактика современного урока в контексте введения ФГОС, Крылова О. Н
Оцените статью