Centre d'Aide Application SCE Web

Bâtiments 3D avancés - format SCE3D

Introduction

Le format SCE3D permet d'importer des jeux de données incluant des jeux de données bâtimentaires, incluant différentes résolutions que l'on peut afficher en fonction du niveau de zoom, ou du choix de paramétrage.

Sur l'exemple ci-dessous, on présente un jeu de données incluant une représentation LOD1 pour certains bâtiments, et une représentation LOD3 pour deux bâtiments.

image-2025-3-12_18-11-31.png



Sur l'exemple ci-dessous, on présente un jeu de données ciblé incluant une représentation LOD1 des bâtiments, et des modèles 3D (LOD3) pour certains des bâtiments.

image-2025-3-12_18-11-54.png

Cette page décrit les spécifications pour construire les jeux de données à charger pour arriver au résultat escompté.

Terminologie

Chaque bâtiment peut avoir plusieurs représentations : par exemple, une empreinte 2D extrudée et un modèle 3D, ou les différentes représentations (LOD1, LOD2, LOD3) qui peuvent être fournies dans un fichier CityGML.

Le terme "variant" représente une de ces représentations.

Lors du traitement, pour tous les bâtiments qui ne disposent pas d'un variant nommé "outdoor" (cf plus bas), il en est créé un en déterminant l'empreinte au sol du bâtiment à partir des autres variants puis en réalisant une extrusion.

Un traitement peut produire plusieurs versions du jeu de données, accessibles dans SCE Web Application via l'option "Style" → "Rendu alternatif". Par défaut, une version nommée "outdoor" est toujours produite, ainsi qu'une version qui contient chacun des variants décrits dans les données.


Description des données d'entrée

Une donnée SCE3D est constitué d'un fichier unique (geojson, geopackage ou CityGML), ou d'une archive contenant un ensemble de fichiers vecteur (geojson, shapefile, geopackage) et de modèles 3D (glb, FBX, CityGML, obj, dae collada ou 3ds).

Les données vectorielles peuvent être des types suivants :

  • polygone

  • multi-polygone

  • point (uniquement si des modèles 3D sont associés via les attributs, cf plus loin)

Les fichiers geojson doivent avoir l'extension .geojson.

Les shapefiles doivent avoir l'extension .shp.

Les fichiers geopackage doivent avoir l'extension .gpkg.

Les fichiers CityGML doivent avoir l'extension .gml ou .citygml.

Layers de (multi-)polygones

Les géométries représentent des empreintes au sol de bâtiments.

Ces géométries sont toujours intégrées dans le variant "outdoor". Les attributs suivants dans la donnée ont un sens particulier :

  • L'attribut SCE_ELEVATION est à fournir pour indiquer la hauteur (en mètres) du bâtiment.

  • L'attribut SCE_UID permet d'associer un ID unique au bâtiment, et d'associer plusieurs empreintes à un même bâtiment (voir plus loin).

Layers de points

Chaque point permet de référencer un ou plusieurs modèles 3D.

Les attributs suivants permettent de configurer les modèles 3D importés :

  • SCE_MODEL_xxx : permet d'indiquer le nom du fichier 3D associé au variant 'xxx'.Ce nom est relatif à l'emplacement du fichier vecteur.

  • SCE_ALTITUDE : altitude à laquelle positionner le modèle 3D (note : de manière alternative, il est possible de renseigner la coordonnée z du point au lieu de cet attribut)

  • SCE_SRS : système de projection utilisé pour la définition du modèle 3D. Si non spécifié, le système de projection du fichier vecteur est utiliséLe SRS doit correspondre à l'une de représentation suivantes :Une chaine de caractère sous la forme "EPSG:XXXX", ou XXXX est un entier. On considère à nouveau qu'il s'agit d'un code EPSG, comme précédemment.Un urn OGC correspondant à une transformation (ex : "urn:ogc:def:crs:EPSG::32630") ou à une composition ("urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717") (Note : formats trouvés fréquemment dans les fichiers cityGML)Un entier : dans ce cas, on considère qu'il s'agit d'un code EPSG (ex : 32630 pour l'UTM 30)

  • SCE_YAW : rotation autour de l'axe Z (en degrés, dans le sens anti horaire)

  • SCE_PITCH : rotation autour de l'axe Y (en degrés, dans le sens anti horaire)

  • SCE_ROLL : rotation autour de l'axe X (en degrés, dans le sens anti horaire)

  • SCE_SCALE : facteur de mise à l'échelle à appliquer sur le modèle (ex : 100 si le modèle a des coordonnées définies en cm)

  • SCE_UID : id unique associé au bâtiment, de la même manière que pour les empreintes au sol.

Note : si plusieurs variants sont associés à un même point, les autres paramètres s'appliqueront à tous les variants.

Fichiers CityGML

Les fichiers CityGML peuvent contenir plusieurs représentations d'un bâtiment, correspondant à des LoD 1, 2, 3, 4

Pour chacune de ces représentations, un variant sera créé, sous le nom "LODx".

Note : si le fichier contient une représentation LoD 0, celle-ci ne sera pas utilisée, car il ne s'agit pas d'une représentation 3D.

Note: les éléments indoor ne sont pas pris en compte, ainsi si le fichier contient une représentation LoD 4, celle-ci sera sans doute visuellement identique à la représentation LoD 3 après traitement.

