Доступ к мешам через Mesh API
Mesh класс — основной программный интерфейс к геометрии меша объекта. Он представляет треугольники, положения вершин, нормали и текстурные координаты массивами и содержит ряд других полезных свойств и функций, помогающих формировать меш.
Доступ к сетке объекта
Данные сетки прикрепляются к объекту с помощью Сетчатый фильтр компонента (и объекту также потребуется MeshRenderer Этот компонент доступен с помощью знакомого интерфейса пользователя, который GetComponent функция:
using UnityEngine;
public class ExampleScript : MonoBehaviour
{
MeshFilter mf;
void Start()
{
//if this gameObject has a MeshFilter, mf will reference the component
mf = GetComponent<MeshFilter>();
}
}
Добавить данные сетки
Объект Mesh имеет свойства для вершин и связанных с ними данных (нормальные и координаты UV), а также для данных треугольника. Вершины могут быть предоставлены в любом порядке, но массивы нормальных и UVs должны быть упорядочены таким образом, чтобы все индексы соответствовали вершинам (т.е. элемент 0 массива нормальных обеспечивает нормаль для вершины 0 и т.д.). Вершины Vector3s представляют точки в локальном пространстве объекта. Нормальные нормализованы Vector3s, представляя направления, опять же в локальных координатах. UVs указаны как Vector2s, но поскольку тип Vector2 не имеет полей, называемых U и V, вы должны мысленно преобразовать их в X и Y соответственно.
Треугольники задаются тройками целых чисел, которые служат индексами в массиве вершин. Вместо особого класса для треугольника используется просто список целочисленных индексов. Они берутся по три на треугольник: первые три элемента задают первый треугольник, следующие три — второй, и так далее. Важная деталь — порядок угловых вершин. Их следует расположить так, чтобы при взгляде на видимую внешнюю сторону треугольника углы обходились по часовой стрелке; при этом с какого угла начинать, значения не имеет.
Работа с необработанными данными сетки
Mesh класс имеет и более низкоуровневый расширенный API, позволяющий работать с сырыми данными вершинного и индексного буферов меша. Это полезно там, где нужны максимальная производительность или минимальное количество выделений памяти.
- Mesh.SetIndexBufferParams и Mesh.SetIndexBufferData для настройки размера, формата буфера индекса и обновления данных внутри него.
- Mesh.SetVertexBufferParams и Mesh.SetVertexBufferData для настройки размера, формата вершины buffer(s) и обновления данных внутри них.
- Mesh.SetSubMesh для настройки топологии и диапазонов индексных буферов.
Дополнительные ресурсы
- Данные сетки Документация.
- Mesh API ссылка.