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, and displays FEM / CFD simulation results (VTK, CalculiX, Exodus II, CGNS, MED, OpenFOAM, VTKHDF). 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

What's new in 2026.11

ModelViewer now reads simulation results (FEM / CFD) and plots your own data in 3D, and adds a ray tracer, measurement and annotation, CGAL-based mesh tools and surface analysis. The application has a What's New dialog and a 29-lesson tutorial in English, German, Spanish, French and Italian, and there is a PDF guide Simulation Results and 3D Plotting in the same languages: English, Deutsch, Español, Français, Italiano.

Download: the latest release has a Windows installer (.exe) and a Linux .deb for Ubuntu 26.04 LTS (sudo apt install ./modelviewer_2026.11.0_amd64.deb). The full list of changes is in the changelog.

Video tutorials: a series of short tutorials, from opening a model to simulation results, 3D plots and ray tracing, is on the ModelViewer YouTube channel.

Optional content packs: to keep the installer small it carries 53 materials and 23 HDRI maps. The complete material library (about 2.2 GB, two zips), all HDRI environment maps (about 1.0 GB) and the optional large simulation samples are separate downloads on the same release page. Unzip each into the ModelViewer data folder (Windows: C:\Program Files\ModelViewer\share\ModelViewer, Linux: /usr/share/ModelViewer, administrator rights needed), restart ModelViewer, and the new materials and environments appear. Step-by-step commands are in the README.

Features Overview

Simulation Results

ModelViewer displays the results of FEM and CFD solvers; it does not mesh or solve. A result opens as its outer surface coloured by any field, and the tools below look inside it.

A simulation result coloured by von Mises stress
Iso-surfaces of a temperature field
Streamlines through a duct
A temperature history chart next to its result

3D Data Plotting

Plot tables of numbers, formulas and time series in the same 3D scene as your models, with the same camera, section, annotation and export tools.

A scatter, a bar and a vector plot sharing one set of axes A torus and a Klein bottle from parametric formulas

Ray Tracing

A physically based ray tracer with a CPU engine (Embree) and an optional GPU engine (NVIDIA OptiX), a live ray-traced viewport, offline renders of any size, OIDN denoising and batch rendering of captured views.

The same model in PBR and ray-traced mode A finished ray-traced render

Model: "Car Concept" by Eric Chadwick, CC BY 4.0, from the Khronos glTF Sample Assets.

Measure, Annotate and Report

Point, distance, angle, radius, diameter, pitch-circle, area and geodesic measurements with CAD-style dimension lines, text annotations, and a PDF report of captured views with their measurement and annotation table.

An edge radius and a pitch circle measured on a CAD part

Mesh Tools and Surface Analysis

Zebra stripes on a bottle
A coarse torus and its subdivided surface

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

Sofa: "SheenWoodLeatherSofa" by Fran Calvente (CC0), with 2024 improvements by Eric Chadwick, © Darmstadt Graphics Group GmbH, CC BY 4.0, from the Khronos glTF Sample Assets.

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 the Linux .deb package (Ubuntu 26.04) 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

Ubuntu 26.04 LTS / Kubuntu 26.04 (the platform of the .deb): the supported route, which builds the same package as the releases page.

git clone --branch dev https://github.com/sharjith/ModelViewer-Qt.git ~/dev/ModelViewer-Qt
cd ~/dev/ModelViewer-Qt
git submodule update --init --recursive

# one-time setup (needs sudo): apt packages, CGAL 6.2+ from cgal.org, vcpkg for the two bundled ports
bash packaging/linux/setup-wsl-build-env.sh

cmake --preset linux_system_release
cmake --build out/build/linux_system_release --parallel

cd out/build/linux_system_release && cpack -G DEB
sudo apt install ./modelviewer_2026.11.0_amd64.deb
modelviewer

In an existing clone, update it first with git fetch origin && git checkout dev && git pull. CGAL comes from cgal.org because Ubuntu's own libcgal-dev is 6.1 and too old (the configure step stops with a message if it finds an older one). The script is named after WSL but works on any Ubuntu 26.04 system. Build the whole project, not just --target ModelViewer, or cpack cannot find the icon. For NVIDIA graphics install the driver first (sudo ubuntu-drivers install).

Other Linux builds 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

Models shown in the screenshots

Sample models from the Khronos glTF Sample Assets. Where a model has two layers of licensing, both are listed.