Repository navigation
2 Architecture and Optimization
Eren Yavas edited this page Nov 10, 2026
·
1 revision
OpenVetAtlas Android (oVa) is engineered under a strict "Potato-to-Flagship" philosophy: a 7–8 year old entry-level Android phone or tablet must run the atlas without driver crashes or thermal throttling, while modern high-Refresh-rate tablets benefit from enhanced anti-aliasing and rim-lighting.
OpenVetAtlasAndroid/
├── directives/ # [LAYER 1] Technical specifications & schemas
│ └── 01_core_architecture.md
├── Assets/ # Read-only 3D models, textures, shaders & NAV JSON
│ ├── Models/Bones/ # Blender .fbx models & photogrammetry textures
│ ├── branding/ # OVA logos, adaptive icons & boot splash
│ ├── data/landmark_dictionary.json # Canonical NAV Latin dictionary & typo aliases
│ └── materials/bone_matcap.gdshader
├── src/ # [LAYER 3] Deterministic GDScript runtime modules
│ ├── core/ # QualityManager, MatCapGenerator
│ ├── camera/ # TouchOrbitCamera (AABB framing & focus tween)
│ ├── landmarks/ # LandmarkSpawner, LandmarkDictionary
│ └── ui/ # AtlasMainController (Fit-to-Screen UI & Quiz)
├── scenes/main_atlas.tscn # Plain-text main scene
└── scripts/ # Headless CLI verification & FBX inspection tools
├── dump_fbx_landmarks.gd
└── verify_main_atlas.gd
-
Universal OpenGL ES 3.0 Baseline (
gl_compatibility):- Avoids Vulkan initialization crashes common on older budget Android SoCs (Adreno 5xx / Mali-T8xx / PowerVR).
-
On-Demand Rendering (
low_processor_usage_mode = true):- Neither
AtlasMainController,TouchOrbitCamera, norLandmarkSpawnerruns an idle_process()or_physics_process()loop. - When the student is reading anatomical terms without touching the screen, Godot sleeps between events—dropping GPU utilization to near 0%.
- Neither
-
Hybrid MatCap + Albedo Shader (
bone_matcap.gdshader&MatCapGenerator):- Instead of costly real-time PBR lights and shadow maps, bone depth perception is rendered via a view-space MatCap shader.
- If no external MatCap texture is present,
MatCapGeneratorprocedurally synthesizes a256×256ivory spherical gradientImageTextureat startup. - For textured specimens like
horse_cranium.fbx, the shader blends the photogrammetryalbedo_texture(horse_cranium.png) with MatCap lighting.
-
Dynamic Quality Scaling (
QualityManager):-
Low:
scaling_3d_scale = 0.75, MSAA Off. -
Med:
scaling_3d_scale = 0.90, 2× MSAA. -
High:
scaling_3d_scale = 1.00, 4× MSAA.
-
Low:
-
World-Space 3D Sphere Normalization (
LandmarkSpawner):- Different
.fbxmodels exported from Blender can carry different root/mesh local scales. -
LandmarkSpawnercomputes the specimen's world-spaceAABBlongest axis (world_max_extent) and divides the desired sphere radius (world_max_extent * 0.00255) by each landmark node's global basis scale (inverse scale), ensuring identical visual sphere proportions across all bones.
- Different
-
Ghost-Touch Protection (
TouchOrbitCamera):- Intercepts
InputEventScreenTouch(pressed = false)inside_input()before GUI controls consume touch release events, and prunes stale touch indices so dragging onto UI panels never freezes the camera.
- Intercepts
-
Fit-to-Screen UI Scaling (
AtlasMainController._apply_adaptive_ui_scale):- Computes an ergonomic DPI scale for Phone vs. Tablet and Portrait vs. Landscape, then clamps it against
max_fit_scalederived from the actual minimum width ofTopBarandInfoDrawer, guaranteeing zero horizontal or vertical overflow on any screen resolution.
- Computes an ergonomic DPI scale for Phone vs. Tablet and Portrait vs. Landscape, then clamps it against
OpenVetAtlas Android (oVa) — Aydın Adnan Menderes Üniversitesi Veteriner Fakültesi Anatomi Anabilim Dalı (DijiLab) | ADÜ-BAP — Code: AGPL-3.0 | 3D Models & Textures: CC BY-NC-SA 4.0
- 🏠 Home / Genel Bakış
-
📱 1. User Guide & Touch Controls
- Dokunmatik Kontroller & Quiz
-
⚙️ 2. Architecture & Optimization
- Mimari & Mobil Optimizasyon
-
🦴 3. Adding Bones & Landmarks
- Yeni Tür, Kemik & Pin Ekleme
-
📦 4. APK Build & Installation
- APK Derleme & Cihaza Kurulum
Links / Bağlantılar