The new version of Ab3d.PowerToys brings you even more useful classes and utilities for WPF 3D.
The sample application that comes with the library is again a very good demonstration of capabilities of the WPF 3D engine.
The main new part of the library is added support for creation of basic 3D objects and 3D lines.
Now the library contains all the essential parts that are needed with 3D WPF development:
- advanced cameras
- camera controllers
- simplified mouse events handling on 3D objects (improved in beta 2)
- basic 3D models (new in beta 2)
- 3D lines (new in beta 2).
The following basic 3D objects can be created: Plane, Circle, Box, Pyramid, Sphere, Cone and Cylinder.
Advantages of the 3D models in Ab3d.PowerToys are:
- The biggest list of supported 3D objects with lots of propertes for customization of objects.
- Many different ways to create 3D objects: in XAML with Visual3D classes, in code with Model3DFactory class (to create GeometryModel3D objects) or in code with classes under Ab3d.Meshes namespace to create MeshGeometry3D objects.
- Highly optimized code to make the creation as fast as possible.
3D lines can be created from code with Ab3d.Models.Line3DFactory. The methods in the Line3DFactory return 3D lines as GeometryModel3D objects. This means that you can add 3D lines to the existing Model3DGroup.
The lines can be also created as Visual3D objects with the following classes: LineVisual3D, MultiLineVisual3D, PolyLineVisual3D, AxisVisual3D, ColoredAxisVisual3D or WireGridVisual3D. The visuals can be used in XAML which means that you can see the results in Visual Studio designer.
There is also a Ab3d.Models.WireframeFactory to create wireframe objects from existing 3D models. WireframeFactory also contains methods to create lines for 3D model normals.
Because WPF does not natively support 3D Line, the line must be created with 3D model that consists of two triangles. The positions of the triangles depend on the position of the camera and size of Viewport3D. This means the code that draws the line must constantly check if the camera was changed, the parent Viewport3D or Visual3D is changed or the parent is not visible any more. This process can normally affect performance. The implementation in Ab3d.PowerToys library is designed in such a way that the performance impact is minimal. The code caches many properties and updates only those lines that need update. When the update is needed the new MeshGeometry3D is not rebuild from stretch but instead only positions are changed. It also checks if the lines were removed from the visual and acts accordingly. There are a few 3D lines implementation for WPF, but the highly optimized lines updater makes this implementation the most advanced.
Important:
The Ab3d.PowerToys will be available as a standalone product.
It will also be available for free with Ab3d.Reader3ds Pro version (existing customers of Ab3d.Reader3ds Pro will also get the license).
Beta notice:
The current version of Ab3d.PowerToys is in Beta 2. That means that it is almost feature complete but is not yet fully tested and documented. This version will expire on 31th January 2010.
Roadmap:
- Beta 2 - start of November 2009
- Release Candidate - middle of November 2009
- Release - start of December 2009
To read more about Ab3d.PowerToys see Ab3d.PowerToys web page.
The Ab3d.PowerToys Beta 2 and the samples can be downloaded from my Downloads page.