Skip to content

Amin-Moniry/3D_Visualizer

Repository files navigation





Windows macOS Linux Android iOS



Overview

AminTivanix2 3D Visualizer Engine is a browser-based, standalone 3D model inspection tool built on Three.js. The engine enables users to load, inspect, and interact with .glb and .gltf formatted 3D assets directly within any modern web browser — without the requirement of a server, installation, or external dependencies. All JavaScript libraries are injected inline at build time, producing a single self-contained HTML file that runs fully offline.

The application targets 3D artists, game developers, product designers, and technical reviewers who require a lightweight, portable solution for real-time 3D asset inspection. The engine supports simultaneous loading of up to seven models, GLTF animation playback, multiple lighting presets, model focus via click interaction, drag-and-drop import, and high-resolution screenshot export — all within a responsive cyberpunk-aesthetic interface built with Orbitron and Space Mono typography.



Features

Feature Description Status
Standalone HTML Export Build script inlines all libraries into a single portable .html file ✅ Complete
Multi-Model Loading Import and display up to 7 .glb / .gltf models simultaneously ✅ Complete
Drag & Drop Import Drop model files directly onto the viewport to load them ✅ Complete
OrbitControls Navigation Smooth orbit, pan, and zoom navigation with damping ✅ Complete
Click-to-Focus Click any loaded model to smoothly lerp the camera onto it ✅ Complete
GLTF Animation Playback Auto-detects embedded animations with a switchable selection panel ✅ Complete
Lighting Presets Studio, Outdoor, Bright, and Dim presets with one-click switching ✅ Complete
Screenshot Export Renders and downloads the current viewport as a .png file ✅ Complete
Model Management Panel Named model list with per-model focus and removal controls ✅ Complete
Mobile Responsive Drawer Full touch-optimized model management drawer for narrow viewports ✅ Complete
Animated Background Grid Drifting perspective grid with radial vignette for depth effect ✅ Complete
ACES Filmic Tone Mapping Cinematic tone mapping and sRGB output encoding via Three.js ✅ Complete
Custom Build Pipeline Python script assembles the template and injects library bundles ✅ Complete
Multi-Model Auto-Layout Models are spaced and centered automatically after each import ✅ Complete


Tech Stack

Layer Technologies
3D Rendering Three.js r128 — UMD bundle, inlined at build time
Model Loading GLTFLoader.js — GLTF 2.0 / GLB binary format
Camera Controls OrbitControls.js — orbit, pan, zoom with inertia damping
Animation System THREE.AnimationMixer — GLTF embedded clip playback
Build Pipeline Python 3 · build_viewer.py — template injection and assembly
UI Typography Orbitron · Space Mono — via Google Fonts
Tone Mapping ACES Filmic · sRGB output encoding
Distribution Single standalone .html — no server or CDN required


Screenshots

Engine idle state — animated hologram placeholder prior to model import


Automotive asset rendered under Studio lighting with OrbitControls active



Project Structure

3D_Visualizer/
│
├── assets/                           # Preview images for README
│   ├── main.png                      # Viewport idle state screenshot
│   └── CarModeltest.png              # Car model render sample
│
├── libs/                             # Bundled Three.js library files
│   ├── three.min.js                  # Three.js core (r128, UMD)
│   ├── GLTFLoader.js                 # GLTF / GLB format loader
│   └── OrbitControls.js              # Orbit camera controller
│
├── universal_template.html           # Source template with INJECT_ placeholders
├── build_viewer.py                   # Build script — inlines libs into template
├── AminTivanix2_3D_Visualizer.html   # ► OUTPUT — final standalone viewer
├── model.glb                         # Sample 3D model for testing
├── requirements.txt                  # Python dependencies
├── .gitignore
└── LICENSE


Installation

Option A — Download Pre-Built Release

Recommended — no Python, no build step, no internet required after download.

Step   Go to the Releases page on GitHub.

Step   Download AminTivanix2_3D_Visualizer.html from the latest release.

Step   Open the file in Chrome, Firefox, or Edge — no server needed.

Step   Click Import Model or drag and drop a .glb / .gltf file.


Option B — Build from Source

Prerequisite: Python 3.8 or higher installed on your system.

Windows

