Primeros pasos con Cesium Diez: Cesium carga datos de 3DTiles

Introducción a 3DTiles

3DTiles es un formato de datos espaciales 3D a gran escala visualizable y orientado a cuadrículas, especialmente diseñado para transmitir y representar datos geoespaciales 3D masivos, y se utiliza para almacenar y administrar datos de modelos 3D basados ​​en cuadrículas. Su estructura de datos se basa en formatos B3DM y PNTS, puede admitir múltiples niveles de LOD y utiliza Tilesets (colecciones de mosaicos) para organizar y administrar datos. 3DTiles tiene las siguientes características:

  • Admite visualización de datos de modelos 3D de alta precisión y gran escala.
  • Utilice el formato json estándar para describir la estructura de datos y los metadatos.
  • Utilice algoritmos de compresión como DRACO y LZMA para mejorar la transmisión de datos y la eficiencia del almacenamiento.
  • Admite LOD multinivel y admite la apertura y el cierre rápidos de diferentes niveles de capas de datos.

estructura de datos 3DTiles

En 3DTiles, un conjunto de teselas (Tileset) está organizado por un grupo de teselas (Tile) de acuerdo con la estructura de datos espaciales (estructura de árbol), que contiene al menos un archivo JSON para describir el conjunto de teselas (incluyendo teselas Los metadatos y los objetos de teselas del conjunto de teselas), donde cada objeto de tesela puede hacer referencia a uno de los siguientes formatos para representar contenido de teselas: Los
inserte la descripción de la imagen aquí
formatos b3dm e i3dm se construyen en base a glTF, y su contenido de teselas está en binario. El recurso glTF está incrustado en el cuerpo, incluyendo la información de geometría y textura del modelo; el formato de puntos no incorpora el recurso glTF.
En la estructura de datos de 3DTiles, Tileset (conjunto de mosaicos) es la unidad de administración principal de 3DTiles, incluida la información global de Tileset, la ruta de recursos de Tileset, el mosaico raíz de Tileset, etc. Cada mosaico contiene múltiples mosaicos, que representan diferentes niveles de datos y niveles de vista, y cada mosaico contiene múltiples submosaicos. El mosaico inferior puede contener datos de modelos 3D específicos, denominados mosaico de hojas.

Clases relacionadas con 3DTiles en Cesium

1. Clase Cesium3DTileset

La clase Cesium3DTileset es la principal clase de gestión de datos 3DTiles, responsable de cargar y renderizar Tilesets. La clase Cesium3DTileset permite que varias teselas 3D del conjunto de teselas 3D cambien entre diferentes niveles de detalle, para proporcionar detalles apropiados a diferentes distancias y ángulos de visión. Esta clase también proporciona una interfaz fácil de usar para controlar la visibilidad, el estilo, la posición y la rotación del conjunto de mosaicos 3D, así como para administrar funciones como la precarga, el almacenamiento en caché y la descarga, que se pueden usar para desarrollar de manera eficiente, confiable y Aplicación interactiva 3D Earth.

Propiedades comunes:

  • url: la dirección URL de los datos del mosaico 3D.
  • modelMatrix: La matriz del modelo para este mosaico 3D.
  • boundingSphere: la esfera delimitadora del conjunto de teselas 3D, que se utiliza para calcular y procesar la visibilidad y la detección de colisiones, etc.
  • root: El mosaico raíz del conjunto de mosaicos 3D.
  • ready: una propiedad de tipo booleano que se utiliza para indicar si el mosaico 3D está listo para renderizarse.

Métodos comunes:

  • destroy(): Destruye el mosaico 3D y su contenido.
  • getProperty(name): Obtenga el valor del atributo del mosaico 3D de acuerdo con el nombre del atributo.
  • setProperty(name, value): establece el valor del atributo del mosaico 3D.
  • hasProperty(name): determine si el mosaico 3D contiene el atributo con el nombre especificado.
  • makeStyleDirty(): notifique que el conjunto de mosaicos 3D necesita volver a aplicar el estilo.
  • show: establezca la visibilidad del conjunto de mosaicos 3D.

2. Clase Cesium3DTileStyle

