Introduction
Welcome to the Tinman 3D Software Development Kit, you are reading the technical documentation.
- If you have any questions or comments, please write to:
- To obtain technical support, please refer to Contact and Support or write to:
- For questions about licensing, please refer to Licencing and Pricing or write to:
This is the Demo Application, rendering content of the Geodata Examples:
Overview
Tinman 3D is a collection of software libraries and stand-alone tools. Its purpose is to analyze, process and visualize 3D terrain data.
The stand-alone tools can be used by end-users to explore and use the features of Tinman 3D:
The software libraries can be used by developers to incorporate features of Tinman 3D into existing applications. They are available in separate editions, which can be used independently:
-
C# (language version 7.3)
-
C++ (language version 11)
Components
The Tinman 3D SDK is composed of several software libraries, stand-alone tools and other executables.
Software libraries are provided in source code form (green) or in binary form (orange). Stand-alone tools and other executables are provided in binary form (blue).
Libraries
Library | C# | C++ | Platform |
---|---|---|---|
Source [2] |
any |
||
A concise bootstrap library that provides common runtime semantics for the C# and C++ editions of Tinman 3D. Full Source Code may be licensed separately. |
|||
Binary |
- |
any |
|
This is the implementation of the Code-X Framework, which is used by the Code-X Processor tool to generate C++, HLSL and GLSL source code from C# source code. Only available with a Source Code licence. |
|||
Binary / nuget |
Binary |
any |
|
Implements asymmetric decryption for licence keys, performs licence checks and unlocks initialization data which is required by other SDK components. This component is provided as a separate binary and cannot be linked into applications. |
|||
Binary / nuget |
Obfuscated [3] |
any |
|
The Core library provides general-purpose functionality and platform-abstraction wrappers for system-specific APIs. This library is Code-X compliant. Full Source Code may be licensed separately. |
|||
Binary / nuget |
Obfuscated |
any |
|
The Terrain library is is the heart of Tinman 3D. It provides all terrain-related features. This library is Code-X compliant. Full Source Code may be licensed separately. |
|||
Binary / nuget |
Obfuscated |
any |
|
The Engine library provides a light-weight engine for real-time 3D applications. Use of the Engine library is optional. This library is Code-X compliant. Full Source Code may be licensed separately. |
|||
Binary / nuget |
- |
any |
|
The Gpu library provides the scaffold for writing GPU programs in C#, following by automatic code translation, for example to HLSL and GLSL. See Code-X Framework for details. |
|||
Source |
- |
any |
|
The Shaders library provides the C# source code for the GPU shaders of Tinman 3D, which are used to generate HLSL and GLSL shader code automatically. This library is Gpu-X compliant. |
|||
Source / nuget |
Source |
any |
|
The AddOns library provides additional functionality and examples for developing applications with Tinman 3D. Use of the AddOns library is optional. This library is Code-X compliant. Functionality is wrapped in separate library components if it requires 3rd-party libraries at build time. For the following features, 3rd-party libraries are only required at runtime, so the functionality is present in this library component: Tinman.AddOns.Assimp Tinman.AddOns.GDAL Tinman.AddOns.OpenFlight Tinman.AddOns.OpenGL Tinman.AddOns.OpenGLES |
|||
… DirectX9 |
Source / nuget |
Source |
Windows |
Plugin for using the Direct3D 9 rendering API with Tinman 3D. This library is Code-X compliant. |
|||
… DirectX11 |
Source / nuget |
Source |
Windows |
Plugin for using the Direct3D 11 rendering API with Tinman 3D. This library is Code-X compliant. |
|||
… DirectX12 |
Source / nuget |
Source |
Windows |
Plugin for using the Direct3D 12 rendering API with Tinman 3D. This library is Code-X compliant. |
|||
… MFC |
- |
Source |
Windows |
An MFC control that hosts an IApplication object. |
|||
… OSG |
- |
Source |
any |
Plugin for using Tinman 3D from within OpenSceneGraph. Not yet available, see Roadmap for details. |
|||
… Qt |
- |
Source |
any |
A Qt widget that hosts an IApplication object. Not yet available, see Roadmap for details. |
|||
… SQLite |
Source / nuget |
Source |
any |
Plugin for using the SQLite database with Tinman 3D. This library is Code-X compliant. |
|||
… Vulkan |
Source |
Source |
any |
Plugin for using the Vulkan rendering API with Tinman 3D. This library is Code-X compliant. Not yet available, see Roadmap for details. |
|||
… WinForms |
Source / nuget |
- |
any |
A .NET WinForms control that hosts an IApplication object. |
|||
… WPF |
Source / nuget |
- |
Windows |
A .NET WPF control that hosts an IApplication object. |
|||
Source |
Source |
any |
|
This is the source code of the Geodata Processor tool. This library is Code-X compliant. Only available with a Source Code licence. |
|||
Source |
Source |
any |
|
The Demo Application showcases many features of the Tinman 3D SDK. This library is Code-X compliant. |
|||
… StandAlone |
Source |
Source |
any |
Runs the Demo Application in a stand-alone window. The re-compiled application requires a licence key to run (User, Site or Academic). This library is Code-X compliant. |
|||
… MFC |
- |
Source |
Windows |
Runs the Demo Application in an MFC window. The re-compiled application requires a licence key to run (User, Site or Academic). |
|||
… Qt |
- |
Source |
any |
Runs the Demo Application in a Qt window. The re-compiled application requires a licence key to run (User, Site or Academic). Not yet available, see Roadmap for details. |
|||
… WinForms |
Source |
- |
Windows |
Runs the Demo Application in a .NET WinForms window. The re-compiled application requires a licence key to run (User, Site or Academic). |
|||
… WPF |
Source |
- |
Windows |
Runs the Demo Application in a .NET WPF window. The re-compiled application requires a licence key to run (User, Site or Academic). |
Dependencies
The following table shows dependencies that exist between the libraries of the SDK. The mnemonics refer to SDK libraries using the first letter of the first two name parts. For example: CF refers to CodeX.Framework.
(X) means that the dependencies only exist because of XmlDoc links. |
CS | CF | TL | TC | TT | TE | TG | TS | TA | TP | TD | |
---|---|---|---|---|---|---|---|---|---|---|---|
CS |
- |
||||||||||
CF |
X |
- |
X |
X |
X |
||||||
TL |
X |
- |
|||||||||
TC |
X |
X |
- |
||||||||
TT |
X |
X |
X |
- |
|||||||
TE |
X |
X |
X |
X |
- |
||||||
TG |
X |
X |
X |
X |
- |
||||||
TS |
X |
X |
(X) |
(X) |
X |
- |
(X) |
||||
TA |
X |
X |
X |
X |
X |
- |
|||||
TP |
X |
X |
X |
X |
X |
X |
- |
||||
TD |
X |
X |
X |
X |
X |
X |
- |
Executables
Executable | C# | C++ | Platform |
---|---|---|---|
Executable [4] |
Executable |
any |
|
The Demo Application showcases many features of the Tinman 3D SDK. This application does not require a licence key to run. |
|||
Executable |
- |
Windows |
|
The Workshop Application is a GUI application that exposes many features of Tinman 3D interactively. This application requires a licence key to run with full features (User, Site or Academic). |
|||
Executable |
- |
Windows |
|
The Licence Bakery is a tool for generating licence key requests. This application does not require a licence key to run. |
|||
Executable |
Executable |
any |
|
The Geodata Processor tool, which imports geodata into Tinman 3D. This application requires a licence key to run (User, Site or Academic). To unlock a content archive, the unlock key is sufficient to run tinmanpc, no other keys are required in this case. |
|||
Executable |
- |
any |
|
The Code-X Processor tool, which runs the Code-X Framework for generating C++, HLSL and GLSL source code. This application requires a licence key to run (User, Site or Academic). |
Framework
Platform Abstraction
Tinman 3D makes use of a compact platform abstraction layer, and contains ready-to-use implementations for popular computing environments:
Platform | C# SDK | C++ SDK | Web SDK | Processor | Demo | Workshop |
---|---|---|---|---|---|---|
Windows |
yes [5] |
yes [6] |
- |
yes |
yes |
yes |
Linux |
v1.0 RC5 [7] |
v1.0 RC5 [7] |
- |
v1.0 RC5 |
v1.0 RC5 |
- |
iOS |
v1.0 RC5 [7] |
v1.0 RC5 [7] |
- |
v1.0 RC5 |
v1.0 RC5 |
- |
Web |
- |
- |
v1.0 RC7 |
- |
v1.0 RC7 |
- |
Android |
- |
v1.0 RC5 |
- |
- |
v1.0 RC5 |
- |
iOS |
- |
v1.0 RC5 |
- |
- |
v1.0 RC5 |
- |
You are not limited to the provided PAL implementations; it is possible to implement your own ones or to modify the existing ones (see Source Code Licence). |
Graphics Abstraction
Tinman 3D routes all rendering through a slim graphics abstraction layer (GAL, see IGraphicsContext). The SDK contains ready-to-use implementations for popular rendering APIs:
Platform | DirectX 9 | DirectX 11 | DirectX 12 | OpenGL 4.1+ | OpenGLES 3.0+ | Vulkan 1.1+ | WebGL 2.0 |
---|---|---|---|---|---|---|---|
Windows Desktop |
yes |
yes |
yes |
yes |
yes |
planned |
- |
Linux Desktop |
- |
- |
- |
v1.0 RC5 |
- |
planned |
- |
iOS Desktop |
- |
- |
- |
v1.0 RC5 |
- |
planned |
- |
Web Mobile |
- |
- |
- |
- |
- |
- |
v1.0 RC7 |
Android Mobile |
- |
- |
- |
- |
v1.0 RC5 |
- |
- |
iOS Mobile |
- |
- |
- |
- |
v1.0 RC5 |
- |
- |
You are not limited to the provided GAL implementations; it is possible to implement your own ones or to modify the existing ones (see Source Code Licence). |
Application Framework
Tinman 3D includes an application framework (see IApplication), which is used by several plug-and-play application widgets (see IWidget). These components are built upon the low-level API of Tinman 3D and implement commonly used functionality.
The following ready-to-use adapters to popular GUI systems are included in the SDK:
Language | Tinman [9] | WinForms | WPF | MFC | Qt [10] |
---|---|---|---|---|---|
C# |
yes |
yes |
yes |
- |
- |
C++ |
yes |
- |
- |
yes |
v1.0 RC5 |
You are not limited to the provided implementations; it is possible to implement your own ones or to modify the existing ones (see Source Code Licence). |
3rd Party Libraries
Tinman 3D has a strong interface-centric design (for example 2D images and 3D models). Custom implementations of these interfaces can be created in order to extend the functionality of the SDK, without having to modify existing binaries.
The following ready-to-use plugins for 3rd-party libraries are included in the SDK:
Library | C# | C++ | Purpose |
---|---|---|---|
yes |
yes |
3D Model Import |
|
v1.0 RC6 |
- |
Physics Simulation |
|
v1.0 RC6 |
v1.0 RC6 |
Physics Simulation |
|
planned |
planned |
Sound Engine |
|
yes |
yes |
Geodata Import |
|
planned |
planned |
Sound Engine |
|
v1.0 RC6 |
v1.0 RC6 |
Physics Simulation |
|
planned |
planned |
Sound Engine |
|
planned |
planned |
Sound Engine |
Roadmap
This is the roadmap of current and future development of the Tinman 3D SDK.
Items with a highlight will be included in the next official release and may be included in an earlier stable build. |
Tinman 3D SDK 1.0 RC4
Missing SDK features
New file format features
New SDK features
- Built-in file format (read)
-
-
GdalShapeFormat (read)
-
- Built-in file format (write)
-
-
ImageFormat.TIFF (write)
-
ImageFormat.PNG (write)
-
ModelFormat.GLB (write)
-
ModelFormat.GLTF (write)
-
ShapeFormat.JSON (write)
-
ShapeFormat.SHP (write)
-
- New SDK features
-
-
Add screen-space reflections to the GPU rendering layer.
-
Add HDR / bloom effect to the GPU rendering layer.
-
- Missing SDK features
-
-
Finish IMaterial.Transmission.
-
Tinman 3D SDK 1.0 RC5
Missing SDK features
Missing documentation content
Support for additional platforms
- Application framework plugin
-
-
Qt Framework / C++
-
- Documentation
- Platform support
-
-
Android / Mobile
-
Linux Desktop
-
iOS / Mobile
-
iOS Desktop
-
- Missing SDK features
-
-
Expose IBrush to Scripting API.
-
Expose
tiles
parameter of IPixelPyramid.CopyTiles to Scripting API. -
Expose result of IModel.Wrap to Scripting API.
-
Expose MapViewWidget to Scripting API.
-
Expose SceneViewWidget to Scripting API.
-
Finish conversion method 2 of IShapeOps.Convert.
-
Finish CopySamplesOp.Blur for HeightmapLayer.Material and HeightmapLayer.Texture.
-
Finish TerrainFeatureLevel.DX12 feature set.
-
Finish MapViewWidget and Tutorial_52_MapBrowser.
-
Finish TextureWidget and expose to Scripting API.
-
Finish IMaterial.Displacement.
-
Finish Tutorial_15_Materials.
-
Finish Tutorial_16_Picking.
-
Finish Tutorial_17_Decals.
-
Finish Tutorial_21_TerrainBrowser.
-
Finish Tutorial_25_Mars.
-
Finish Tutorial_54_TextureBrowser.
-
Tinman 3D SDK 1.0 RC6
Missing SDK features
New file format features
Physics engine integration
Terrain / scene editing
- Built-in file format (read)
-
-
OpenFlightSceneDataFormat (read)
-
SceneDataFormat.CDB (read)
-
SceneDataFormat.GML (read)
-
SceneDataFormat.OSM (read)
-
SceneDataFormat.TDB (read)
-
- Built-in file format (write)
-
-
SceneDataFormat.TDB (write)
-
- Documentation
- Physics abstraction plugin
-
-
Plugin for Bullet Real-Time Physics Simulation
-
Plugin for NVIDIA PhysX
-
Plugin for bepuphysics v2
-
- New SDK features
-
-
Add support for rendering of realtime data to IImage and ImageDecal / TextureDecal.
-
- Missing SDK features
-
-
Finish Tutorial_18_Painting.
-
Finish Tutorial_19_Collision.
-
Finish Tutorial_27_Physics.
-
Finish Tutorial_29_Editor.
-
Finish Tutorial_39_Editor.
-
Tinman 3D SDK 1.0 RC7
Support for web-based platforms
- Graphics abstraction plugin
-
-
WebGL 2.0
-
- Platform support
-
-
WebAssembly / Mobile
-
Planned
The following features are planned but have not yet been prioritized.
-
Plugins for 3rd-party engines / frameworks
-
Advanced GPU render mode
-
Atmospheric scattering
-
Cloud rendering
-
Daytime / nighttime rendering with Sun/Moon position
-
Deferred shading pipeline
-
Ocean / water rendering
-
Ray-traced lighting
-
Wave / spray simulation
-
Weather effects
-
-
Sound effects API
-
Graphics abstraction plugin for Vulkan 1.1 (or newer).
-
MBTiles vector data (pbf) support
-
CityGML 3.0 exporter: SceneDataFormat.GML
-
OpenFlight exporter: OpenFlightSceneDataFormat
-
OGC CDB exporter: SceneDataFormat.CDB