Home

Balder gets donation from NDepend

Today the Balder project was lucky enough to get a donation from NDepend. Yet another tool that will be used to improve the code quality of Balder.

Thanks a lot to the people at NDepend for the donation.


Currently rated 1.0 by 1 people

  • Currently 1/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Categories: Silverlight | 3D | Balder
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Balder - 0.8.8.9 very close

Its been a hectic week - but finally most of the pieces are falling into place for the next release. There is only a couple of minor features I want to add before calling it a release. Meanwhile, I've updated the samplebrowser and released it as a sneak peak. I've replaced the Material Picker sample with a Material Editor were you can actually edit all the properties of the materials and also the lights added to the scene.

Here's a screenshot of how it can look like when configured with all features enabled:


If you're having trouble with the SampleBrowser on Safari or Chrome on the Mac, this is something I'm investigating. I've tested it with all browsers on Windows and Mac, but these two had some issues when textures were involved on my machine. Will look into it more carefully before releasing the next version. The odd thing though, it worked with the samplebrowser compiled as debug.


Currently rated 5.0 by 5 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Categories: Balder | C# | Silverlight | 3D | .net
Post Information: Permalink | Comments (1) | Post RSSRSS comment feed

Clarifying Balders feature set

Hopefully I'm not forgetting anything (probably am) - but below is a clarification of what features Balder has.


Coordinate system

Balder uses a left-handed coordinate system - currently there is no way to change this, but there are plans for opening up for any coordinate system.

Nodes

  • Interaction - one can enable interaction on any nodes and they can be interactively manipulated during runtime
  • Position coordinates
  • Rotation coordinates, in angles for each axis
  • Scale coordinates
  • Hierarchical rendering of nodes

Scene

  • A Scene contains objects, any Balder object implementing the interface INode; Lights, geometries, sprites

Viewport

  • Defines a clipping area on the screen, coordinate relative to its container

View

  • Camera
    • Position
    • Target
    • Field Of View

Sprites

  • Flat image based objects that exist in 3D space - they are rendered along with other 3D content and positioned and scaled correct according to their 3D space position.

Geometries

  • Box - simple box with dimensions
  • Cylinder - top and bottom dimensions can be specified independently
  • Ring - inner and outer circle dimensions can be specified independently
  • ChamferBox - simple box with a chamfer segment
  • HeightMap - a plane that consist of a set of vertices (points) that can be manipulated by its height
  • ArbitraryHeightMap - a derivative of HeightMap, but its plane is arbitrary
  • Mesh - a complex mesh which can be loaded from a file

Other objects

  • Container - not renderable itself, but can contain any Node in it - hierarchically

Assets

All data loaded from disk or elsewhere is known as Assets. There are Asset loaders for file types, you can even create your own Asset loaders quite easily. For Silverlight, there exist today a limitation which only allows loading of assets found in the XAP file - meaning that any asset added to the project must be a Resource in the XAP file. This is being worked on and will in a future release be more flexible.

  • ASE file - supports 90% of the Autodesk Ascii Scene Export format for 3D objects
  • Experimental support for Demoniak3D format
  • JPEG, PNG for Images

Assets are cached in a content manager, which means that if you load the same asset twice, it will clone the first one.

Lighting

  • OmniLight - non directional light, emits light in all directions
  • DirectionalLight - emits light in a specific direction, without any starting point or ending point
  • ViewLight - view dependent light that will always emit from the view and into the Scene

Rendering

  • Z buffered rendering
  • Flat shaded - single color faces
  • Gouraud shaded - color can be specific on each corner of a triangle
  • TextureMapping - perspective corrected, gouraud shaded.
  • Lines
  • Passive rendering mode - renders only when there are changes
  • Bilinear filtering
  • Face-culling - do not render faces/triangles facing away, can be controlled via Materials
  • Frustum-culling - objects not inside view will not be rendered - increases performance a lot