Cesium3DTileStyle es una clase que se utiliza para especificar y aplicar el estilo de los conjuntos de mosaicos 3D; puede controlar el color, el tamaño en puntos, el estilo de etiqueta y el contenido del texto de los mosaicos 3D, etc.; puede clasificar y colorear mosaicos 3D y crear atributos basados ​​en atributos. (como altura, categoría o tiempo) para un estilo dinámico.

Propiedades comunes:

  • color: el color del mosaico 3D, que puede ser rgba, rgb o valor de color hexadecimal.
  • pointSize: El tamaño del punto medio del mosaico 3D.
  • labelStyle: El estilo de la etiqueta en el mosaico 3D.
  • labelText: El contenido de texto de la etiqueta en el mosaico 3D.
  • show: La visibilidad del mosaico 3D.
  • style: Todos los atributos de estilo del mosaico 3D.

3. Clase Cesium3DTileContent

Cesium3DTileContent es una clase que se utiliza para representar el contenido y la información geométrica de un solo mosaico 3D. Puede usar la clase Cesium3DTileContent para establecer y obtener las propiedades de geometría y metadatos almacenadas en el mosaico 3D y aplicarlas a los objetos 3D en el mosaico 3D.

atributos comunes

  • featuresLength: el número de entidades contenidas en el contenido de tesela 3D.
  • pointsLength: El número de puntos contenidos en el contenido de mosaico 3D.
  • trianglesLength: El número de triángulos contenidos en el contenido de mosaico 3D.
  • geometryByteLength: La longitud en bytes de datos geométricos del contenido de tesela 3D.
  • texturesByteLength: La longitud en bytes de datos de textura del contenido de mosaico 3D.

método común

  • hasProperty(batchId,name): Comprueba si existe un valor de atributo con el nombre especificado en el contenido del mosaico 3D. Este método toma dos parámetros:
    batchIdEl índice en la tabla de lotes de la característica cuyos atributos se van a verificar.
    name: El nombre de la propiedad a comprobar.

Este método devolverá un valor booleano que indica si el atributo especificado existe en el contexto del ID de lote especificado en la tabla de lotes.

Este método se usa principalmente para crear y aplicar dinámicamente estilos de mosaico 3D. Los métodos que usan contenido de mosaico 3D hasPropertypueden verificar si un mosaico 3D tiene un atributo con un nombre específico para aplicar estilos de forma selectiva. Por ejemplo, puede verificar la existencia de una propiedad de "altura" en un mosaico 3D, luego ordenar y colorear el mosaico 3D según la condición, o iniciar un efecto de animación específico.

  • getFeature(batchId): Obtenga el conjunto de valores de atributo de las características en el índice especificado en la tabla de lotes. Este método requiere un parámetro:
    batchIdEl índice en la tabla de lotes de la entidad cuyos atributos se van a recuperar.

Este método devolverá un objeto JavaScript que contiene todos los valores de atributos de la característica especificada, que se encuentran en el objeto de la tabla masiva, y el nombre de la clave del atributo es el mismo que su nombre en la tabla masiva.

Este método se utiliza principalmente para interactuar y operar con mosaicos 3D en Cesium. Además de obtener valores de atributos en tablas masivas, este método también se puede usar para adjuntar metadatos a funciones para admitir la funcionalidad de metadatos. Por ejemplo, después de llamar a este método, puede almacenar nombres y valores de metadatos adicionales en el objeto de función y luego usar estas propiedades de metadatos para aplicar estilos de mosaico 3D específicos, consultas de filtros dinámicos u otras operaciones que interactúan con la función.

Tenga en cuenta que este método regresará si se intenta obtener un atributo de entidad para un ID de lote que no existe undefined. Además, si la característica que se busca tiene datos de atributos incompletos o incorrectos, el método puede devolver datos de atributos incorrectos o parciales.

4. Clase Cesium3DTileFeature

La clase Cesium3DTileFeature se usa para representar una característica única (característica) y sus atributos relacionados en un mosaico 3D.

