- java.lang.Object
-
- javafx.scene.shape.Mesh
-
- javafx.scene.shape.TriangleMesh
-
public class TriangleMesh extends Mesh
Определяет 3D сетку треугольников, состоящую из её связанного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) для индексов нормалей и в диапазоне количества вершин в массиве texCoords (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
- См. также:
-
getVertexFormat(),setVertexFormat(VertexFormat)
-
-
Подробное описание конструкторов
-
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
- См. также:
-
getVertexFormat(),setVertexFormat(VertexFormat)
-
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_TEXCOORDсетка) иtexCoordsэтогоTriangleMesh. Все индексы относятся к элементам в массивах points, normals или texCoords, а не к отдельным числам с плавающей точкой.- Возвращает:
-
массив
faces, где каждая грань состоит из 3 *VertexFormat.getVertexIndexSize()целых чисел.
-
getFaceSmoothingGroups
public final ObservableIntegerArray getFaceSmoothingGroups()
Возвращает массивfaceSmoothingGroupsэтогоTriangleMesh. Сглаживание влияет на то, как рендерится сетка, но не влияет на ее геометрию. Значение группы сглаживания граней используется для управления сглаживанием между смежными гранями.Значение группы сглаживания граней представлено массивом бит, и возможно до 32 уникальных групп; (1 << 0) до (1 << 31). Значение группы сглаживания граней может варьироваться от 0 (нет группы сглаживания) до всех 32 групп. Одна грань может принадлежать нулю или более группам сглаживания. Грань является членом группы N, если установлен бит N, например, groups |= (1 << N). Значение 0 означает отсутствие группы сглаживания или жесткие края. Сглаживание применяется, когда смежная пара граней имеет общую группу сглаживания. В противном случае грани рендерятся с жестким краем между ними.
Пустой faceSmoothingGroups означает, что все грани в этой сетке имеют значение группы сглаживания 1.
Если faceSmoothingGroups не пуст, его размер должен быть равен количеству граней.
Этот faceSmoothingGroups не оказывает никакого влияния на
TriangleMesh, если он имеет форматVertexFormat.POINT_NORMAL_TEXCOORD.- Возвращает:
- массив
faceSmoothingGroupsэтогоTriangleMesh
-
© 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.