ModelViewer

OpenGL-based 3D Model Viewer with Advanced Rendering Capabilities

πŸ“‚ GitHub Repository πŸš€ Latest Release

A professional-grade 3D viewer that reads and displays a comprehensive range of 3D file formats supported by Assimp (OBJ, FBX, COLLADA, BLEND, and more) and CAD formats, including STEP, IGES, and BRep files via OpenCASCADE. Features physically-based rendering (PBR), advanced material systems with Khronos KHR extensions, and sophisticated CAD visualization capabilities.

ADS Mode for CAD Visualization

Screenshot ADS Mode

PBR Mode for Advanced Visualization

Screenshot PBR Mode

Features Overview

Rendering Modes & Visualization

ModelViewer supports a comprehensive range of visualization and rendering styles for different inspection and analysis needs:

Rendering Modes

Advanced Rendering Modes

Metallic Roughness, Transmission, and Volume

Advanced Rendering

Sheen, Alpha Coverage

Sheen and Alpha

Material System & KHR Extensions

ModelViewer implements comprehensive support for Khronos KHR material extensions, enabling advanced material rendering capabilities:

Material System

Supported KHR Material Extensions:

Visual Demonstrations of KHR Material Extensions:

KHR Punctual Lights Support:

Punctual Lights

Texture Transform Support:

Texture Transform

Exploded Views

Automatic and manual assembly explosion for inspecting how a model's parts fit together:

Exploded View

Interactive Transform Gizmo & View Cube

Transform Gizmo View Cube

Animation System

Morph Target Animation

glTF Camera Support:

Import and export of glTF cameras, including animated camera tracking data driven by the same Animations panel used for skeletal and morph-target clips.

glTF Camera Support

Material Variants (KHR_materials_variants):

Switchable material sets per scene β€” swap an object's entire material assignment at runtime (e.g. color/finish options for a product model), with full round-trip preservation on glTF/GLB export.

glTF Material Variants

Scene Graph & Unified Material Workflow

Scene Graph Tree Widget

Texture Debugger Panel:

Live texture and extension overrides with Khronos-aligned channel isolation, letting you inspect individual geometry and texture channels (albedo, normal, roughness, metallic, AO, and more) in isolation.

Texture Debugger Panel

Material Editor & Library System

Material Editor

Texture Management & Advanced Features

Texture Processing:

Texture Management

CAD Support & Assembly Visualization

OpenCASCADE Integration:

OCC True-Edge Wireframe

Assimp Integration:

Session Storage (MVF)

ModelViewer's native .mvf file is a session format, not just a geometry export β€” it captures the full working state of a scene so you can pick up exactly where you left off:

Export Capabilities

Section/Capping Tools

Advanced Sectioning:

Section View 1 Section View 2

Multi-View Projection System

Multi-View Projection

Realistic PBR Rendering

Realistic Automotive Paint Rendering (Clearcoat & Iridescence):

Automotive Paint

User Interface & Tools

Detachable Panels:

UI Features:

Logging System:

A detachable Log Viewer panel provides real-time application logging with syntax highlighting, full-text search, and filtering by log level (info, warning, error, debug), useful for diagnosing import/export issues or tracking rendering pipeline behavior during a session.

Logging System

Settings Dialog:

Fully wired end-to-end across every tab β€” General, Camera, Display, Rendering, Materials, Import/Export, and Debug β€” with an "Animate Progressive Fit" option among the newer additions.

Settings Dialog

Quick Help:

An in-app reference dialog covering keyboard shortcuts and menu locations, kept in sync with the current UI (corrected for stale shortcuts and menu paths as part of the 2026.7.0 release).

Quick Help

Tutorial System:

An interactive guided introduction for new users, covering 18 lessons from basic navigation through exploded views, morph target animation, node transform editing, and edge/wireframe rendering.

Tutorial System

Advanced Camera & Navigation

Undo/Redo System

Building the Code

Just want to run ModelViewer? You don't need to build anything β€” grab the prebuilt Windows installer or Linux AppImage from the latest release. The steps below are only needed if you want to build from source.