atributos comunes

  • color: Atributo de color, utilizado para establecer el color de los elementos de mosaico 3D. El color admite el formato RGBA (rojo/verde/azul/canal de transparencia), que puede ser una matriz, la estructura de la matriz es [rojo, verde, azul, alfa] y cada valor varía de 0 a 1. La clase Cesium3DTileFeature permite establecer colores para anular los colores predeterminados para mosaicos 3D.
  • featureId: atributo de ID de entidad, que es un valor de cualquier tipo, que se utiliza para definir el identificador único de cada entidad en el mosaico 3D. Los desarrolladores pueden usar este atributo para realizar un seguimiento de características de mosaico 3D específicas y manipularlas de forma selectiva cuando sea necesario.
  • polylinePositions: un atributo que almacena la ubicación de la línea de la característica, si está presente. Este atributo se utiliza para funciones de estilo de línea en mosaicos 3D y contiene una matriz de valores numéricos que especifican la posición del estilo de línea para esta función. Cada matriz numérica se interpreta como una coordenada cartesiana3.
  • primitive: El objeto primitivo relacionado con la función, que se puede utilizar para recuperar la información de geometría de la función y realizar operaciones interactivas. Esta propiedad permite a los desarrolladores acceder directamente a las entidades y sus datos de atributos asociados en un mosaico 3D.
  • tileset: El objeto de conjunto de teselas 3D asociado con la entidad. Este atributo se utiliza para obtener el objeto de conjunto de mosaicos 3D donde se encuentra la característica, para realizar operaciones y operaciones interactivas.

método común

  • getProperty(name): Obtenga el valor del atributo de la función con el nombre especificado en la tabla de lotes.
  • setProperty(name, value): establece el valor del atributo del nombre especificado.
  • hasProperty(name): Comprueba si una característica tiene un atributo con el nombre especificado en la tabla masiva.

5. Clase Cesium3DTile

La clase Cesium3DTile se usa para representar datos de teselas 3D.

atributos comunes

  • boundingSphere: un volumen delimitador esférico mínimo que contiene teselas 3D. Esta propiedad se utiliza para recortar y optimizar el rendimiento de visualización de mosaicos 3D. ElboundingSphere se calcula a partir del cuadro delimitador y se puede update()actualizar llamando a los métodos.
  • children: Una matriz que contiene todos los subtiles. Cada subtile es una instancia de Cesium3DTile. Cuando los objetos de contenido de los mosaicos 3D contienen varias matrices, normalmente crearán submosaicos para cada matriz para administrar estas matrices.
  • computedTransform: una matriz que contiene una matriz de 4x4 desde el mosaico principal hasta el mosaico actual. Esta matriz se utiliza para convertir el objeto de contenido del mosaico actual al sistema de coordenadas del mosaico principal. computedTransform se vuelve a calcular al actualizar la matriz de transformación de teselas. Si la tesela no tiene ninguna tesela principal, computedTransform es la matriz de identidad.
  • content: el objeto de contenido de un mosaico 3D, que generalmente contiene información relacionada, como información geográfica y datos de atributos.
  • geometricError: El error geométrico del mosaico 3D, que indica el error de distancia máxima del mosaico 3D. Cesium usa esta propiedad para calcular la prioridad de visualización y el nivel de detalle de los mosaicos 3D.
  • extras: un objeto que contiene datos adicionales arbitrarios para el mosaico 3D. La propiedad extras en Cesium3DTile permite a los desarrolladores almacenar y acceder a cualquier dato adicional asociado con el mosaico.
  • parent: un puntero al mosaico principal. El mosaico principal es el superior inmediato del mosaico actual. Si el mosaico actual no tiene un mosaico principal, la propiedad principal será nula.
  • transform: Una matriz de 4x4 del sistema de coordenadas del modelo al sistema de coordenadas mundial. Esta matriz se utiliza para transformar el objeto de contenido de mosaico 3D del sistema de coordenadas del modelo al sistema de coordenadas mundial. update()La matriz de transformación generalmente se calcula llamando a un método al cargar un mosaico 3D .
  • tileset: El objeto de conjunto de mosaicos 3D asociado con el mosaico 3D.

Ejemplo de carga de datos 3DTiles en Cesium

 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;

Supongo que te gusta

Origin blog.csdn.net/w137160164/article/details/131179513
Recomendado
Clasificación