Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 22 March 2021 17:20

image95
Participant assidu
Date d'inscription: 6 Sep 2014
Messages: 257

CesiumJS : zoomer sur l'emprise du tileset ?

Bonjour,

Je travaille sous Windows 10 et Cesium 1.79.1. NodeJS fonctionne bien.
J'arrive bien a charger/visualiser un jeu de scene 3D (Meshs+ texture associée) au format Cesium 3D tiles.
Toutefois, je souhaite qu' un zoom automatique se fasse sur l'emprise de mon tileset.
Mon souhait est qu'une fois que le tileset soit prêt à être affiché, la camera se déplace et se positionne au-dessus du tileset. Le petit script fonctionne bien avec mon fichier cesium3D tiles de version 0.0. Mais ne fonctionne pas pour le moment avec mes fichiers tuilés au format 3D tiles de version 1.0.
J'ignore d'où peut venir l'erreur. Je n'ai pas de message d'erreur dans la console. Mon tileset se charge bien mais
la camera quant à elle ne se déplace pas au dessus de mon tileset. Lors de l'execution, La camera ne se déplace pas et reste à une emprise "globe" mondial et aucun zoom ne s'effectue. Je suis donc obligé de me rendre manuellement sur la zone d'intéret.

Ci dessous, un extrait du fichier tileset.json :

Code:

{"asset":{"version":"1.0"},
"geometricError":10000,
"properties":{"Height":{"maximum":197.2902062288683,"minimum":158.81894164623267},
"Latitude":{"maximum":0.86549605155357123,"minimum":0.86536928860221218},
"Longitude":{"maximum":0.069327552218852465,"minimum":0.069115786360719259}},
"root":{"boundingVolume":{"sphere":[4133254.630298804,286568.64019880601,4833172.8602689737,596.59912274524095]},
"children":[{"boundingVolume":{"sphere":[4133289.5021612602,286493.75629316899,4833147.6480717165,514.11988103071815]},

Ci dessous mon tout petit script javascript :


Code:

// Création d'un viewer Cesium
var viewer = new Cesium.Viewer("cesiumContainer", {
});

// Création du tileset
var tileset = new Cesium.Cesium3DTileset({
  url: 'http://localhost:8080/20210125_5RIAOM_CESIUM 3D Tlies_HQ/tileset.json'
});

// Ajout du tileset à la scène
viewer.scene.primitives.add(tileset);

// Une fois le tileset prêt à être affiché, on bouge la camera pour
// qu'elle se positionne au-dessus de ce tileset : 
tileset.readyPromise.then(function (tileset) {
viewer.scene.camera.setView({
// La position finale doit englober la globalité du tileset
    destination: tileset.root.boundingVolume.rectangle,
  });
});

Merci par avance.

Dernière modification par image95 (Mon 22 March 2021 17:31)

Hors ligne

 

Pied de page des forums

Powered by FluxBB