Version 0.1.0 Alpha¶
Date de sortie : 16 février 2024
Statut : Version alpha
Build : 0.1.0
Vue d'ensemble¶
Bienvenue dans la toute première version alpha de MINE - Indoor Navigation Engine ! Cette version fondamentale introduit les capacités de rendu et le pipeline de traitement des données cartographiques, posant les bases d'une solution de navigation intérieure performante.
Version alpha
Il s'agit d'une version alpha précoce destinée aux tests et retours. L'API peut encore évoluer et certaines fonctionnalités peuvent être limitées. Utilisation en production non recommandée.
Points forts¶
-
Rendu 3D/2D
Moteur de génération d'environnement supportant la visualisation 3D et 2D
-
Configuration JSON
Analyse flexible des données de carte en JSON pour une configuration simple
Nouvelles fonctionnalités¶
Génération d'environnements 3D/2D¶
Le moteur de rendu principal est opérationnel et permet d'afficher des cartes intérieures en perspectives 3D et 2D.
Capacités clés :
- ✅ Rendu de scènes 3D en temps réel avec le moteur Filament
- ✅ Projection 2D pour des vues de navigation simplifiées
- ✅ Commutation dynamique entre modes 3D et 2D
- ✅ Contrôles de caméra basiques et positionnement
- ✅ Pipeline de chargement et rendu de maillages
Détails techniques :
- Rendu accéléré matériellement
- Prise en charge des formats glTF/GLB
- Éclairage et matériaux basiques
- Contrôles de perspective de caméra
- Projection orthographique en vue de dessus
- Rendu simplifié pour de meilleures performances
- Idéal pour le guidage et l'affichage d'itinéraires
- Consommation de ressources réduite
Exemple d'utilisation :
val sceneView = MineSceneView(context)
// Activer le mode 3D (par défaut)
sceneView.setRenderMode(RenderMode.MODE_3D)
// Passer en mode 2D
sceneView.setRenderMode(RenderMode.MODE_2D)
Analyse des données cartographiques JSON¶
Introduction d'un système robuste d'analyse JSON pour la configuration des cartes, permettant un paramétrage sans changer le code.
Configuration prise en charge :
- 📍 Définitions d'étages et métadonnées
- 🏢 Informations de structure du bâtiment
- 🗺️ Références aux fichiers de modèles de carte
- ⚙️ Positionnement initial de la caméra
- 🎨 Options de style basiques
Structure JSON :
{
"id": "venue-001",
"name": "Sample Venue",
"version": "1.0.0",
"modelPath": "models/venue.glb",
"floors": [
{
"id": "ground",
"name": "Ground Floor",
"level": 0,
"defaultFloor": true
}
]
}
Chargement des cartes :
// Charger depuis les assets
val mapData = JsonUtil.LoadJsonFromAsset(context, "maps/venue.json")
// Appliquer à la scène
sceneView.setMapData(mapData)
Corrections de bugs¶
Génération d'environnements 3D/2D¶
Problème : Le pipeline de rendu initial rencontrait des instabilités entraînant des crashs lors de l'initialisation de scène.
Résolution : - Amélioration de la séquence d'initialisation des ressources - Gestion d'erreurs pour les assets manquants - Meilleure gestion mémoire pendant la préparation de scène - Correction de conditions de concurrence dans le thread de rendu
Impact : Stabilité nettement améliorée lors du chargement et de l'initialisation des cartes.
Analyse de fichiers JSON vides¶
Problème : Le parseur plantait sur des fichiers JSON vides ou mal formés.
Résolution : - Validation d'entrée renforcée - Gestion élégante des fichiers vides - Messages d'erreur détaillés pour le debug - Vérifications de null-safety améliorées
Avant :
// Plantait sur un fichier vide
val mapData = JsonUtil.LoadJsonFromAsset(context, "empty.json")
Après :
// Retourne désormais null avec logs d'erreur
val mapData = JsonUtil.LoadJsonFromAsset(context, "empty.json")
if (mapData == null) {
Log.e("Map", "Failed to load map data")
}
Problèmes connus¶
Nous sommes conscients des limitations suivantes dans cette version alpha :
Rendu 3D/2D sur appareils d'entrée de gamme¶
Problème de performance
Gravité : Moyenne
Plateformes : Appareils Android bas de gamme (< 2 Go RAM)
Description : Le moteur de rendu peut subir des chutes de FPS ou du stuttering sur des GPU limités.
Solution de contournement :
// Réduire la qualité de rendu pour de meilleures perfs
sceneView.displayConfig = DisplayConfig(
renderQuality = DisplayConfig.RenderQuality.LOW,
shadowsEnabled = false,
antiAliasing = false
)
Statut : En investigation. Optimisations prévues pour v0.2.0.
Performance du module sur appareils limités¶
Problème de performance
Gravité : Moyenne
Plateformes : Appareils avec < 3 Go de RAM
Description : Performances globales sous-optimales sur appareils contraints, notamment au chargement initial.
Impact : - Temps de chargement plus lents (5-10 secondes) - Consommation mémoire accrue - Risque d'out-of-memory sur appareils très limités
Recommandations : - Tester tôt sur les appareils cibles - Ajouter des écrans de chargement pour une meilleure UX - Privilégier le mode 2D pour de meilleures performances
Statut : Profilage en cours. Optimisations planifiées pour v0.2.0.
Gestes / Événements tactiles¶
Problème d'interaction
Gravité : Élevée
Plateformes : Tous appareils
Description : Les gestes (pan, zoom, rotation) peuvent être incohérents ou entrer en conflit avec les gestes système.
Problèmes connus : - Événements tactiles parfois non reconnus - Sensibilité irrégulière du pinch-to-zoom - Conflit de la rotation avec le panoramique - Multi-touch pas toujours détecté
Solution de contournement :
// Désactiver temporairement les gestes conflictuels
gestureHandler.apply {
isRotationEnabled = false // Désactiver en cas de conflit
minZoom = 1.0f
maxZoom = 5.0f
}
Statut : Correctif critique prévu pour v0.2.0. Investigation du pipeline d'événements tactiles.
Notes de test¶
Configurations testées¶
| Type d'appareil | Version Android | Statut | Notes |
|---|---|---|---|
| Haut de gamme (flagship) | 11-14 | ✅ OK | Performances optimales |
| Milieu de gamme | 10-13 | ⚠️ Partiel | Quelques chutes de FPS |
| Entrée de gamme | 9-12 | ❌ Problèmes | Issues de performance |
| Tablettes | 11-14 | ✅ OK | Bonne expérience |
Couverture de test¶
- ✅ Chargement basique des cartes
- ✅ Analyse JSON
- ✅ Bascule 3D/2D
- ⚠️ Gestes tactiles (limité)
- ⚠️ Gestion mémoire (en cours)
- ❌ Navigation multi-étages (non implémentée)
Installation¶
Pour utiliser cette version alpha, ajoutez la dépendance suivante :
dependencies {
implementation("com.machinestalk:indoornavigationengine:0.1.0-alpha")
}
dependencies {
implementation 'com.machinestalk:indoornavigationengine:0.1.0-alpha'
}
Version alpha
N'oubliez pas le suffixe -alpha pour utiliser cette préversion.
Guide de migration¶
C'est la première version alpha, aucune migration n'est requise. Pour une nouvelle intégration :
- Ajoutez la dépendance à votre projet
- Créez un fichier de configuration de carte JSON
- Initialisez
MineSceneViewdans votre Activity/Fragment - Chargez vos données de carte via
JsonUtil - Consultez le Guide de démarrage rapide pour plus de détails
Prochaines étapes¶
Prévu pour v0.2.0 :
- 🎯 Amélioration de la gestion des gestes tactiles
- ⚡ Optimisations de performance pour appareils bas de gamme
- 🗺️ Support de navigation multi-étages
- 📍 Système de Points d'Intérêt (POI)
- 🎨 Capacités de thématisation renforcées
- 📱 Meilleure gestion mémoire
:material-feedback: Retours & support¶
Vos retours sont essentiels pour améliorer MINE !
-
Signaler un bug
Vous avez trouvé un problème ? Dites-le nous !
-
Obtenir de l'aide
Besoin d'assistance pour l'intégration ?
-
Demandes de fonctionnalités
Des idées d'amélioration ?
Ressources supplémentaires¶
- 📖 Guide d'installation
- 🚀 Démarrage rapide
- 📚 Documentation d'utilisation
- 🎯 Vue d'ensemble des fonctionnalités
- ❓ FAQ
Licence¶
Ce logiciel est distribué sous licence commerciale. Merci de consulter les conditions avant utilisation.
Merci !
Merci d'être un·e early adopter de MINE - Indoor Navigation Engine ! Vos retours nous aident à construire un meilleur produit. 🙏