Materials

  • Diffuse color
  • Diffuse map
  • Ambient color
  • Specular color
  • Reflection map
  • Opacity for the different maps can be specified

Imaging

  • Supports PNG and JPEG
  • For textures, you must use images with dimensions being power of 2 (2,4,8,16,32,64,128,256,512,1024 and so on)

Input

  • For Silverlight; mouse events are supported (MouseEnter, MouseLeave, MouseMove, MouseLeftButtonDown, MouseLeftButtonUp)
  • Manipulation events for all Nodes to make it easier to interact with objects

Debug visualization

  • Bounding information
  • Show vertices

Statistics

  • Rendering timing
  • Amount of faces being rendered
  • Amount of objects being rendered

Execution

  • Actor system with statemachine for actors in the scene
  • Game - base class for any game

Silverlight / Windows Phone 7 specifics

  • Full XAML support - you can declaratively do everything that Balder can do in XAML
  • Specific CoordinateAnimation that can be used in storyboards for animating properties on Nodes
  • NodesControl / NodesStack - databindable controls that be bound to any source with NodeTemplate to specify its representation on screen. Similar to ItemsControl found in Silverlight.


Currently rated 4.7 by 3 people

  • Currently 4.666667/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Categories: Balder | Silverlight | C# | .net | 3D
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Balder - vertex colors

I've been working lately on a demo that is for gaming a lot more realistic than the spinning teapot or box that one sees in the sample browser for Balder. A friend of mine Peter Rosenlund, an excellent graphics artist, gave me a 3D model of a city that I can use for that (thanks a lot!!).

In the 3D model, he had applied static lighting manually in 3DSMAX by painting the Vertex colors - a feature I had not implemented in Balder. After a few hours yesterday and this morning, I got it all up and running and I must say it looks kinda nice.

Balder, rendering city without vertex colors applied:

Balder, rendering same city with the vertex colors applied:


Currently rated 5.0 by 4 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Categories: Balder | C# | Silverlight | Balder | .net | 3D | 3D | C# | .net | 3D
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Balder 0.8.8.9 coming

Things are moving fast these days with Balder and I am closing in on the next release already. Keeping up with my target pace.

At this point these are the things already done or is in progress for the next release:

  • New Skybox, utilizing built in Silverlight perspective projection, which can be hardware accelerated
  • Perspective correct texture mapping - previous version had only affine texture mapping
  • Bilinear filtering for texture mapping
  • Performance boost for the entire rendering pipeline
  • Better, faster and more accurate lighting
  • Subpixel rendering
  • Vertex-shader like functionality for SIlverlight
  • Multiple "Games" in one page
  • Multiple textures during rendering
  • Semitransparent / alpha-channel support for texture mapping
  • Introducing a control for no-game centric applications; Content3D
  • A lot of bugfixing


Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Categories: Silverlight | Balder | 3D
Post Information: Permalink | Comments (2) | Post RSSRSS comment feed

Balder on Windows Phone 7

After a couple of days of work - actually more like a couple of hours over a couple of days (sneaking away during vacation to feed my computer abstinence), I've managed to port Balder to Windows Phone 7, a couple of quirks needed to be fixed - like this one.

For now it uses the same software rendering engine as the Silverlight one. Needless to say, its not exactly the most optimal solution, but at least it proves that most of the code runs across both Silverlight and Windows Phone 7 without doing much to it.

The next goal is now to implement a fully hardware accelerated version of Balder for Windows Phone 7, using Xna.

Wish me luck. :)


Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Categories: Silverlight | Balder | 3D
Post Information: Permalink | Comments (2) | Post RSSRSS comment feed

Balder 0.8.8.7 out


I promised a release last month, but I had to do surgery and got a bit sidetracked with feeling sorry for myself being in pain. Anyhow, all is good and finally got the release out the door.

Its been almost 6 months since the last release. So this better be good. :)

The following are as complete a list I could compile of whats new and improved, btw. you'll find the new release here. A new version of the SampleBrowser can be found here.


