Table of content
Person/Organisation | ROLE |
---|---|
HARFANG®3D | Project Owner |
Robert PICKERING | Tech Consultant |
Pierre GORIN | Project Manager |
Audrey TELLIEZ | Program Manager |
Florent HUREAUX | Tech Lead |
Alexandre BOBIS | Software Engineer |
Salaheddine NAMIR | Quality Assurance (QA) |
Person | DOCUMENT |
---|---|
Pierre GORIN (Project Manager) | Communication Plan |
Pierre GORIN (Project Manager) | Project Calendar |
Audrey TELLIEZ (Program Manager) | Functionnal Specification |
Florent HUREAUX (Tech Lead) | Technical Specification |
Salaheddine NAMIR (QA) | Test case |
Salaheddine NAMIR (QA) | Test plan |
HARFANG®3D builds real-time 3D tools for industry professionals. They enable the implementation and deployment of 3D solutions (HMI 1, VR/AR, simulation, interactive 3D), regardless of development language or platform constraints.
They meet two different types of demands :
- HARFANG® Studio is the ideal 3D editor for creating real-time scenes and animations that match your design vision. It can handle the entire 3D graphics workflow in a simple and optimised way, without compromising integration with other development environments.Everything that works in HARFANG®3D Studio is compatible with their HARFANG®3D Framework and its supported programming languages.
- HARFANG® Framework is an easy-to-adapt, cross-platform, multi-language, powerful and optimized 3D visualization engine written in C++ and accessible via an open API 2 in C++3, or high-level programming languages such as Python, Golang, and Lua.
Company distribution
Person | Company role | Contact |
---|---|---|
François Gutherz | CTO & Project leader | francois.gutherz@harfang3d.com |
Emmanuel Julien | Lead developer | emmanuel.julien@harfang3d.com |
Thomas Simonnet | Developer | thomas.simonnet@harfang3d.com |
The goal of this project is to implement the langage F# in FABGen4. Following this, it will allow us to create a binding between our 3D engine, written in C++3, and the F#5 programming language. This binding will allow us to use our 3D engine in a F# environment and access its features from an F# program.
To create a binding between our 3D engine, written in C++3, and the F#5 programming language. This binding will allow us to use our 3D engine in a F# environment and access its features from an F# program.
To achieve this goal, we will need to research different approaches for creating bindings (Fabgen4 in is case), select appropriate tools and libraries, and implement the binding according to our chosen approach. We will also need to test the binding to ensure that it is working correctly and meets the requirements of our project.
Below is a diagram of FABGen4 and existing bindings. The F# binding will be added to this diagram. We need to apply the same principle as the other bindings to F#.
F0 = Mandatory; F1 = Important; F2 = Secondary;
Function | Criteria | Flexibility |
---|---|---|
Run FABGen to generate biding in CPython, Lua and Go | Use FABGen | F0 |
Examine how th GO, Lua and Python binding works | Use FABGen | F0 |
Create F# functions | Inspire by the unit test | F1 |
Create tests functions | Base on ("basic_type_exchange.py", "function_call.py") | F1 |
Convert F# code to C or C++ code | Use C API for convert | F1 |
Build HARFANG®3D as an F# library | Create code | F2 |
Aurélia is an F# developer. She writes her code in F#. But HARFANG®3D doesn't support F#. So she must find a way to convert her code.
Jean-Marc is a Python developer and he works has an IT developer in a services company. He would like to make a wallpaper for a project. So he made a code in python in the HARFANG®3D Framework application. And then he put the code given by HARFANG®3D Framework into HARFANG®3D Studio.
Baptiste is an IT student and learns F# at school. and he would make an app game by his hands. So he use F# to code his game and he use FABGen to bind the F# into C++ and put it in HARFANG®3D Studio.
Nathalie is a Python developer and she wanted to create a game application in python. So she put in HARFANG® Framework a code in python. And she has taken the code given by HARFANG®3D Framework. And also put it in HARFANG®3D Studio.
Add F# language in HARFANG®3D.
- add F# to FABgen
- build the F# binding for HARFANG
- build a F# (or DOT .NET) version of the HARFANG library
If we forget to create a binding for a function, it will not be possible to use it in F#
Footnotes
-
A Human Machine Interface (HMI) is the point of contact between users and machines. These interfaces allow users to control machines, monitor processes and, in some cases, intervene. ↩
-
API (Application Programming Interface) is a software interface which makes it possible to "connect" a software or a service to another software or service in order to exchange data and functionalities. ↩
-
C++ is a programming language: it is used to write computer programs, for example to create mobile applications or video games. C++ was created from the C language, whose functionalities it extends: C++ makes it possible to do object-oriented programming. ↩ ↩2 ↩3 ↩4
-
FABGen is a set of Python scripts to generate C++ binding code to different languages.
It was written as a SWIG9 replacement for the Harfang Multimedia Framework. Its role is to prepare an interface between the HARFANG object code and the DOT.NET VM. ↩ ↩2 ↩3 -
F# is a functional, imperative, object-oriented programming language for the . NET PLATFORM. F# is developed by Microsoft Research. ↩ ↩2 ↩3
-
Python is the most widely used open source programming language for computer scientists. It has become the leading language for infrastructure management, data analysis and software development. ↩
-
Lua is a free, reflexive, imperative scripting language. It is designed to be embedded in other applications to extend them. ↩
-
Go is an open-source, statically typed programming language. This programming language includes tools for safe memory usage, object management, rubbish collection and static typing along with concurrency. ↩
-
SWIG (Simplified Wrapper and Interface Generator) is an open source software tool for connecting software or software libraries written in C/C++ with scripting languages such as: Tcl, Perl, Python, Ruby, PHP, Lua or other programming languages such as Java, C#, Scheme and OCaml. ↩