ModelViewer

OpenGL-based 3D Model Viewer with Advanced Rendering Capabilities

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

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

Material Editor & Library System

Material Editor

Texture Management & Advanced Features

Texture Processing:

Texture Management

CAD Support & Assembly Visualization

OpenCASCADE Integration:

Assimp Integration:

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:

Advanced Camera & Navigation

Undo/Redo System

Building the Code

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

  1. Install the required dependencies using your package manager (e.g., apt, yum, etc.).
  2. Clone the repository:
    git clone https://github.com/sharjith/ModelViewer-Qt.git
    cd ModelViewer-Qt
  3. Create a build directory and configure the project using CMake:
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
  4. Build the project:
    make -j$(nproc)
  5. Run the application:
    ./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