Aller au contenu

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 :

  1. Ajoutez la dépendance à votre projet
  2. Créez un fichier de configuration de carte JSON
  3. Initialisez MineSceneView dans votre Activity/Fragment
  4. Chargez vos données de carte via JsonUtil
  5. 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 !

    Signaler un bug

  • Obtenir de l'aide


    Besoin d'assistance pour l'intégration ?

    Support

  • Demandes de fonctionnalités


    Des idées d'amélioration ?

    Proposer


Ressources supplémentaires


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. 🙏