• Stars
    star
    446
  • Rank 94,183 (Top 2 %)
  • Language
    C++
  • License
    GNU Lesser Genera...
  • Created over 2 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

HARFANG 3D source code public repository

HARFANG® 3D engine

PyPI Downloads Downloads

HARFANG®3D is an all-in-one 3D visualization library usable in C++, Python, Lua and Go.

Table of contents

  1. About
  2. Download
  3. Building the SDK
  4. Using the C++ SDK
  5. Version
  6. License
  7. Contribute
  8. Support Harfang

About

HARFANG®3D is an easy-to-adapt, cross-platform, multi-language, powerful and optimized solution to integrate with embedded systems, into existing environments and combining features to meet the industrial standards of real-time 3D imaging.

The HARFANG®3D architecture makes it easy to meet the requirements for hardware integration, display performance and security.

HARFANG®3D is written in C++ and is based on the open-source bgfx library supporting Vulkan, Metal, DirectX (from 9 to 12), OpenGL and OpenGL ES. It Builds on Windows, Linux, Intel and ARM.

Features

Platforms supported

  • Win32 and Win64 Intel
  • Linux 64 Intel
  • Aarch 64 ARM

Scene API

  • Node & component based
  • Performance oriented

Rendering pipeline

  • Low-spec PBR rendering pipeline
  • High-spec 'AAA' rendering pipeline (screen space GI & reflection)
  • Support of user pipeline shaders

VR API

  • XR support via OpenXR
  • VR support via OpenVR/SteamVR including Eye tracking (SRanipal)
  • Tested with the HTC Vive/Vive Pro, Valve Index, Lenovo Explorer, Oculus Rift S, Oculus Quest 2, Varjo XR-3

Physics API

  • Rigid bodies, collisions, mechanical constraints, ray casting

Audio API

  • Play/stream WAV/OGG formats
  • 3D audio spatialization

Languages supported

  • C++
  • Python (3.2+)
  • Lua (5.4)
  • Go (1+, experimental)

Screenshots

The following screenshots were captured on a 1080GTX in 1080P running at 60FPS.

alt text

alt text

(Sun Temple, courtesy of the Open Research Content Archive (ORCA))

Download

You can download the HARFANG binaries from the official website: https://dev.harfang3d.com/releases

Build the SDK

Prerequisites

  • Git
  • CMake 3.19+
  • CPython 3.2+
  • Go 1+ (for Harfang Go module)
  • Doxygen (for Harfang C++ SDK documentation)
  • Autodesk FBX SDK (for FBX Converter)

Windows

  • Visual Studio 2019 (C++ compiler and IDE)
  • MinGW (for Harfang Go module)

Linux

  • GCC 9 or above
  • CLang

