3DTiles — это отображаемый крупномасштабный формат трехмерных пространственных данных, ориентированный на сетку, специально разработанный для потоковой передачи и рендеринга массивных трехмерных геопространственных данных и используемый для хранения и управления данными трехмерных моделей на основе сетки. Его структура данных основана на форматах B3DM и PNTS, может поддерживать несколько уровней LOD и использует наборы плиток (коллекции плиток) для организации данных и управления ими. 3DTiles имеет следующие возможности:
В 3DTiles набор плиток (Tileset) состоит из группы плиток (Tiles), организованных в соответствии с пространственной структурой данных (древовидной структурой). Он содержит как минимум один файл JSON (включая плитки), используемый для описания набора плиток. и объекты плитки из набора плиток), каждый объект плитки может ссылаться на один из следующих форматов для рендеринга содержимого плитки:
Форматы b3dm и i3dm созданы на основе glTF. Их содержимое фрагментов включает ресурсы glTF в двоичный код, включая информацию о геометрии и текстуре модели. Формат pnts не включает ресурсы glTF. существовать Структура данных 3DTiles, Tileset (набор плиток) — это основная единица управления 3DTiles, включая глобальную информацию Tileset, путь к ресурсам Tileset, корневую плитку Tileset и т. д. Каждый набор плиток содержит несколько плиток, представляющих различные уровни данных и уровни просмотра, а каждая плитка содержит несколько подплиток. Самая нижняя плитка может содержать определенные 3D-модели, называемые листом. Tile。
Класс Cesium3DTileset является основным классом управления данными 3DTiles и отвечает за загрузку и отображение наборов плиток. Класс Cesium3DTileset позволяет нескольким 3D-фрагментам набора 3D-тайлзов переключаться между разными уровнями детализации, тем самым обеспечивая соответствующую детализацию на разных расстояниях и углах обзора. Этот класс также предоставляет простой в использовании интерфейс для управления видимостью, стилем, положением и вращением наборов 3D-фрагментов, а также для управления такими функциями, как предварительная загрузка, кэширование и выгрузка, которые можно использовать для разработки эффективных, надежных и интерактивных Приложение 3D Earth.
url
:3DплиткаданныеизURLадрес。modelMatrix
:Должен3Dплитканабориз Модельматрица。boundingSphere
:3Dплитканаборизограничивающая сфера(bounding сфера), используемый для расчета и обработки видимости, обнаружения столкновений и т. д.root
:3Dплитканаборизкореньплитка(root tile)。ready
: Логическое свойство, указывающее, готова ли 3D-плитка к рендерингу.destroy()
:разрушать3Dплиткаи его содержание。getProperty(name)
:Получить на основе имени атрибута3Dплиткаизсвойствоценить。setProperty(name, value)
:настраивать3Dплиткаизсвойствоценить。hasProperty(name)
:суждение3Dплитка Включить ли указанное имяизсвойство。makeStyleDirty()
:уведомить3Dплитканабор需хотеть重新应用стиль。show
:настраивать3Dплитканаборизвидимость。Cesium3DTileStyle — это класс, используемый для указания и применения стиля наборов трехмерных плиток; он может управлять цветом, размером точек, стилем меток и текстовым содержимым трехмерных плиток; он может классифицировать и раскрашивать трехмерные плитки, а также создавать на основе атрибутов (например, высота, категория или время).
color
:3Dплиткаизцвет,Это может быть RGBA, RGB или шестнадцатеричное значение цвета.pointSize
:3Dплиткасерединаизразмер。labelStyle
:3Dплиткасерединаиз Этикеткаизстиль。labelText
:3Dплиткасередина Этикеткаизтекстовый контент。show
:3Dплиткаизвидимость。style
:3Dплиткаиз所有стильсвойство。Cesium3DTileContent — это класс, используемый для представления содержимого и геометрической информации одной трехмерной плитки. Он может использовать класс Cesium3DTileContent для установки и получения свойств геометрии и метаданных, хранящихся в трехмерной плитке, и применения их к трехмерным объектам в трехмерной плитке.
featuresLength
:3Dплиткасодержаниесередина包含изэлементколичество。pointsLength
:3Dплиткасодержаниесередина包含из点количество。trianglesLength
:3Dплиткасодержаниесередина包含из三角形количество。geometryByteLength
:3Dплиткасодержаниеизгеометрияданные Длина байта。texturesByteLength
:3Dплиткасодержаниеизтекстураданные Длина байта。hasProperty(batchId,name)
:исследовать3Dплиткасодержаниесерединада否存существовать具有指定имяизсвойствоценить。Должен Метод требует двух параметров:
batchId
:хотетьисследоватьсвойствоизэлементсуществовать批处理表серединаизиндекс。
name
:хотетьисследоватьизсвойствоимя。Этот метод вернет логическое значение, указывающее, существует ли указанный атрибут в контексте указанного идентификатора пакета в таблице пакетов.
Этот метод в основном используется для динамического создания и применения стилей 3D-плиток.,использовать3DплиткасодержаниеизhasProperty
Метод в порядкеисследовать3Dплиткада否具有指定имяизсвойство,для выборочного применения стилей. Например,Можно проверить, существует ли атрибут «высота» в 3D-тайле.,Затем 3D-плитки сортируются и окрашиваются в зависимости от условий.,Или запустите определенный анимационный эффект.
getFeature(batchId)
:получать批处理表середина指定индексизэлементизсвойствоценитьнабор合。Должен方法需хотеть一个参数:
batchId
:хотетьполучатьсвойствоизэлементсуществовать批处理表серединаизиндекс。Этот метод вернет объект JavaScript, содержащий все значения атрибутов для указанного объекта, которые находятся в объекте массовой таблицы, а ключи атрибутов имеют те же имена, что и их имена в массовой таблице.
Этот метод в основном используется для взаимодействия и работы с 3D-плитами в цезии. Помимо получения значений атрибутов в массовой таблице, вы также можете использовать этот метод для прикрепления метаданных к объектам для поддержки функциональности метаданных. Например, после вызова этого метода вы можете сохранить дополнительные имена и значения метаданных в объекте объекта, а затем использовать эти атрибуты метаданных при применении определенных стилей 3D-плиток, запросов динамической фильтрации или других операций, которые взаимодействуют с объектом.
Обратите внимание: если вы попытаетесь получить атрибут объекта для идентификатора пакета, который не существует, этот метод вернет undefined
。в то же время,Если объект, который вы хотите получить, имеет неполные или неверные атрибуты данных.,Метод может возвращать ошибку или частичные данные атрибута.
Класс Cesium3DTileFeature используется для представления отдельного объекта (объекта) в трехмерной плитке и связанных с ней атрибутов.
color
:свойства цвета,Используется для установки цвета элементов 3D-плитки. Цвет поддерживает формат RGBA (красный/зеленый/синий/прозрачный канал).,это может быть множество,множествоиз Структура[red, green, blue, альфа], каждое значение находится в диапазоне от 0 до 1. Класс Cesium3DTileFeature позволяет установить цвет, переопределяющий цвет по умолчанию для 3D-плиток.featureId
:элементIDсвойство,Это значение любого типа,Уникальный идентификатор, используемый для определения каждого объекта 3D-плитки. Разработчики могут использовать этот атрибут для отслеживания определенных функций 3D-плитки.,и выборочно воздействовать на них, когда это необходимо.polylinePositions
:хранилищеэлементизпозиция линииизсвойство(если существует)。Долженсвойствоиспользуется для3Dплиткасерединаизлинейныйэлемент,и содержит набор числовых значений множество,Позиция, используемая для указания стиля линии этого объекта. Каждое числовое значение интерпретируется как декартова3 координата.primitive
:иэлемент Связанныйизпримитивныйобъект,Может использоваться для получения информации о геометрии объекта и взаимодействия с ней. Это свойство позволяет разработчикам напрямую получать доступ к функциям и связанным с ними свойствам в 3D-тайлах.tileset
:иэлемент Связанныйиз3Dплитканаборобъект。Долженсвойствоиспользуется дляполучатьэлемент所существоватьиз3Dплитканаборобъект,для совместимости и манипуляции.getProperty(name)
:получатьэлементсуществовать批量表серединаиз具有指定имяизсвойствоценить。setProperty(name, value)
:настраивать指定имяизсвойствоценить。hasProperty(name)
:исследоватьэлементсуществовать批量表серединада否具有指定имяизсвойство。Класс Cesium3DTile используется для представления данных 3D-мозаики.
boundingSphere
:один содержит3Dплиткаизминимальное сферическое граничное тело。Долженсвойствоиспользуется для裁剪和优化3Dплиткаизпроизводительность дисплея。boundingSphereРассчитывается по ограничивающей рамке,и его можно вызвать, позвонивupdate()
способ его обновления。children
:один содержит Все детиплиткаизмножество。каждый ребенокплитка ВсеCesium3DTileПример。когда3Dплиткаизсодержаниеобъект Содержит несколькомножествочас,Обычно они создают подплитки для каждого множества, чтобы управлять этим множеством.computedTransform
:один содержитототецплиткаприезжатькогдавпередплиткаиз4x4матрицаизмножество。Долженматрицаиспользуется для将когдавпередплиткаизсодержаниеобъект Конвертировать为отецплиткаизсистема координат。computedTransformсуществовать更新плитка Конвертироватьматрицачасбыть пересчитан。еслиплитка没有отецплитка,Тогда вычисляемая Трансформа — это единичная матрица.content
:3Dплиткаизсодержаниеобъект,Обычно содержит географическую информацию, атрибуты данных и другую соответствующую информацию.geometricError
:3Dплиткаизгеометрия误差,Представляет максимальную ошибку расстояния 3D-плиток. Cesium использует это свойство для расчета приоритета отображения и уровня детализации 3D-фрагментов.extras
:один содержит3Dплиткаиз Любые дополнительныеданныеизобъект。Cesium3DTileсерединаизextrasсвойство允许开发人员хранилище和访问иплитка Связанный联излюбые дополнительныеданные。parent
:一个指向отецплиткаизуказатель。отецплиткадакогдавпередплиткаиз Прямой начальник。есликогдавпередплитка没有отецплитка,Тогда родительское свойство будет иметь значение null.transform
:один из Модельсистема координатприезжать世界система координатиз4x4матрица。Долженматрицаиспользуется для将3Dплиткасодержаниеобъектот Модель Система координат преобразована в мировую систему координат.。transformматрица通常существовать加载3Dплиткачас Позвонивupdate()
рассчитывается по методу。tileset
:и3Dплиткаассоциацияиз3Dплитканаборобъект。 try {
const tileset = await Cesium.Cesium3DTileset.fromIonAssetId(75343);
viewer.scene.primitives.add(tileset);
} catch (error) {
console.log(`Error loading tileset: ${error}`);
}
viewer.scene.globe.depthTestAgainstTerrain = true;