Eduard Maximenko talks about the new features in C3D Vision, the main visualization component, and presents improvements to the tools that have been around for a long time.
Before we get to the point, let me clarify what C3D Vision is. C3D Vision is a cross-platform graphics library (SDK) for visualizing virtually any polygonal geometry. The Vision graphics library is designed for CAD applications. Its key functions are:
- camera control
- model rendering control
- visualization performance control
- interactive tools (manipulators, etc.)
- scene geometry control.
Let us start with the mathematical definition of the model geometry. Note that the generator, which used to be included in the library, is now separated and provided as source code. Why? This is a customer-requested enhancement. Many users who need to filter objects and customize scene rendering have asked for this. So we made the source code open, and you can decide how to use it. It makes product development faster and more convenient.
The diagram shows the basic math definitions that work directly with MbItem to integrate almost any math or visual representation used in MbItem.
We have made some improvements in this regard. In particular, we have merged the object search algorithms. It is much more convenient: now the user can simply create a template to save time and improve the quality of the final product. The figure shows a sequential flow: a math definition of the geometry is converted into its rendering as a scene.
Notice the code that visualizes the math definition.
As you can see, the code is very concise. We are refining the generator to handle more types of geometry objects.
Our next point is the geometric representations. PolygonGeometry has received some minor refinements. This is a powerful polygonal mesh model that can efficiently draw multiple curves in the scene. The key features are dynamic curve creation, curve hide/show, and curve style assignment using curve IDs. We also added new features such as curve colors, curve rendering cutoff thickness, and Z-buffer curve priority.
3D textures are a new type of supported geometry. The Texture3D and RenderPostProcess classes handle textures. To initialize this object, specify a texture image as a bitmap or other image format. Key features:
- get the width, height, and depth of the texture
- check if the alpha channel is available
- rasterization filters and custom texture arrays
- z-buffer priority for curve rendering
What is so important about these new features and textures? The user can adjust the texture rendering in real-time. Shaders are used to do that.
Now let me introduce you to the new and improved tools. The interactive OrientationMarker manipulator has been redesigned. It is used to show the scene orientation. Now it has interactive areas to control the camera.
The manipulator also has some settings such as extending the coordinate axes or the origin. So far there are two manipulator icons available (see the figure).
Another tool worth mentioning is the Explode function. When a model is complicated, exploded views help to understand the internal structure of the model. Sure, there are other ways to "look inside". For example, you can hide some components, but that takes too much time. With C3D Vision's Explode feature, an exploded view is just a click away. This operation is available in two versions: simple and more complex, with more arguments.
The figure shows the simple version with just three basic arguments.
The first argument is the explode flag, the second is the sensitivity (speed of explosion), and the third one is the selection of subassemblies. The last argument allows you to exclude the assemblies you do not want to "explode". In this case, the "explosion" starts at the center of the model.
The second example is more complex because it uses both basic and extended arguments.
The extended arguments control the explosion modes: from the model center, selected component (-s), or assembly (-es). The Subassembly Selection feature specifies the component level in the model tree. You can exclude the top-level components and subassemblies, the components and subassemblies embedded in the top-level objects, and so on. There are also three explosion modes: along the symmetry axis, radial to the symmetry axis, or a combination of the two.
Another handy feature is hiding the min/max body dimensions (see the figure).
We will focus on rendering performance for the rest of the year. Another area of improvement is the object search function. We will reinvent the object search engine and introduce additional functionality. It will better manage the selection cursor, filter the objects, and prioritize the search.
Another item on our to-do list is better documentation. We will focus on this and continue to improve the quality of our software documentation.
Eduard Maximenko.
Head, C3D Vision Development Team, Ph.D. (Engineering),
C3D Labs