Building

  1. Clone the Harfang 3D repository including its submodules.

    git clone --recursive -j8 https://github.com/harfang3d/harfang3d.git
    cd harfang3d
    
  2. Create build directory. Note that the described directory layout is not mandatory.

    mkdir build
    cd build
    
  3. Clone Fabgen.

    git clone https://github.com/ejulien/FABGen.git
    
  4. Download and install Autodesk FBX SDK.

  5. Create a directory that will hold the build system generated by CMake.

    mkdir cmake
    cd cmake
    
  6. Generate the build system using CMake. For example, on Windows it will be:

    cmake ../.. -G "Visual Studio 16 2019" -A x64 \
        -DCMAKE_INSTALL_PREFIX:PATH="D:/harfang/build/install" \
        -DPYTHON_EXECUTABLE:FILEPATH="C:/Python36/python.exe" \
        -DHG_FABGEN_PATH:PATH="D:/harfang/build/fabgen" \
        -DHG_FBX_SDK:PATH="D:/fbx_sdk" 
    
    • CMAKE_INSTALL_PREFIX specifies the directory where the Harfang SDK will installed.
    • PYTHON_EXECUTABLE is the path the Python 3 interpreter.
    • FABGEN_PATH is the path to Fabgen binding generator.
    • HG_FBX_SDK is the path to Autodesk FBX SDK.

     
    Here is the list of available CMake options.

    • C++ SDK
      • HG_BUILD_CPP_SDK : Build C++ SDK (default: OFF).
      • HG_BUILD_TESTS : Build C++ SDK unit tests (default: OFF).
      • HG_BUILD_DOCS : Build API and C++ SDK documentations (default: OFF).
      • HG_ENABLE_BULLET3_SCENE_PHYSICS : Enable Bullet physics API (default: ON).
      • HG_ENABLE_RECAST_DETOUR_API : Enable Recast/Detour navigation mesh and path finding API (default: ON).
      • HG_ENABLE_OPENVR_API : Enable OpenVR API (default: OFF).
      • HG_ENABLE_SRANIPAL_API : Enable VIVE Eye and Facial Tracking SDK (SRanipal) API (default: OFF).
    • Tools
      • HG_BUILD_ASSETC : Build AssetC asset compiler (default: ON).
      • HG_BUILD_ASSIMP_CONVERTER : Build Assimp based 3D model converter (default: ON).
      • HG_BUILD_FBX_CONVERTER : Build FBX converter (default: ON).
      • HG_BUILD_GLTF_IMPORTER : Build GLTF importer (default: ON).
      • HG_BUILD_GLTF_EXPORTER : Build GLTF exporter (default: ON).
    • Bindings
      • HG_BUILD_HG_LUA : Build Harfang LUA module (default: OFF).
      • HG_BUILD_HG_PYTHON : Build Harfang Python module (wheel) (default: OFF).
      • HG_BUILD_HG_GO : Build Harfang GO module (default: OFF).

     

  7. Build the SDK.

    cmake --build . --config Release --target INSTALL
    

    Note: On Linux you will need to explicitly specify the build type with -DCMAKE_BUILD_TYPE=Release

    Depending on the set of option passed to CMake the install directory will contain the following subdirectories:

    • cppsdk : Harfang C++ SDK.
    • hg_python : Harfang Python module.
    • hg_lua : Harfang LUA module.
    • hg_go : Harfang Go module.
    • assetc : Asset compiler.
    • assimp_converter : Assimp 3D model converter.
    • fbx_converter : FBX converter.
    • gltf_importer : GLTF importer.
    • gltf_exporter : GLTF exporter.

Notes on Visual Studio Code

  1. Install the CMakeTools extension.

  2. Copy the harfang/.vscode/template_settings.json file to harfang/.vscode/settings.json and edit it to reflect your local installation.

  3. Open the harfang folder in Visual Studio Code. CMakeTools should succesfully configure the project.

Use the SDK

The Harfang C++ SDK directory cppsdk contains the following:

  • bin : depending on the configuration used, this directory contains either a Release or Debug subdirectory with all the shared libraries.
  • lib : like the bin directory, it contains a subdirectories named after the configuration used during build (Release or Debug) with all the generated static libraries.
  • include : contains all the C++ include files of Harfang public API.
  • cmake : contains the CMake configuration files.

To add the Harfang C++ SDK to your CMake project, just add the following to the CMakeLists.txt file:

find_package(harfang REQUIRED
    COMPONENTS cppsdk
    PATHS ${HG_CPPSDK_PATH}
    NO_DEFAULT_PATH
)

with HG_CPPSDK_PATH the path to the cppsdk directory. For example, if we follow the directory layout given above, it will be D:/harfang/build/install/cppsdk.

Targets should link against the following libraries.

  • hg::engine
  • hg::foundation
  • hg::platform
  • hg::libluadll

The install_cppsdk_dependencies function installs the Harfang C++ SDK shared libraries dependencies.

install_cppsdk_dependencies(destination component)
  • destination : is the library where the shared libraries will be installed.
  • component : installation component name.

Version