Prerequisites

  • CMake: Version 3.15 or above
  • Qt: Version 6.8 or above
  • Assimp: Version 5.0.1
  • GLM: Mathematics library
  • Freetype: Version 2.10.1
  • OpenCASCADE: Version 7.9
  • Mesh Optimizer:Mesh optimization library
  • Basis Universalβ„’: To support the intermediate .KTX2 file formats
  • vcpkg: For Windows

Linux Build

Linux builds now go through vcpkg (manifest mode) for dependency management, using the bundled CMake presets.

  1. Install base system packages (compiler, X11/OpenGL headers, etc. β€” see the .github/workflows/build.yml Linux job for the exact apt list).
  2. Clone the repository (recursively, to pull in the vcpkg submodule):
    git clone --recursive https://github.com/sharjith/ModelViewer-Qt.git
    cd ModelViewer-Qt
  3. Configure with the vcpkg toolchain using the bundled CMake preset:
    cmake --preset ninja_release_vcpkg
    This triggers a vcpkg install of all manifest dependencies (Qt6, Assimp, OpenCASCADE, and others) on first run, which can take a while from scratch.
  4. Build the project:
    cmake --build --preset ninja_release_vcpkg_build
  5. Run the application:
    ./out/build/ninja_release_vcpkg/ModelViewer

Windows Build

  1. Install vcpkg if not already installed. Follow the instructions here.
  2. Use vcpkg to install the required dependencies:
    vcpkg install qt6-base assimp glm freetype:x64-windows opencascade:x64-windows
  3. Clone the repository:
    git clone https://github.com/sharjith/ModelViewer-Qt.git
    cd ModelViewer-Qt
  4. Create a build directory and configure the project using CMake with the vcpkg toolchain:
    mkdir build
    cd build
    cmake .. -DCMAKE_TOOLCHAIN_FILE=[path_to_vcpkg]/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release
    Replace [path_to_vcpkg] with your vcpkg installation path.
  5. Build the project:
    cmake --build . --config Release
  6. Run the application:
    .\Release\ModelViewer.exe

macOS Build

  1. Install dependencies via Homebrew:
    brew install cmake qt@6 assimp glm freetype open-cascade
  2. Clone and build:
    git clone https://github.com/sharjith/ModelViewer-Qt.git
    cd ModelViewer-Qt
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$(brew --prefix qt@6)
    make -j$(sysctl -n hw.ncpu)
    ./ModelViewer.app/Contents/MacOS/ModelViewer

Troubleshooting

Common Build Issues

OpenGL Context Not Available:
  • Ensure your system has a compatible GPU with OpenGL 4.6+ support
  • On Linux, verify GPU drivers are properly installed (glxinfo can help diagnose)
Qt6 Configuration Issues:
  • Verify Qt6 is properly installed: qmake --version should show Qt 6.8+
  • On Linux, ensure qt6-base-dev is installed with OpenGL support
  • On Windows, verify vcpkg Qt6 installation: vcpkg list | grep qt6
Assimp Version Mismatch:
  • Ensure Assimp 5.0.1 or later is installed
  • Incompatible versions may cause linking errors or runtime crashes
  • Rebuild Assimp from source if the package manager version is outdated
OpenCASCADE Not Found:
  • On Linux: Verify installation with pkg-config --cflags --libs OpenCASCADE
  • On Windows: Ensure vcpkg installation completed successfully
  • Check CMake output for exact library names not found

Performance Tips

Dependency Compatibility

Recommended Versions:
  • Qt: 6.8 or later
  • Assimp: 5.0.1 or later (5.2+ recommended)
  • OpenCASCADE: 7.9 or later
  • CMake: 3.16 or later (3.24+ recommended)
  • GLM: 0.9.9 or later
Known Issues:
  • OpenCASCADE < 7.8 may have compatibility issues
  • Qt versions older than 6.6 lack some OpenGL optimizations
  • MSVC 2019 or later recommended for Windows builds

Development & Contribution

ModelViewer is built with modern C++ (C++17) and uses CMake as its build system. The project includes:

License

ModelViewer is licensed under the GNU General Public License v3.0 (GPL-3.0).

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

For the full license text, see the LICENSE file in the repository root.

Acknowledgments