Nexus 3D
Fichiers .nxset .nxz.
Outils
nxsbuild
Usage typique
nxsbuild -r 16384 -c "<input file>.obj" -o "<output_file>.nxs"
Encodage KTX: Les textures doivent être de taille multiples de 4!
####Options utiles
-c: supprime les « vertex color ». Dans le cas contraire elles sont gardées même si elles sont redondantes avec les textures-F: Importance relative des textures dans le poids des nodes (0.05)-r: RAM autorisée en MB. 2000 par défaut.-C: centre le modèle. Utile pour les modèles géoréférencés-f: nombre de faces par patch (32768)-t: nombre de faces pour le noeud racine (4096)-q: qualité d’encodage des JPEG (95)
Recommandations
Donner une valeur élevée à -r, mais inférieure au total du système. Changer -f et -t quand les résultats initiaux sont mauvais (voir ci-dessous). si les images sources sont déjà en JPEG, laisser -q à 90-95. Si c’est des PNG (ou BMP, TIFF, WEBP-lossless), 75-85 sera généralement plus approprié.
Idéalement on cherche une taille de node ≈1MB. Si les nodes sont de taille très inégale, on peut changer la valeur de -F.
nxscompress
nxscompress "<input_file>.nxs" -o "<output_file>.nxz"
nxsedit
Pour analyser les fichiers .nxs et .nxz.
nxsedit --info "<fichier>" # statistiques générales
nxsedit -n "<fichier>" # statistiques des nodes
nxsedit -q "<fichier> # statistiques des patches
nxsedit -d "<fichier> # forme du DAG
Le format est moyennement lisible d’une part, et omet les informations de texture d’autre part. Il est en revanche assez facile de scripter un parser qui pourra récupérer davantage d’informations.
Compiler les outils
# Debian 13, from scratch
sudo apt-get install -y build-essential cmake ninja-build git \
qt6-base-dev libglew-dev libglu1-mesa-dev mesa-common-dev
git clone --recurse-submodules https://github.com/cnr-isti-vclab/nexus.git
git clone --branch devel https://github.com/cnr-isti-vclab/vcglib.git # sibling of nexus
cd nexus
# CLI tools only (known-good on Qt6):
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_NXS_VIEW=OFF
cmake --build build
Faire une scène de démo
Depuis la branche de test de voyager: npm run build-prod, puis faire une archive:
Créer un fichier index.html:
<!doctype html>
<html>
<head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>Voyager Explorer 0.62.0 NEXUS</title>
<style>
body {
background: #303030;
}
</style>
<script defer="defer" src="./dist/js/voyager-explorer.min.js"></script>
</head>
<body>
<voyager-explorer root="." document="scene.svx.json" resourceRoot="./dist/"></voyager-explorer>
</body>
</html>
scenes/
+-- my_scene/
| +-- dist/ # dossier "dist" de voyager
| +-- index.html
| +-- scene.svx.json
| +-- my_model.nxz
Encodage KTX des textures
nxs_ktx2.mjs (5,5 Ko)
Améliorations souhaitées
Textures:
- format explicite (mime)
- Taille explicite (octets, au minimum. Dimensions?)
Matériaux: - Paramètres (metalic, specular), maps?
- Variantes?