Personnalisation des attributs

Il est possible de fournir, soit dans le fichier zip, soit via l'interface d'import, un fichier "attributs.json" qui permet d'indiquer des noms d'attributs différents de ceux par défaut indiqués dans cette documentation.

Ce fichier correspond à un objet JSON qui est un ensemble de clés-valeurs. Chaque clé correspond à un nom d'attribut définit dans cette documentation, et la valeur définit le nom d'attribut correspondant dans les données.

Exemple :

{
    "SCE_SRS" : "PROJ_SYS",
    "SCE_MODEL_" : "MODEL_",
    "SCE_MODEL_LOD2": "NOM_MODELE",

         "SCE_YAW": "125",
}

Dans cet exemple :

  • l'attribut "PROJ_SYS" sera utilisé pour déterminer le système de projection associé aux modèles 3D

  • l'attribut "NOM_MODELE" permet d'indiquer le nom de fichiers 3D qui seront utilisés pour le variant nommé "LOD2"

  • les attributs "MODEL_xxx" permettent d'indiquer le nom de fichiers 3D qui seront utilisés pour le variant nommé "xxx"

Création des variants

Le variant "outdoor" doit toujours exister.

Les autres variants sont considérés comme des évolutions du variant outdoor, et sont donc construits en prenant en référence le variant outdoor. Pour tous les modèles fournis pour un variant, on va remplacer le bâtiment correspondant dans le variant outdoor par celui fourni. Pour tous les bâtiments non fournis dans le variant, on utilise ceux du variant outdoor.

Pour identifier la correspondance entre un bâtiment dans le variant outdoor et le même bâtiment dans un autre variant, plusieurs solutions sont possibles :

  • Tous les variants sont associés au même point dans un layer de point : la correspondance est immédiate

  • Tous les variants disposent d'un attribut 'SCE_UID' : cet attribut permet de faire la correspondance entre plusieurs variants d'un même bâtiment

Création des rendus alternatifs

Par défaut, une version sera créée pour chaque variant défini dans les données d'entrée.

Il est possible de fournir un fichier "versions.json" pour paramétrer les différentes représentations à produire.

Le contenu de ce fichier est un tableau dont chaque objet décrit une représentation à produire.

Chaque représentation contient les propriétés suivantes :

  • name : le nom de la représentation (ne peux contenir que des lettres non accentuées et des chiffres)

  • display_name : le nom utilisé pour l'affichage 

  • display : un tableau qui permet de paramétrer le ou les variants à afficher. Chaque objet de ce tableau contient la propriété suivante :variant : le nom du variant à afficher

Cela permet de fournir des variants avec plusieurs niveaux de qualité, et d'afficher les niveaux de détail de manière progressive. Le premier variant listé dans ce tableau sera affiché lorsque la caméra est lointaine, puis, s'ils sont présents, les variants suivants seront affichés. A noter que, suivant le poids des modèles 3D, ceux-ci pourront n'être affichés que lorsque le zoom est très proche, voire ne jamais être affichés.

  • default : booléen indiquant si cette représentation doit être celle affichée par défaut lors de l'ajout du jeu de données à une carte. Si aucun n'est spécifié par défaut, c'est la représentation "outdoor" qui sera affichée, ou à défaut une autre choisie arbitrairement. Si plusieurs représentations sont spécifiées par défaut, l'une d'elles sera choisie arbitrairement.

  • texture: booléen indiquant si une texture doit être générée pour cette représentation. Si non spécifié, le choix est effectué en analysant les données importées ; cette option permet par exemple de produire une version non texturée de données qui sont texturées

  • data_texture : booléen indiquant si cette représentation pourra être texturée ultérieurement avec des textures de façade. Si non spécifié, ce sera possible uniquement sur les représentations contenant uniquement des polygones extrudés. Désactiver cette option permet de diminuer légèrement la taille des données produites, l'activer permet de réaliser la texturation sur des données 3D (à noter que cela ne fonctionnera que sur des modèles 3D simples et légers)

Exemples :

Exemple 1

Permet d'avoir 2 représentations distinctes, une nommée "outdoor" et l'autre nommée "detailed". Chaque représentation affiche le variant correspondant. A noter que si l'import contient bien uniquement ces deux variants, c'est ce qui serait fait automatiquement, et ce fichier est superflu.

[
  {
    "name": "outdoor",
    "display": [
      {
        "variant": "outdoor"
      }
    ]
  },
  {
    "name": "detailed",
    "display": [
      {
        "variant": "detailed"
      }
    ]
  }
]

Exemple 2

Permet d'avoir 2 représentations distinctes, une nommée "outdoor" et l'autre nommée "progressive".

La représentation "outdoor" n'affiche que le variant "outdoor" et ne sera pas texturée

La représentation "progressive" affiche le variant "outdoor" lorsque la caméra est lointaine, puis le variant "detailed" lorsqu'elle est proche des bâtiments. C'est celle-ci qui sera affichée par défaut.

[
  {
    "name": "outdoor",
    "display_name": "Basique",
    "display": [
      {
        "variant": "outdoor"
      }
    ],
    "texture": false
  },
  {
    "name": "progressive",
    "display_name" : "Avancé",
    "default": true,
    "display": [
      {
        "variant": "outdoor"
      },
      {
        "variant": "detailed"
      }
    ]
  }
]