Performance improvements

  • Scanline renderers has improved quite a bit
  • Lighting calculations
  • NodesControl
  • Startup improvements
  • Content caching - loading the same content twice will only clone existing in cache
  • Color class - conversion plus operations are rewritten, introduced ColorAsFloats
  • Dependency properties now represented as Property<> with caching in it

Bugfixes

  • World matrix + general matrix fixups
  • NodesControl fixed, one can now nest these, plus a massive performance improvement during databinding using the ItemsSource.
  • Mouse events actually working - 0.8.8.6 had quite a few bugs with this, they are pixel perfect
  • PivotPoint fixed - working recursively
  • Completely rewritten rendering pipeline for stability, expandability and performance
  • Memory leaks in mouse event handling
  • Fixed Asset handling system - had a few bugs in it. Still has to revisit this.
  • Parsing of ASE files now use invariant culture all over the place. Had a couple of places it didn't.

New features

  • Manipulation events on objects, implemented using mouse events.
  • They contain more detailed information about the object being manipulated, such as material information. Also, the events are not like the mouse events, they actually contain delta information about the manipulation occuring.
  • Tooltips, there is a property on all objects called Tooltip, you can create tooltips as you please, as you'd do with the TooltipService in Silverlight for other objects. The TooltipService will not work, hence the specialized property for it.
  • DirectionalLight - basic directional lighting
  • ViewLight - lighting that is "attached" to the camera/view
  • ArbitraryHeightMap - heightmap that can have its corners placed arbitrarily
  • SmoothingGroups implemented
  • New ASE parser - supporting multiple objects, world matrix. Also a lot faster.
  • Ring - geometry type
  • Started implementation of a ChamferBox - very basic at this point
  • Passive Rendering, will draw in wireframe during interaction and flip to full rendering when interaction has stopped. When no interaction, it will not render, Balder goes idle.
  • Pausing - for pausing everything.
  • Grabbing a frame from the Display can now be done
  • Container for renderable nodes - has its own world coordinate system that can be manipulated, lights can't be placed in this container.
  • BubbledEvent system for events that needs to bubble up in the hierarchy
  • Messenger system for decoupling and stability
  • IGeometryDetailLevel - basically only used for Passive rendering at this point
  • Geometry artifacts such as Face, Vertex and so forth are now classes and has been generalized. Its now up to the implementing platform to create specialized versions of them.
  • Removed MEF and introduced a specialized TypeDiscoverer instead.

Development environment

  • Changed to Visual Studio 2010
  • Build server up and running with a more complete Balder.build file for continuous integration

Breaking changes

  • IGeometryContext does no longer hold the geometry data directly, introduced something called IGeometryDetailLevel. One can get the full detail level, which is the default (and only for now), by calling the method GetDetailLevel() on the IGeometryContext. In addition, any Geometry has a property called FullDetailLevel for convenience.
  • Mouse events has been specialized - they are named the same as one is used to from Silverlight, but the MouseEventArgs has been "duplicated" in Balder.Core.Input. The reason for this is that the Silverlight class for this is sealed and does not have a public constructor, and the mouse event handling needs to handled in a special manner in Balder. Also, the events are now bubbled as well through the geometry hierarchy.


Currently rated 5.0 by 2 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Categories: .net | Balder | Silverlight | 3D
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Balder - Licensing

Today Balder is licensed under the Microsoft Permissive License.

I am preparing these days to introduce more platforms, specifically the iPhone, iPad and Windows Phone 7 Series, but want to do a review of the license for the project. I would really love some feedback on this subject, as I have really not landed anything.

My thoughts for now is as follows: Change to a triple-licensing model.
Keep the existing Microsoft Permissive License for the Silverlight version, and not change it at all. Introduce 2 other licenses for the new platforms being added, one commercial license and one open source license. For the open source license for the new platform additions I have been pondering about GPL.

