HARFANG®3D is an all-in-one 3D visualization library usable in C++, Python, Lua and Go.
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.
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
- VR support via OpenVR/SteamVR with Eye tracking
- Compatible with the HTC Vive/Vive Pro, Valve Index, Lenovo Explorer, Oculus Rift S
Physics API
- Rigid bodies, collisions, mechanical constraints, ray casting
Audio API
- Play/stream WAV/OGG formats
- 3D audio spatialization
Languages supported
The following screenshots were captured on a 1080GTX in 1080P running at 60FPS.
(Sun Temple, courtesy of the Open Research Content Archive (ORCA))
You can download the HARFANG binaries from the official website: https://dev.harfang3d.com/releases
- 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)
- Visual Studio 2019 (C++ compiler and IDE)
- MinGW (for Harfang Go module)
- GCC 9 or above
- CLang
-
Clone the
Harfang 3D
repository including its submodules.git clone --recursive -j8 https://github.com/harfang3d/harfang3d.git cd harfang3d
-
Create build directory. Note that the described directory layout is not mandatory.
mkdir build cd build
-
Clone Fabgen.
git clone https://github.com/ejulien/FABGen.git
-
Download and install Autodesk FBX SDK.
-
Create a directory that will hold the build system generated by CMake.
mkdir cmake cd cmake
-
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).
-
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.
-
Install the CMakeTools extension.
-
Copy the
harfang/.vscode/template_settings.json
file toharfang/.vscode/settings.json
and edit it to reflect your local installation. -
Open the
harfang
folder in Visual Studio Code. CMakeTools should succesfully configure the project.
The Harfang C++ SDK directory cppsdk
contains the following:
bin
: depending on the configuration used, this directory contains either aRelease
orDebug
subdirectory with all the shared libraries.lib
: like thebin
directory, it contains a subdirectories named after the configuration used during build (Release
orDebug
) 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.
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.
Harfang is licensed under the GPLv3, LGPLv3 and a commercial license:
https://www.harfang3d.com/license
(Sun Temple, courtesy of the Open Research Content Archive (ORCA))
(Bistro, courtesy of the Open Research Content Archive (ORCA))
(Sponza Atrium GLTF, courtesy of Crytek/Themaister)