Harfang follows the Semantic Versioning Specification (SemVer) (http://semver.org).

Given a version number MAJOR.MINOR.PATCH, increment the:

  • MAJOR version when you make incompatible API changes,
  • MINOR version when you add functionality in a backwards-compatible manner, and
  • PATCH version when you make backwards-compatible bug fixes.

License

Harfang is licensed under the GPLv3, LGPLv3 and a commercial license:
https://www.harfang3d.com/license

Contribute

Contributor License Agreement

By contributing your code to HARFANG you grant the HARFANG3D organization a non-exclusive, irrevocable, worldwide, royalty-free, sublicenseable, transferable license under all of Your relevant intellectual property rights (including copyright, patent, and any other rights), to use, copy, prepare derivative works of, distribute and publicly perform and display the Contributions on any licensing terms, including without limitation: (a) open source licenses like the MIT license; and (b) binary, proprietary, or commercial licenses. Except for the licenses granted herein, You reserve all right, title, and interest in and to the Contribution.

You confirm that you are able to grant us these rights. You represent that You are legally entitled to grant the above license. If Your employer has rights to intellectual property that You create, You represent that You have received permission to make the Contributions on behalf of that employer, or that Your employer has waived such rights for the Contributions.

You represent that the Contributions are Your original works of authorship, and to Your knowledge, no other person claims, or has the right to claim, any right in any invention or patent related to the Contributions. You also represent that You are not legally obligated, whether by entering into an agreement or otherwise, in any way that conflicts with the terms of this license.

The HARFANG3D organization acknowledges that, except as explicitly described in this Agreement, any Contribution which you provide is on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.

How to support Harfang?

There are numerous ways to help Harfang grow its community:

More screenshots...

Nvidia USD Attic

(The NVIDIA USD Attic using the HARFANG 3D AAA renderer)

ORCA Sun Temple

ORCA Sun Temple

(Sun Temple, courtesy of the Open Research Content Archive (ORCA))

ORCA Bistro

ORCA Bistro

(Bistro, courtesy of the Open Research Content Archive (ORCA))

Sponza Atrium

Sponza Atrium

(Sponza Atrium GLTF, courtesy of Crytek/Themaister)

alt text

(Marine Melodies, by Resistance Norway)

More Repositories

1

dogfight-sandbox-hg2

Air to air combat sandbox, created in Python 3 using the HARFANG 3D 2 framework.
Python
128
star
2

dogfight-sandbox-hg1

Air to air combat game, created in Python 3 using HARFANG 3D.
Python
70
star
3

harfang-go

HARFANG 3D engine for the Go language
Go
37
star
4

vr-python-quickstart-hg1

VR Headset Controller Tutorial, get started with virtual reality in Python
Python
33
star
5

tutorials-hg2

Tutorials for Harfang Python & Lua
Shell
22
star
6

harfang-gui

Harfang GUI is a immediate mode GUI library built on top of HARFANG® 3D
Python
18
star
7

tutorials-hg1

These tutorials demonstrate the usage of the Harfang API
Lua
12
star
8

snooker-python-hg2

Snooker is a simple game that was programmed in Python using the HARFANG 3D framework
Shell
10
star
9

python-digital-twin

3D Digital Twin of a Poppy Ergo Junior robot, in Python
Shell
8
star
10

algosup-binding-project

Binding project for Algosup, session 2023, Rust & F#
6
star
11

tutorials-cpp-hg2

Tutorials for Harfang C++
Shell
5
star
12

car-simulator

Car simulator - VR & 3D - Raycast Car - WORK IN PROGRESS
Shell
4
star
13

reachy-digital-twin

Digital twin of the Pollen Robotics Reachy robot.
Shell
4
star
14

harfang-plugin-ffmpeg

FFmpeg video player plugin for HARFANG 3D framework
C++
2
star
15

game-winter-z-hg2

WinterZ, a game by Jerome Sentex (Wizital), reprogrammed in Python/Lua using the HARFANG 3D framework
Lua
2
star
16

game-astrolander-cesi-nanterre

CESI Nanterre x HARFANG Workshop
Shell
2
star
17

tutorials-hhl

Tutorials for Harfang High Level
Python
1
star
18

harfang-high-level

Harfang High Level is a set of functions designed for rapid prototyping 3D application in Python
Python
1
star