1.12 Изучение разработки игр на Unity с нуля — концепция рендеринга

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

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

компоненты камеры

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

Если вы посмотрите на окно «Сцена» после его выбора, вы увидите несколько строк, подобных этой:

По сути, эти линии являются вспомогательными линиями, которые используются для напоминания о том, как выглядит видимая область камеры в 3D-пространстве. Это не очень понятно, мы пытаемся изменить Far of the Clipping Plane под Projection в компоненте Camera на 10:

Видно, что все расстояние обзора камеры на самом деле имеет форму лежащей пирамиды, но на самом деле это пирамида Майя.Если мы изменим Ближний рядом с Дальний на 5, мы увидим, что на самом деле это трехмерная трапеция:

Итак, что это делает?

В обычном 3D-мире мы видим, что объекты имеют понятие «близкие», «большие» и «далеко маленькие», поэтому для того, чтобы реализовать реальную 3D-сцену в игре, мы также должны восстановить такой эффект. преобразование перспективной проекции в наш так называемый экран, который и есть наш экран? Это вершина пирамиды майя, которую мы видели выше, и это красная часть на картинке ниже:

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

Правило расчета перспективной проекции преобразуется матрицей, Эта матрица рассчитывается по параметрам Ближний (ближняя плоскость среза), Дальний (плоскость дальнего среза), Fov (поле зрения) и Аспект (соотношение сторон экрана) мы просто модифицировано.решили вместе.

Что касается того, как ее вычислить, то в этот раз я просто ввожу основные понятия, и не буду подробно останавливаться на этом, мне просто нужно понять, что после того, как мы получим эту матрицу через камеру, мы можем использовать матричное умножение в дискретной математике, чтобы преобразовать любую точку в нашем 3D-мире (x, y, z) в нашу 3D-трапециевидную область, если она не находится в этой трапециевидной области, она будет обрезана и не будет нарисована.

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

Если вы хотите настроить эффект перспективы этого изображения, вы можете напрямую изменить часть «Проекция» в компоненте «Камера», о котором мы упоминали выше, и «Проекция» на самом деле означает проекцию.

Конечно, помимо перспективной проекции, когда мы играем в RTS, Tower Defense и другие виды игр, на самом деле нет почти большого и далеко малого.Все объекты имеют одинаковый размер, где бы они ни были расположены.На этот раз мы будем использовать ортогональную проекцию.Расчет фактически состоит в построении матрицы.Чтобы изменить положение в трехмерном мире.

Если вам нужно включить орфографическую проекцию, вы можете переключиться прямо на панели:

Перспектива означает перспективу, а Орфографика означает ортогональность.

компонент рендеринга объектов

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

И теперь у нас собственно есть Куб, который может появиться на экране, давайте взглянем на его составляющие:

В дополнение к Transform и двум компонентам, которые мы написали сами, есть еще BoxCollider, который фактически используется для физических расчетов, так что давайте сначала нажмем на стол.

Затем оставшиеся два компонента — это Mesh Filter и Mesh Renderer, и именно благодаря этим двум компонентам наш куб может отображаться на экране.

Чтобы доказать это, мы пытаемся установить флажок рядом с Mesh Renderer, который является записью операции для включения и отключения функций компонента. После того, как мы снимем галочку, этот компонент не вступит в силу.Мы видим, что после отмены мы не видим серебристо-серую поверхность Cube, остаются только некоторые вайрфреймы:

Окно игры полностью лишается куба, так как у него нет этих вспомогательных каркасов.

Итак, давайте взглянем на эти два компонента, сначала взглянем на Mesh Filter:

Дважды щелкните точку рядом с полем ввода куба.Согласно нашей предыдущей статье мы можем понять, что эта точка может найти объект, на который мы сейчас ссылаемся.Глядя на картинку, мы видим, что мы выбрали куб и он называется типом Mesh.

А Mesh переводится как сетка.Какая связь между рендерингом и сеткой? Сетка на самом деле форма модели в моделировании мы часто говорим, и мы часто слышим сколько лиц у модели.Это лицо на самом деле треугольное лицо (или лицо другой формы).Если вы посмотрите внимательно, сетка предварительного просмотра куба в нижней части окна «Выбор» можно увидеть линии, и видно, что он состоит из треугольных граней.

Итак, теперь на самом деле более ясно, что компонент Mesh Filter хранит ссылку на ресурс Mesh.

Далее смотрим на второй компонент Mesh Renderer:

Так что это выглядит странно.Если наша сетка используется в качестве модели для рендеринга, почему этому меш-рендереру нет места для ссылки на нее?

Я лично считаю, что это историческое наследие дизайна Unity.В будущем мы можем увидеть больше других компонентов Renderer, а некоторые компоненты Renderer настраивают ресурсы Mesh непосредственно в компоненте Renderer.

Затем Mesh Renderer фактически использует негласное правило, то есть он автоматически находит сетку, настроенную в компоненте фильтра сетки, в том же игровом объекте, что и сетка для своего собственного рисования.

И если мы хотим рендерить Mesh, то точно недостаточно иметь только треугольные поверхности, поэтому мы должны хотя бы выложить картинку, то место, где мы используем карту, на самом деле Material (материал). , пока что.

То есть этот скромный Lit используется в качестве материала, который мы используем для рендеринга.Точно так же мы можем щелкнуть точку справа, чтобы определить, какой ресурс мы используем, но поскольку рабочая частота изменения и просмотра данных материала очень высока, Unity по умолчанию будет отображаться в самом низу панели:

Вы вдруг понимаете, почему под некоторыми GameObjects такая куча всего, а у некоторых нет? По сути, это уникальный отображаемый контент компонента Mesh Renderer.

Вы можете видеть, что параметров конфигурации очень много, и текстуры, которые нам нужно настроить, также могут быть настроены в ней, но этот Lit является встроенным материалом внутри Unity, и вы не можете его изменить. скопируйте его сами и замените.Только Lit in Mesh Renderer может изменить так много вышеперечисленного содержимого.

Если вы имели дело с рендерингом, например, те, кто изучал вводное руководство по OpenGL, вы можете быть более чувствительными, чтобы обнаружить, что начало этой дополнительной панели — это Shader.

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

Что касается того, что такое шейдер, эта статья не будет подробно объяснять, здесь лишь небольшое упоминание.

Процесс отделки

Выше мы говорили о трех компонентах:

  1. Компонент камерыКамера
  2. Компонент Mesh Filter, в котором размещаются ресурсы модели
  3. Компонент Mesh Renderer, отвечающий за визуализацию объекта Mesh.

В Unity каждый кадр будет собирать включенные компоненты Mesh Renderer во всех сценах и удалять части, которые не находятся в пределах видимого диапазона компонента Camera.

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

Следующая глава

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

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

Supongo que te gusta

Origin blog.csdn.net/z175269158/article/details/129932609
Recomendado
Clasificación