Класс TriangleMesh
- javafx.scene.shape.Mesh
-
- javafx.scene.shape.TriangleMesh
public class TriangleMesh extends Mesh
VertexFormat и набора отдельных массивов компонент вершин, таких как точки, нормали, текстурные координаты, и массив граней, определяющих отдельные треугольники сетки. Обратите внимание, что термин «точка» в именах методов и описаниях методов фактически относится к 3D-точке (x, y, z) в пространстве, представляющей положение одной вершины. Термин «точки» (множественное число) используется для обозначения наборов 3D-точек для нескольких вершин. Аналогично, термин «нормаль» используется для обозначения 3D-вектора (nx, ny, nz) в пространстве, представляющего направление одной вершины. Термин «нормали» (множественное число) используется для обозначения наборов 3D-векторов для нескольких вершин. Термин «texCoord» используется для обозначения одной пары 2D-текстурных координат (u, v) для одной вершины, а термин «texCoords» (множественное число) используется для обозначения наборов текстурных координат для нескольких вершин. Наконец, термин «грань» используется для обозначения 3 набора переплетающихся точек, нормалей (необязательно, в зависимости от связанного VertexFormat) и текстурных координат, которые вместе представляют геометрическую топологию одного треугольника, а термин «грани» (множественное число) используется для обозначения наборов треугольников (каждый представлен гранью).
Например, грани с VertexFormat.POINT_TEXCOORD, которые представляют один текстурированный прямоугольник, используя 2 треугольника, имеют следующий порядок данных: [
p0, t0, p1, t1, p3, t3, // Первый треугольник текстурированного прямоугольника
p1, t1, p2, t2, p3, t3 // Второй треугольник текстурированного прямоугольника
]
тогда как грани с VertexFormat.POINT_NORMAL_TEXCOORD, которые представляют один текстурированный прямоугольник, используя 2 треугольника, имеют следующий порядок данных: [
p0, n0, t0, p1, n1, t1, p3, n3, t3, // Первый треугольник текстурированного прямоугольника
p1, n1, t1, p2, n2, t2, p3, n3, t3 // Второй треугольник текстурированного прямоугольника
]
где p0, p1, p2 и p3 — индексы в массиве точек, n0, n1, n2 и n3 — индексы в массиве нормалей, а t0, t1, t2 и t3 — индексы в массиве texCoords.
Треугольник имеет лицевую и тыльную стороны. Порядок обхода вершин треугольника определяет, какая сторона является лицевой. JavaFX выбирает против часовой стрелки (или правило правой руки) как лицевую сторону. По умолчанию рендерится только лицевая сторона треугольника. См. CullFace для получения дополнительной информации.
Длина points, normals и texCoords должны быть соответственно кратными 3, 3 и 2. Длина faces должна быть кратной 6, если она VertexFormat.POINT_TEXCOORD, иначе она должна быть кратной 9, если она VertexFormat.POINT_NORMAL_TEXCOORD. Значения в массиве граней должны находиться в пределах от 0 до (points.length / 3 - 1) для индексов точек, в пределах от 0 до (normals.length / 3 - 1) для индексов нормалей и в пределах от 0 до (texCoords.length / 2 - 1) для индексов текстурных координат.
При любом неверном значении длины массива или значении индекса в массиве граней в заданном диапазоне, в логгер будет записано предупреждение, и сетка не будет отрисована (и у нее будут пустые границы).
С:
JavaFX 8.0
-
Краткое описание свойств
Все методыМетоды экземпляраКонкретные методы Тип Свойство и описание ObjectProperty<VertexFormat>vertexFormatУказывает формат вершин этойTriangleMesh, один изVertexFormat.POINT_TEXCOORDилиVertexFormat.POINT_NORMAL_TEXCOORD.
-
Краткое описание конструкторов
Конструкторы Конструктор и описание TriangleMesh()Создает новый экземпляр классаTriangleMeshс типом форматаVertexFormat.POINT_TEXCOORDпо умолчанию.TriangleMesh(VertexFormat vertexFormat)Создает новый экземпляр классаTriangleMeshсо специфицированнымVertexFormat.
-
Краткое описание методов
Все методыМетоды экземпляраКонкретные методы Модификатор и тип Метод и описание intgetFaceElementSize()Возвращает количество элементов, представляющих грань.ObservableFaceArraygetFaces()Получает массивfaces, индексы в массивахpoints,normals(необязательно, если это сеткаVertexFormat.POINT_NORMAL_TEXCOORD) иtexCoordsэтойTriangleMesh.ObservableIntegerArraygetFaceSmoothingGroups()Получает массивfaceSmoothingGroupsэтойTriangleMesh.intgetNormalElementSize()Возвращает количество элементов, представляющих нормаль.ObservableFloatArraygetNormals()Получает массивnormalsэтойTriangleMesh.intgetPointElementSize()Возвращает количество элементов, представляющих точку.ObservableFloatArraygetPoints()Получает массивpointsэтойTriangleMesh.intgetTexCoordElementSize()Возвращает количество элементов, представляющих текстурные координаты.ObservableFloatArraygetTexCoords()Получает массивtexCoordsэтойTriangleMesh.VertexFormatgetVertexFormat()Возвращает значение свойства vertexFormat.voidsetVertexFormat(VertexFormat value)Устанавливает значение свойства vertexFormat.ObjectProperty<VertexFormat>vertexFormatProperty()Указывает формат вершин этойTriangleMesh, один изVertexFormat.POINT_TEXCOORDилиVertexFormat.POINT_NORMAL_TEXCOORD.
-
Подробное описание свойства
-
vertexFormat
public final ObjectProperty<VertexFormat> vertexFormatProperty
Указывает формат вершин этогоTriangleMesh, один изVertexFormat.POINT_TEXCOORDилиVertexFormat.POINT_NORMAL_TEXCOORD.Значение по умолчанию:
VertexFormat.POINT_TEXCOORD
С:
JavaFX 8u40
См. также:
-
-
Подробное описание конструкторов
-
TriangleMesh
public TriangleMesh()
Создает новый экземпляр классаTriangleMeshс типом формата по умолчаниюVertexFormat.POINT_TEXCOORD.
-
TriangleMesh
public TriangleMesh(VertexFormat vertexFormat)
Создает новый экземпляр классаTriangleMeshсо заданным форматомVertexFormat.Параметры:
vertexFormat- указывает тип формата вершин.С:
JavaFX 8u40
-
-
Подробное описание методов
-
setVertexFormat
public final void setVertexFormat(VertexFormat value)
Устанавливает значение свойства vertexFormat.Описание свойства:
Указывает формат вершин этого
TriangleMesh, один изVertexFormat.POINT_TEXCOORDилиVertexFormat.POINT_NORMAL_TEXCOORD.Значение по умолчанию:
VertexFormat.POINT_TEXCOORD
С:
JavaFX 8u40
-
getVertexFormat
public final VertexFormat getVertexFormat()
Возвращает значение свойства vertexFormat.Описание свойства:
Указывает формат вершин этого
TriangleMesh, один изVertexFormat.POINT_TEXCOORDилиVertexFormat.POINT_NORMAL_TEXCOORD.Значение по умолчанию:
VertexFormat.POINT_TEXCOORD
С:
JavaFX 8u40
-
vertexFormatProperty
public final ObjectProperty<VertexFormat> vertexFormatProperty()
Указывает формат вершин этогоTriangleMesh, один изVertexFormat.POINT_TEXCOORDилиVertexFormat.POINT_NORMAL_TEXCOORD.Значение по умолчанию:
VertexFormat.POINT_TEXCOORD
С:
JavaFX 8u40
См. также:
-
getPointElementSize
public final int getPointElementSize()
Возвращает количество элементов, представляющих точку.Возвращает:
количество элементов
-
getNormalElementSize
public final int getNormalElementSize()
Возвращает количество элементов, представляющих нормаль.Возвращает:
количество элементов
С:
JavaFX 8u40
-
getTexCoordElementSize
public final int getTexCoordElementSize()
Возвращает количество элементов, представляющих координаты текстуры.Возвращает:
количество элементов
-
getFaceElementSize
public final int getFaceElementSize()
Возвращает количество элементов, представляющих грань.Возвращает:
количество элементов
-
getPoints
public final ObservableFloatArray getPoints()
Возвращает массивpointsэтогоTriangleMesh.Возвращает:
массив
points, где каждая точка представлена тремя значениями с плавающей точкой x, y и z в этом порядке.
-
getNormals
public final ObservableFloatArray getNormals()
Возвращает массивnormalsэтогоTriangleMesh.Возвращает:
массив
normals, где каждая нормаль представлена тремя значениями с плавающей точкой nx, ny и nz в этом порядке.С:
JavaFX 8u40
-
getTexCoords
public final ObservableFloatArray getTexCoords()
Возвращает массивtexCoordsэтогоTriangleMesh. Координаты пропорциональны, поэтому верхний левый угол текстуры находится в [0, 0], а нижний правый — в [1, 1].Возвращает:
массив
texCoord, где каждая координата текстуры представлена двумя значениями с плавающей точкой: u и v в этом порядке.
-
getFaces
public final ObservableFaceArray getFaces()
Возвращает массивfaces, индексы в массивыpoints,normals(необязательно, если этоVertexFormat.POINT_NORMAL_TEXCOORDmesh) иtexCoordsэтогоTriangleMesh. Все индексы указаны в терминах элементов в массивах точек, нормалей или texCoords, а не отдельных чисел с плавающей точкой.Возвращает:
массив
faces, где каждая грань состоит из 3 *VertexFormat.getVertexIndexSize()целых чисел.
-
getFaceSmoothingGroups
public final ObservableIntegerArray getFaceSmoothingGroups()
Возвращает массивfaceSmoothingGroupsэтогоTriangleMesh. Сглаживание влияет на то, как отображается mesh, но не влияет на его геометрию. Значение группы сглаживания граней используется для управления сглаживанием между смежными гранями.Значение группы сглаживания граней представлено массивом битов, и возможно до 32 уникальных групп; (1 << 0) до (1 << 31). Значение группы сглаживания граней может изменяться от 0 (нет группы сглаживания) до всех 32 групп. Одна грань может принадлежать нулю или более группам сглаживания. Грань является членом группы N, если бит N установлен, например, группы |= (1 << N). Значение 0 подразумевает отсутствие группы сглаживания или жёсткие грани. Сглаживание применяется, когда смежные пары граней имеют общую группу сглаживания. В противном случае грани отображаются с жёсткой гранью между ними.
Пустой faceSmoothingGroups подразумевает, что все грани в этом mesh имеют значение группы сглаживания 1.
Если faceSmoothingGroups не пустой, его размер должен быть равен количеству граней.
Этот faceSmoothingGroups не влияет на его
TriangleMesh, если он имеет форматVertexFormat.POINT_NORMAL_TEXCOORD.
-
© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.