Описание
BillboardAsset описывает, как отображается рекламный щит.
Рекламные щиты — это метод уровня детализации (LOD), позволяющий рисовать сложные трехмерные объекты более простым способом, если они находятся дальше. Поскольку объект находится дальше, часто меньше требований к рисованию объекта во всех деталях из-за его размера на экране и низкой вероятности того, что он будет фокусом в представлении камеры. Вместо этого объект может быть предварительно визуализирован в текстуру, и эта текстура используется на очень простой обращенной к камере сетке плоской геометрии (часто просто четырехугольнике), известной как рекламный щит. На больших расстояниях объект существенно не меняет свою ориентацию относительно камеры, поэтому рекламный щит очень похож на объект, который он представляет, от кадра к кадру, и его не нужно перерисовывать из модели. Класс BillboardAsset позволяет создавать рекламные щиты, отображаемые с нескольких направлений, что позволяет BillboardAsset эффективно представлять объект с низким уровнем детализации с любой приблизительно горизонтальной точки зрения.
Актив BillboardAsset обычно создается путем импорта ресурсов SpeedTree. Вы также можете создать свой собственный, если знаете, как описывается рекламный щит.
Геометрия рекламного щита SpeedTree обычно сложнее, чем простой четырехугольник. Использование большего количества вершин для вырезания пустой части изображения рекламного щита потенциально может повысить производительность рендеринга, поскольку графической системе не нужно отрисовывать столько избыточных прозрачных пикселей. У вас есть доступ к данным геометрии через BillboardAsset.vertices и BillboardAsset.indices.
Все вершины рассматриваются в UV-пространстве (см. рис. 1 ниже), поскольку геометрия должна быть текстурирована изображениями билборда. Вершины UV легко расширяются до вершин 3D-пространства, если известны ширина, высота, нижняя часть рекламного щита и направление, в котором рекламный щит в данный момент обращен. Предполагая, что у нас есть рекламный щит, расположенный в (0,0,0) по отрицательной оси Z, координаты 3D-пространства вычисляются как:
X = (u - 0.5) * width
Y = v * height + bottom
Z = 0
Чтобы отобразить что-то похожее на реальную трехмерную сетку рекламного щита, рекламные щиты SpeedTree выбирают подходящее изображение из нескольких предварительно визуализированных изображений в соответствии с текущим направлением взгляда. Изображения на рис. 2 ниже созданы путем захвата визуализированного изображения 3D-дерева под разными углами обзора, равномерно распределенного по оси Y. Первое изображение всегда начинается с положительного направления оси X (или 0°, если вы представляете единичный круг сверху).
Все изображения должны быть объединены в одну текстуру. Каждое изображение представлено как Vector4 {слева u, сверху v, ширина в u, высота в v} в атласе. У вас есть доступ ко всем изображениям через BillboardAsset.imageTexCoords. SpeedTree Modeler всегда экспортирует нормальную текстуру вместе с диффузной текстурой для еще лучшего приближения освещения, и он использует тот же макет атласа, что и диффузная текстура.
После создания объекта BillboardAsset используйте BillboardRenderer для его рендеринга.
Свойства
bottom | Высота рекламного щита под землей. |
height | Высота рекламного щита. |
imageCount | Количество предварительно обработанных изображений, которые можно переключать при просмотре рекламного щита под разными углами. |
indexCount | Количество индексов в сетке рекламного щита. |
material | Материал, используемый для рендеринга. |
vertexCount | Количество вершин в сетке рекламного щита. |
width | Ширина рекламного щита. |
Конструкторы
BillboardAsset | Создает новый BillboardAsset. |
Публичные Методы
GetImageTexCoords | Получите массив данных координат текстуры изображения рекламного щита. |
GetIndices | Получите индексы сетки рекламного щита. |
GetVertices | Получите вершины сетки рекламного щита. |
SetImageTexCoords | Установите массив данных координат текстуры изображения рекламного щита. |
SetIndices | Установите индексы сетки рекламного щита. |
SetVertices | Установите вершины сетки рекламного щита. |
Унаследованные члены
Свойства
hideFlags | Должен ли объект быть скрыт, сохранен вместе со сценой или изменен пользователем? |
name | Имя объекта. |
Публичные Методы
GetInstanceID | Возвращает id экземпляра объекта. |
ToString | Возвращает имя объекта. |
Статические Методы
Destroy | Удаляет игровой объект, компонент или актив. |
DestroyImmediate | Уничтожает объект obj. Вместо этого рекомендуется использовать метод Destroy. |
DontDestroyOnLoad | Не уничтожает целевой объект при загрузке новой сцены. . |
FindObjectOfType | Возвращает первый активный загруженный объект. |
FindObjectsOfType | Получает список всех загруженных объектов. |
Instantiate | Клонирует исходный объект и возвращает клон. |
Операторы
bool | Объект существует? |
operator != | Сравнивает, ссылаются ли два объекта на другой объект. |
operator == | Сравнивает две ссылки на объекты, чтобы определить, ссылаются ли они на один и тот же объект. |