Is Balder dead?

Nov 22, 2008 at 2:08 PM
It seems that nothing has happened with Balder for quite a long time... I downloaded the source and the state of the code is in 'disarray' -- most of the samples won't compile and it seems there is a major portion of code missing (The Balder project itself). For the apps that do compile, none of them do anything in the latest version of Silverlight.

I'd hoped to find a usuable 3d engine... but doesn't seem to be the case. So I'm just wondering if it'll be updated or if the owners have put it aside?
Mar 29, 2009 at 2:14 AM
No, the developer's are working with Silverlight 3 to see what they can do for Balder3D.
Mar 29, 2009 at 10:10 AM
Maybe I can clearify a little bit.

With Silverlight 3, Microsoft has introduced hardware rendering.
The version of the engine today is built for Silverlight 2 and has its speed limitations, due to the nature of how Silverlight 2 renders things.

The current version (beta) of Silverlight 3 does not have any real 3D support though, so what we're trying to figure out is how we can utilize pixelshaders to make this a reality. There are some limitations to pixelshaders, we're still in investigation and research mode to achieve this.

Also, as a parallel track, we're looking too see if software rendering is an alternative. With the introduction of bitmap manipulation in SL3, this is a real alternative as well.

Jul 8, 2009 at 12:53 PM

Hey Adept -

SL3 is getting pretty close. Just wondering if you've had any luck with the 3D support for it. Have they helped out any with the limited 3D that was added to SL3?

Jul 9, 2009 at 8:52 AM


the support that Microsoft has added for 3D in Silverlight 3 is too limited. It basically supports the rotation of any element in 3D space, but still the ability to do proper texturemapping and such is off the table. I also did some research into using the pixelshader support, but turns out it is done in software for now and it was way too limiting and didn't support all the things one can do in hardware. 

That being said, in Silverlight 3 they have the WriteableBitmap support, and we are now utilizing that for Silverlight 3 and have our own rendering routines and the speed is quite acceptable. We have still some optimizations to do, and we're quite confident that the software rendering we're doing will be sufficient for handling some complexity.


Aug 29, 2009 at 3:27 PM

Where are the installation directions?

I've downloaded the zipfile and extracted it's content.

There are 4 dll files included,

Do these go in [..\Windows\System32] ---or--- [..\Program Files\Microsoft Expression\Studio 3\en]?

Maybe an Install.txt file should be included in the zipfile?


Aug 29, 2009 at 4:11 PM

Sorry about that.

We will have to get better about these details.

just place the DLLs in the projects folder, or a folder of your desire and add a reference to them by browsing directly.
We are working on WebCasts on how to install and get going with Balder, hopefully they will be up and running next week.


Aug 29, 2009 at 4:34 PM
adept wrote:

Sorry about that.

We will have to get better about these details.

just place the DLLs in the projects folder, or a folder of your desire and add a reference to them by browsing directly.
We are working on WebCasts on how to install and get going with Balder, hopefully they will be up and running next week.


 Thanks for your reply  :)

