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

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

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

dolphin-mesh

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

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

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

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

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

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

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

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

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

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

Метод Mesh   Описание
setBound(boundingVolume)   Если вам нужно указать собственный оптимизированный ограничивающий объем
setStatic()   Блокирует сетку, поэтому вы больше не можете ее модифицировать, оптимизируя этим свои данные (ускоряет).
setDynamic()   Разблокирует сетку, чтобы вы могли ее модифицировать, но это приведет к отсутствию оптимизации данных (медленнее).
setMode(Mesh.Mode.Points)   Используется для установки режимов рендеринга сетки, см. Ниже.
getId()   Возвращает Mesh 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. Все права сохранены.