As for the commercial license, I also want to look at pricing, which is also a subject I have yet to decide on. My initial thoughts has been to have a per platform license and a discounted bundle price for all platforms. In addition I've been considering a per developer license, and discounts for 5 developers and a enterprise license for unlimited number of developers. I am not sure what price range to have for this, so feedback for this would be great as well. The numbers I've been toying around with is $200 for a bundle license with 3 platforms in addition to the free Silverlight version (iPhone, iPad, Windows Phone 7) per developer.

Also worth mentioning, in addition to the above mentioned platforms, Xna and OpenGL will get focus as well, and also looking into implementing a hardware accelerated Silverlight version utilizing WebGL for those browsers supporting WebGL. Another thing is added focus on cross platform work for making sure Balder runs on Moonlight.

 

If you feel you have input on the subjects above, please go here and enter the discussion. 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Categories: 3D | Balder | C# | Silverlight | XNA
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Balder - Upcoming release

Its been some 4 months since the last official binary drop of Balder and its just about time to get a new version out. The reason for the "hold up" is that I've been quite busy with working 2 jobs; my daytime job and Balder related freelance work at night. Combining that with having a family of 2 kids and a wife, there simply hasn't been any time left get binaries out there. 

But, as part of the work that I've been doing freelance, Balder has gotten a lot of improvements. Among these are the following : 

- Further optimizations in the rendering pipeline

- Rewritten NodesControl, speed up and more capable

- General cleanups

- More Xml comments for documentation purposes

- Retrofitted some unittests

- Mouse events working properly

- Tooltip for Nodes

- Arbitrary Heightmap - corners of heightmap can be placed anywhere

- New AseLoader with more support than before (Smoothings groups, more objects, more material details, colors++)

- Rewritten AssetLoader system

- Fixed bugs with primitives

- More samples in SampleBrowser

- Visual Studio 2010 solution + project files

- Optimized lighting

- Added ViewLight - lighting relative to view, basically directional lighting

- Passive Rendering, making the rendering halt unless properties are changed on any object in the scene

- Content caching for faster startups

- A lot of code cleanups for decoupling the platform even more

- Material detection for mouse events 

 

And a whole bunch of other improvements.

The only thing left before a release can be done is to tie together some lose ends and fix a couple of bugs - then its ready for deployment. I'll be sure to post about all the new features and how they can be used in a post when the release is ready.

The next iteration will focus more on increasing code quality, more cleanups, get more documentation up and running, continuous integration server up and running and things that will improve further development on the project. 

Currently rated 4.7 by 3 people

  • Currently 4.666667/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Categories: 3D | Balder | C# | Silverlight
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Balder 0.8.8.6 is out

UPDATE 8th of July 2010 : 0.8.8.7 is out - read more here.

Finally after a couple of months of hard work and polishing the code, API and performance, version 0.8.8.6 ofBalderis out. A SampleBrowser can be found here for viewing most of the features ofBalder.
The features that has changed or is new are as follows:

* Introduced Silverlight in Core, but still maintaining platform independence
- Using core objects directly in Xaml can now be done

* Removed all controls in Balder.Core.Silverlight.Controls - not needed anymore

* Introduced View namespace with IView interface and Camera implementing it

* Viewport has View property insted of Camera

* Moved rendering from a multithread environment to run synchronously on the CompositionTarget. It gives better performance, due to synchronization issues between all threads. Will be revisited in the future.

* New drawing routines, optimized

* Heightmap primitive

* Box primitive

* Rotation, Scale on nodes

* Cylinder primitive

* DebugLevel is known as DebugInfo

* Material system in place

* Support for ReflectionMapping on materials

* Double sided materials

* Sprite rendering with alpha channel

* NodesControl - datadriven nodes control with templating - In Balder.Silverlight.Controls

* NodesStack - datadriven stacking of nodes with templating - in Balder.Silverlight.Controls


Currently rated 5.0 by 10 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Categories: .net | 3D | C# | Silverlight
Post Information: Permalink | Comments (9) | Post RSSRSS comment feed