Just a note, I tried putting them into [Win\System32] and referencing them from there,so far that seems to be working fine (but I haven't tried building anything yet)

I'll keep you posted

Thanks again


Aug 29, 2009 at 5:14 PM

Good to hear.


Hope you find the project interesting.


Aug 30, 2009 at 1:05 PM

I had planned to get started already, but spent all day yesterday resolving several layout issues with my project.

I think I'm ready to move forward with incorporating Balder into the project, but have a couple basic questions.

First and most troubling.... I haven't seen any comments or statements that Balder does not break the cross-platform design of Silverlight? I need to know for sure that using Balder will not limit my web application to specific browsers or operating systems? (This may be something the team needs to put front and center in the introduction on the project home).

Secondly.... Is there any documentation for Balder? My project needs the 3D viewport as a component in a container. I haven't seen comments or examples addressing this specific need, but am hoping there is some kind of documentation that can point me in the right direction.

Thank you



Aug 30, 2009 at 4:07 PM

Hi again,

for your first question; cross-platform support. It does indeed work in all browsers both on Windows and Mac. I develop myself on Mac and have tested it on both Windows and Mac. Its been a while since I tested it on Opera, but for Safari, Firefox and IE, you are safe.For Moonlight and Linux it will probably not work at the moment, this is mainly because the state of the Moonlight plugin is probably not supporting all the features we're using of Silverlight. I haven't gotten around to test it on Moonlight yet though, so I am not 100% sure that it doesn't work.

As for your last question regarding containers and being able to specify were to render. For now it is automatically discovering the best place to render, which is pretty much the first container inside your page. This is something we're working on giving more flexibility, we want to have a specific control that acts as the 3D viewport. Hopefully we'll get there soon.

When it comes to documentation, we haven't really had the time to get around to this yet. For now the only documentation we have is a couple of tutorials on the site, this is also something we want to improve by generating a CHM file from the source. We are closing in on the beta stage of the project and will start focusing on these things then.

Please don't hesitate to drop me an email or start a discussion here if there is something we can help out with or there is something vital missing that we can fix fast. For the control thing, I might be able to look into it during the coming week, can't promise anything as I am a bit swamped with a couple of deadlines, but I'll give it a shot.



Sep 1, 2009 at 3:58 AM

OK....  I've got my first Balder app running in Internet Explorer.

After many problems, (the worst of which is Visual Studio permanently breaking working Silverlight3 projects created in Blend3)

I think this is about as "bare-bones" as you can get, so would probably be a good beginer starter pack. I kept wishing the tutorial had one. The tutorial leaves out a few critical using statements, and fails to tell you that you can not make an ASE file in the Assets folder into a resource in Blend3.

You have to open the project in VS and ONLY set the ASE file to build as a resource, THEN save the project WITHOUT building it. Then re-open it in Blend 3 to build and run it. This seems to be a VisualStudio problem unrelated to Balder.  It started occuring after I installed [Silverlight 3 Toolkit July 2009.msi] and [Silverlight3_Tools.exe]

After that every time I tried building the project in VS, Internet Explorer kept telling me to install Silverlight. I could never figure out what was getting broken. If someone could explain this I would sure appreciate it.

It's basically the "teapot tutorial" with Amy the chimp from Blender instead of a teapot. I've got it in a zipfile, if there is someplace I can upload it

Thanks everyone for your help so far!


Sep 1, 2009 at 8:29 PM

Great to hear that you managed through all the obstacles and thanks for your input / comments on the tutorials, they are now corrected.

Odd that the resource thing doesn't work in Blend, we'll have to investigate this closer.


For your sample, it would be great to publish it. I've just put up a samples page, so if you just drop me an email (einar _at_ dolittle _dot_ com) with description, credits and the ZIP file, I'll get it up on the page as soon as possible.


Thanks again for using Balder and we hope you find the project worthy your time spent.


Oct 2, 2009 at 4:11 AM

I got through the missing projects and the misplaced dlls...not too big a deal.  I am pretty new to 3D modeling.  I have been working with Kit3D for a few months and am dissatisfied with its completeness, and find that Balder is further along.

Now I am in need of some assistance in using this toolkit.  Can I import model files other than .ase files?  I have a dxf file that contains a model I need to use. 

Can I create my own meshes, and can you point me towards the classes that I would use for that?  I have to create some basic shapes, too, and would like some guidance on, say a cylinder or a plane?

Can I avoid using the Game.cs class? 

Any help you can provide would be very welcome. 


Oct 2, 2009 at 7:25 PM


glad to hear you find Balder interesting.

Balder is built for extensibility, so even though we don't have support for DXF at the moment, writing a loader is something that could easily be done.
As for creating your own meshes, this is also something that can easily be done.

I'll see if I can put together a couple of tutorials this weekend for doing both.

For the release that is out now and current trunk of the repository, the only way of doing things are through a Game class - I have a working version locally that enables one to use a special Silverlight control and hook up events for handling things. But it is far from stabile and needs some work. I'll see how far I can get this weekend with that as well.


Oct 12, 2009 at 12:38 PM

Hi again,

sorry for a really slow answer to your problem. I started working on it last weekend, but slowly found out that I need to change some of the API - or rather, expose something that is not exposed at the moment. Seeing that I was in the middle of a refactoring and at the same time moving the source repository to GITHub, I didn't get the time to finish it. I'll keep you posted with updates when I get things up and running.

Hope this is not to inconvenient for you.

Oct 18, 2009 at 3:51 AM

Thanks for the reply.

Any improvements are welcome...

I am enjoying experimenting and learning how to use Balder.  I do have one request.  I created a CloneableMesh class that allows me to load one model and then clone it by simply copying the geometries in a clone method.  I use one model in many places and it saves some time (I believe) to load one originally from an external source and then to just copy it where ever I need one. 

I will also be trying to import complex there any advice that you can give me on this?

I am still working on dynamically creating meshes.  I saw your note in the tutorials about creating nodes.  I will follow up on that and look at teh source code for the node class. I am truly enjoying the toolset.  Thanks for your hard work and ingenuity. 

Oct 20, 2009 at 7:18 AM


sorry for the late answer. 

Glad you're enjoying Balder. The cloning option is something we _MUST_ implement on the Node level. :)  Almost strange we haven't done that already. I'll put it up on the backlog.

As for complex models, if you're using the ASE loader, it has a limit today due to parsing problems, that limits it to one object. In your 3D modelling software, you can merge all the objects in the scene and output as one and it will work OK. The Demoniak3D XML format on the other hand, works fine with multiple objects. The only problem I've seen with that, is that the plugin I used for 3DSMAX did have some export errors resulting in some cases were the 3D models didn't look like they did in 3DSMAX. But not for all.

We're hard at work these days, and will hopefully start pushing some new stuff and changes soon.

Oct 21, 2009 at 8:42 PM

I forgat to include this in my last post.  Here is how I solved the clone question...

using Balder.Core;
using Balder.Core.Geometries;
using Balder.Core.Math;
using Balder.Core.Runtime;
using Balder.Core.Interfaces;
using Balder.Core.Services;

namespace Balder.Core.Geometries
    public class CloneableMesh : RenderableNode, IAsset
        private Geometry[] _geometries;
        private readonly IAssetLoaderService _assetLoaderService;

        public CloneableMesh(IAssetLoaderService assetLoaderService)
            _assetLoaderService = assetLoaderService;

        public void Load(string assetName)
            var loader = _assetLoaderService.GetLoader<Geometry>(assetName);
            _geometries = loader.Load(assetName);

        public override void Render(IViewport viewport, Matrix view, Matrix projection)
            for (var geometryIndex = 0; geometryIndex < _geometries.Length; geometryIndex++)
                var geometry = _geometries[geometryIndex];

                var localWorld = World * geometry.World;

                geometry.GeometryContext.Render(viewport, view, projection, localWorld);

        public int TotalFaceCount
                var faceCount = 0;
                for (var geometryIndex = 0; geometryIndex < _geometries.Length; geometryIndex++)
                    var geometry = _geometries[geometryIndex];
                    faceCount += geometry.GeometryContext.FaceCount;
                return faceCount;

        public CloneableMesh clone()
            CloneableMesh _mesh = new CloneableMesh(_assetLoaderService);
            _mesh._geometries = (Balder.Core.Geometries.Geometry[])this._geometries.Clone();
            _mesh.IsVisible = this.IsVisible;
            _mesh.Name = this.Name;
            _mesh.Position = new Vector();
            _mesh.Position.W = this.Position.W;
            _mesh.Scale = new Vector();
            _mesh.Scale.W = this.Scale.W;
            _mesh.Scene = this.Scene;
            return _mesh;

Oct 22, 2009 at 7:08 AM


Thanks for your code. Great reference for us when implementing the cloning.