Greatly improved version of Reader3ds available

by abenedik 4. December 2007 22:20

Programming with 3D objects has never been easier!

With Ab3d.Reader3ds library the models and animation data can be simply imported into WPF (.Net 3.0) application. The library adjusts the model data so they WPF applications they look as in the modeling application.

All the imported models can be accessed by their name (with NamedObject property) - as they were defined in 3D modeling application.

The integrated Transformer3ds class simplifies transformations on the objects - rotation, translation, scale. Creating custom animations can be done really easily.

Playing animations stored in 3ds file is also very simple. The Reader3ds has integrated Animator3ds helper class. The only thing to do is to set the duration of the animation or the number of frames played in a second and than calling the DoAnimate method in a Timer or Render event..

Work with 3D content in WPF is now as simple as using gif or jpg images.

The following image shows sample R2D2 model rendered without using smoothing groups (left) and with using them (right - new in v4.2) - some edges are sharp and some are smooth.
Improved rendering quality with uning smoothing groups

New in version 4.2:

  • Support for smoothing groups - also automatically support flat and shaded models. This greatly improves rendering quality.
  • Added Shading property to define None, Flat, Smooth or SmoothingGroups shading. Default value is SmoothingGroups that uses the Smoothing Groups values stored in 3ds file to define which edges are smooth and which are flat. This option produces the results as in the 3d model designer. However if you wish to force the flat or smooth looking objects choose either Flat or Smooth (before reading the 3ds file). Also if performance is much more important than rendering quality choose None.
  • GetFrame can now get a frameNo as double to render the models between frames (for smoother animation)
  • Fixed bug when reading from reasource and 3ds file contains texture files (exception was thrown).
  • Also now it is possible to set TexturesPath property to url of the textures (http://...) or to the application resources ("pack://application:,,,/XAMLBrowserApplication1;component/models")
  • Added GetCameraForFrame method that gets the camera for the desired frame number - this enables creating animated cameras
  • Fixed reading material colors for some older 3ds files (in previous version reading crashed with "Non-negative number required." exception)
  • The previous version has wrongly convert position from 3ds coordinate system to wpf coordinate system. The difference is that the x axis now points to the right instead of the left and the z axis points to the viewer and not away from it. This version by default uses new coordinate system, but if your application depends on the old one, you can simple set this property to true. But note that this can only be a temporary solution. Set UseOldCoordinateAxis property to true to use old coordinate axis.
  • Added Materials property - Dictionary that can be used to access all the materials defined in 3ds by their name.
  • Added support for animated lights (PointLight - positin, color; SpotLights - position, direction, color)
  • Added GetExpirationDate method
  • Added TargetViewport - gets the viewport that was used in ReadFile
  • Added Animator3ds - helper class to simplify playing animations stored in 3ds file

Changes and fixes in Transformer3ds:

  • Fixed isAditive parameter for Scale and Translate transform
  • ObjectName can be now also Model3DGroup and not only Model3DGeometry
  • RotateObjects can now be called with RotateTransform3D - this enables setting custom center of rotation (instead of center of object)
  • Added methods without object name - to translate, rotate and scale all the objects and lights (as using constant Ab3d.Reader3ds.RootModelGroupName for objectName).
  • Added Transformer property to Reader3ds - this simplifies transforming the read objects

Reader3ds, four sample applications, help file and Viewer3sd are available from

Tags: , , ,


Improved version of ReaderSvg library available.

by abenedik 14. September 2007 16:20

New in ReaderSvg library v1.3:

  • Fixed reading text for svg files created in Inkscape.
  • Added SvgBounds property (bounds of the elements in svg). Set InnerWidth and InnerHeight as obsolete.
  • Improved read svg elements so they fit correctly into parent object. For example with previous version some svg files produced Viewboxes that exceeded (or were smaller) the size of parent StackPanel. Now the Viewbox should fit correctly into StackPanel or any other element.
  • Now FillRule for Path is set to NonZero or EvenOdd.
  • Fixed some bugs that crashed the ReaderSvg.

New version is available with ViewerSvg from

Tags: , ,


Added Paste2Xaml application and Ab2d.ReaderWmf class library

by abenedik 23. August 2007 16:20

Paste2Xaml is a WPF application that can read Windows metafiles (wmf), Enhanced Metafiles (emf) or get matafile objects from clipboard and can convert it into xaml. It can also export embedded images that can be used in exported xaml. The metafiles can also be imported at runtime with new Ab2d.ReaderWmf library.

The following diagram shows how it is possible to import 2D vector drawing from almost any drawing application into WPF world:

Ab2d Overview diagram

Paset2Xaml Screenshots:

Main Paste2Xaml window

Main Paste2Xaml window - a graph from Microsoft Excel 2003 has been pasted to the application (the application is already showing a WPF representation of the graph)

Export Dialog

Export Dialog - showing the xaml text and all the export options for a metafile with 2 embedded images.

The graph from Microsoft Excel 2003 shown in XamlPad

The graph from Microsoft Excel 2003 shown in XamlPad.

See for more.

Tags: , , ,


New ViewerSvg - SVG to XAML converter application available

by abenedik 26. July 2007 00:00

ViewerSvg is a svg to xaml converter application. It is using the Ab2d.ReaderSvg library that imports objects from svg file into WPF.

Tags: , ,


New version of ReaderSvg and ViewerSvg published.

by abenedik 9. July 2007 00:47

ReaderSvg has now improved text support. In previous version all text were converted to paths. This made simpel svg files with text very complex in WPF. In new version text that do not have some special stroke or fill is converted into simple TextBlock. There is also a new property UseSimpleText that can forec conveting text into TextBlock even if text has some special storke or fill. The svg reading is also imporved.

ViewerSvg has also been slights improved.

See for more.

Tags: , ,


New version of Reader3ds and new RobotArm Sample 3D application available

by abenedik 11. May 2007 00:45

Version Reader3ds 4.1 is finally published.

The most important new feature is that the new Reader3ds is capable of reading objects hierarchy. That means that for example if in a 3D body objects we rotate the head, the eyes and nose will be rotated accordingly. This really enables great manipulations with 3D objects. To make this even simpler a Transformer3ds class has been added to the Ab3d namespace. This class contains methods that make transforming of 3D objects really very simple. For example the following line of code rotates of object named as "Joint2" in RobotArm 3D scene for 45 degrees:

robotArmTransformer.RotateObject("Joint2", new AxisAngleRotation3D(new Vector3D(0, 0, 1), 45));

To demonstrate all those new features a new sample 3D application is available - RobotArm shows how simple is to create complex 3D transformations and animations.

And this is not all. With Sandbox I managed to create an online and offline help (chm file). The online help can be seen here. The chm help file is included in the package. This way using features in Reader3ds and Transformer3ds should be easier.

I hope you find this interesting - you are invited to visit the - see Reader3ds section.

Tags: , , ,


Design user interface of your WPF application in your favorite drawing application- with new ReaderSvg library

by abenedik 23. April 2007 22:12

Imagine the following:

1.) Draw the whole user interface or just some of its elements of your WPF application in your favorite vector drawing application like Adobe® Illustrator®, CorelDRAW®, Inkscape, etc.

2.) Save your drawing into svg file format.

3.) Import your svg file into your WPF application and use it just as any other WPF UIElement.


Simply by importing all elements from svg file into WPF application with Ab2d.ReaderSvg library.

Ab2d.ReaderSvg is a class library that can be used to read svg file and import its elements as WPF UIElements - Canvases, Paths and other shapes. Elements Stroke and Fill data are also imported. Read more about Ab2d.ReaderSvg features and usage on On the site there is also a ReaderSvg sample applications that shows how simple is to create great animated effects, scalable vector elements, triggers to some elements and more. The sample is available with full source code.

Push your applications to the next level - forget bitmaps - use vector elements. And use your favorite vector drawing application to achieve the best results.

Tags: , , ,