Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество

Полигональные сетки

Опубликованно: 06.05.2017, 23:35
Последняя редакция, Andry: 23.06.2018 19:21

dolphin-mesh

Все видимые игровые элементы в сцене, будь то Модель или Фигуры, состоят из полигональных сеток(meshe). JME3 имеет класс com.jme3.scene.Mesh, который представляет все сетки.

  • Сетки состоят из треугольников: getTriangleCount(…) и getTriangle(…)
  • Каждая сетка имеет уникальный идентификатор: getId()
  • Сетки имеют возможность изменять: местоположение (перемещение по местности), поворот, менять размер.
  • Сетки имеют ограничивающий объем. JME3 может обнаруживать пересечения (то есть не физические столкновения) между сетками или между сетками и двумерными элементами, такими как лучи: collideWith().
  • Сетки блокируются с помощью setStatic() и разблокируются с помощью setDynamic().
    • Статические сетки не могут быть изменены, но они более оптимизированы и быстрее (их можно предварительно общитать).
    • Динамические сетки могут быть изменены в реальном времени, но они не оптимизированы и медленны.

У вас есть несколько вариантов создания геометрий из сетки:

Буфер Вершин(Vertex Buffer)

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

Сетка Буфера Вершин

Ниже приведен список типов VertexBuffer.

Типы Буфера Вершин   Описание
Type.Position   Положение вершины (3 float)
Type.Index   Задает индексный буфер, должен содержать целочисленные данные.
Type.TexCoord   Координата текстуры
Type.TexCoord2   Координата текстуры # 2
Type.Normal   Вектор Нормали, нормализованный.
Type.Tangent  Касательный вектор, нормализованный.
Type.Binormal   Бинормальный вектор, нормализованный.
Type.Color   Цвет и Альфа (4 float)
Type.Size   Размер точки при использовании буфера точек.
Type.InterleavedData   Задаёт исходные данные для различных буферов вершин при использовании чередование.
Type.BindPosePosition   Начальная позиция вершин, используемая с анимацией.
Type.BindPoseNormal   Начальные нормали вершин, используемые с анимацией
Type.BoneWeight   Нагрузка кости используемой с анимацией
Type.BoneIndex   Индексы кости, используемой с анимацией

Свойства Mesh(сетки)

Некоторые свойства Сетки из класса Mesh.

Метод Mesh   Описание
setBound(boundingVolume)   Если вам нужно указать собственный оптимизированный ограничивающий объем
setStatic()   Блокирует сетку, в следствии чего вы больше не можете её модифицировать, это оптимизирует ваши данные (ускоряет).
setDynamic()   Разблокирует сетку, чтобы вы могли её модифицировать, но это приведет к отсутствию оптимизации данных (медленнее).
setMode(Mesh.Mode.Points)   Используется для установки режимов рендеринга сетки, см. Ниже.
getId()   Возвращает ID Сетки, по умолчанию значение -1
getTriangle(int,tri)   Возвращает int данные номера треугольника в переменную tri
scaleTextureCoordinates(Vector2f)  Определяет как текстура будет растянута по всей сетке.

Mesh Rendering Modes(Режимы рендеринга сетки)

Ниже приведен список режимов рендеринга Mesh.

Mesh Mode  Описание
Mesh.Mode.Points  Показывать только угловые точки (вершины) сетки
Mesh.Mode.Lines  Показывать линии (ребра) сетки
Mesh.Mode.LineLoop  Описание
Mesh.Mode.LineStrip  ?
Mesh.Mode.Triangles  ?
Mesh.Mode.TriangleStrip  ?
Mesh.Mode.TriangleFan  ?
Mesh.Mode.Hybrid  ?

Уровень детализации

Необязательно, пользовательские сетки могут иметь LOD (уровень детализации оптимизации), который делает более или менее подробные сетки, в зависимости от расстояния сетки от камеры. Вы должны указать несколько буферов вершин, по одному для каждого уровня детализации (очень далеко, с несколькими деталями, крупным планом со всеми деталями и какак нибудь для значений посередине). Используйте setLodLevels(VertexBuffer[] lodLevels).


Переведено для jmonkeyengine.ru, оригинал
Автор перевода: Andry

Добавить комментарий

jMonkeyEngine.ru © 2017. Все права сохранены.