git clone https://github.com/Amin-Moniry/3D_Visualizer.git
cd 3D_Visualizer
pip install -r requirements.txt
python build_viewer.py

Linux / macOS

git clone https://github.com/Amin-Moniry/3D_Visualizer.git
cd 3D_Visualizer
pip3 install -r requirements.txt
python3 build_viewer.py

The script reads universal_template.html, inlines three.min.js, GLTFLoader.js, and OrbitControls.js at their INJECT_ placeholders, and writes the final output to AminTivanix2_3D_Visualizer.html.



Usage

  1. Open AminTivanix2_3D_Visualizer.html in a modern web browser.
  2. Click Import Model (top-right) or drag and drop a .glb / .gltf file onto the viewport.
  3. Navigate the scene — left-click drag → orbit  ·  right-click drag → pan  ·  scroll wheel → zoom.
  4. Click any model directly in the viewport to smoothly focus the camera on it; click empty space to return to full scene view.
  5. Use the Lighting button in the bottom toolbar to switch between Studio, Outdoor, Bright, and Dim presets.
  6. Use the Animations button to view and switch between any embedded GLTF animation clips.
  7. Click Screenshot in the bottom toolbar to export the current viewport as a .png file.

Model Panel — Managing Loaded Models

After importing, each model appears as a named entry in the model list panel on the left side of the screen (desktop) or inside the slide-up drawer accessible via the 📦 Models button in the bottom toolbar (mobile).

Each entry provides two action buttons:

Button Symbol What it does
Focus Smoothly lerps the camera directly onto that model for close inspection
Remove Permanently removes the model from the scene and frees the slot

Focus — press this to isolate any one model. The camera animates directly to it. Press it again or click empty space to return to the full scene view.

Remove — press this to delete a model from the scene. The slot becomes available again. Up to 7 models can be loaded simultaneously.

On mobile, tap 📦 Models in the bottom toolbar to open the drawer, then use the same and buttons inside the list.


Preparing Your Model in Blender

For correct rendering in the engine, follow these steps in Blender before exporting:

Step   Use Principled BSDF for all materials — the GLTF exporter only supports PBR-compatible node trees.

Step   In the Shading workspace, connect Base Color, Roughness, Metallic, and Normal maps correctly to Principled BSDF.

Step   Set the color space of Roughness, Metallic, and Normal textures to Non-Color to avoid incorrect rendering.

Step   Go to File → Export → glTF 2.0 and select GLB (single binary file) for maximum compatibility.

Step   Enable Apply Modifiers, Include Animations, and Export Materials in the export settings panel.

Step   The engine applies ACES Filmic Tone Mapping — PBR materials will render accurately without further adjustment.



Roadmap

  • HDR environment map (HDRI) support for image-based lighting
  • Per-model transform gizmos — position, rotation, and scale handles in viewport
  • Wireframe toggle and normal map visualization overlay
  • Background color and environment customization panel
  • Model measurement tools — live bounding box dimension display
  • Annotation system — attach text labels to model surfaces
  • Export selected model back to GLB from within the viewer
  • Turntable auto-rotation mode with configurable speed
  • VR / WebXR mode for headset-based inspection
  • Drag-and-drop texture replacement on loaded materials


Contributing

  1. Fork the repository via the Fork button on GitHub.
  2. Create a feature branch: git checkout -b feature/your-feature-name
  3. Commit with a descriptive message: git commit -m "Add: brief description"
  4. Push to your fork: git push origin feature/your-feature-name
  5. Open a Pull Request against the master branch of this repository.

All derivative works must retain the name AminTivanix2 3D Visualizer Engine and credit Amin Moniry as Original Author per the LICENSE terms. Contributors may not claim sole ownership of the core engine.



License

This project is distributed under the MIT License with a mandatory attribution clause.

Any forks, modifications, or distributions must prominently retain the name AminTivanix2 3D Visualizer Engine and credit Amin Moniry as the Original Author and Publisher. See LICENSE for the complete terms.

© 2026 Amin Moniry (AminTivanix2) — All Rights Reserved



Contact



Issues

GitHub

Website

Telegram

Email




About

Standalone browser-based 3D model inspector — import up to 7 GLB/GLTF assets, orbit, animate, and export screenshots. Zero dependencies. Single HTML file.

Topics

Resources

License

Stars

Watchers

Forks

Contributors