Visualization Engine for .NET (C# and Visual Basic)
ILNumerics Ultimate VS provides extensive 2d and 3d visualization capabilities. The rendering engine was specifically designed to support the development of interactive technical applications and scientific visualizations using C# and .NET. It has a lot in common with a modern game engine and supports complex scenes and more flexible configuration than its competitors. Its clear and simple syntax abstracts away platform specifics and the low level details of computer graphics - while offering fastest execution speed.
As everything in ILNumerics the Visualization Engine was designed for speed and developer convenience. Definition of visual scenes is based on a flexible and efficient scene graph. A large set of predefined plots and graphs allow for easy authoring and maintenance of your code. Hardware accelerated rendering makes it the fastest visualization technology on .NET (despite others claiming the same ... give it closer look! )
The following features are implemented in the 2d and 3d visualization API:
- Simple setup.
- Simple and efficient scene definition.
- Seamless integration with ILNumerics Computing Engine and its efficient memory management.
- Hardware acceleration: fastest possible rendering, even for dynamic scenes.
- Reusable scenes, MVC model for easy and clear maintenance.
- Multiple driver support, robust auto-selection of OpenGL and GDI+.
- Shader support.
- Clean, transparent multithreading model.
- Transparent memory buffer sharing.
- Interactive rendering and offscreen rendering (png, jpg, bmp, xml), vector graphics rendering (SVG).
- Optimized for scientific data plotting (line plots, surface plots, contour plots)
- Optimized for application development: interactive, extensible, maintainable.
- Dynamic capabilities: everything is updateable at runtime.
The Big Picture
In ILNumerics Visualization Engine, you create a visualization based on its scene graph representation. The scene graph is composed out of a small number of relatively simple node types: points, lines, triangles and labels serve as building blocks. Group nodes allow to arrange and manage multiple objects and to assemble them to complex, reusable components. All plot types in ILNumerics are created this way. ILNumerics handles all memory management for you.
A scene contains specialized group nodes, serving as Camera objects. They allow for displaying naturally looking, plain 3D objects and data. For plotting of technical / scientific data a special PlotCube container is provided. It greatly simplifies the rendering of your data in multiple scales and aspect ratios, adds axes and labels, legends, colorbars, interaction and more.
ILNumerics Visualization Engine comes with a large number of predefined plot types. The collection is extended by more advanced plots in the ILNumerics.Drawing2 toolbox. All plots can be combined and their behavior configured arbitrarily.
The ILNumerics Visualization Engine can be used to create static and dynamic /interactive visualizations of your data. Static bitmap or vector images can be created on any platform .NET runs on. The only package required:
- ILNumerics.Drawing - defines all types, basic shapes, scene graph and complex plot types. Platform independent.
Interactivitiy is based on WindowsForms and GDI+ or OpenGL (default). Reference the following modules/ nuget packages:
- ILNumerics.Drawing - defines all types, basic shapes, scene graph and complex plot types.
- ILNumerics.Drawing.Platforms - for interactive Windows.Forms controls
Even more (faster, higher level) plots and extensions are found in this module:
- ILNumerics.Drawing2 - more and faster plot types, optional extensions toolbox.
In addition, you may add any computing module required for your algorithms (if any). Typically: ILNumerics.Computing, ILNumerics.numpy)
Version 5: referencing ILNumerics modules
Up from version 6 there is no installer anymore. All modules of ILNumerics Ultimate VS are referenced from nuget. In version 5 you find the modules in your installation directory, inside the /bin folder. Note, that in version 5 the module ILNumerics.Drawing.Platforms is integrated into ILNumerics.Drawing. Here, only ILNumerics.Drawing must be referenced.
Visit the Getting Started Guide to learn all details about the setup of a new visualization project.
The Panel Control
The ILNumerics.Drawing.Panel control adds an interactive visualization surface to your .NET app. It is found in the ILNumerics.Drawing.Platforms module, ILNumerics.Drawing namespace. Setup of your project is best accomplished programmatically:
The ILNumerics.Drawing.Panel provides the panel.Scene property. This is the main starting point for defining your visualizations.
A quick start guide for the Visualization Engine is also found in our tutorials section. Or you can start with the overview on the scene graph here to learn how to create your own scenes. The section specifically dealing with plotting & charting objects contains another quick start guide, too.
Our examples section hosts a large number of example projects. You can download them and modify their code in order to learn how they work.