Cables, and the road to Outline 2007


Last week I discovered that the next upcoming demo party, Outline 2007, is already helt on May 11. I assumed it was helt begin july, so I would still have enough time to implement all kinds of cool stuff... but apparently that's not the case :|

Izard and I already decided that we're going to Outline and that we're going to create a new 64k to release there. But we only have less than 2 weeks left, so we'll have to do with a bit less cool stuff...

Anyway I already gave a running build of all the tools to Izard, so he can start working on some art. Last week I've improved the renderer a bit (using a Pre-Z pass, and shorter pixel shaders) and this weekend I've implemented support for lofted NURBS curves. Izard wanted a way to create organic cables. We can now create those by simply drawing NURBS curves in Maya. It took quite some effort to implement this, but it works great already.

Hopefully Izard can create some good looking stuff with it, I've only been able to create knots and crappy splines with them :)

Anyway, next two weeks will be used for fixing irritating bugs, adding more cool post effects, and probably optimize everything a bit.



Procedural shapes are now fully supported by nerve. I've implemented support for them in the viewport renderer, which was the last thing to do in order to actually use them. As an experiment I made this nice flower out of procedural shapes (8 of them).

Anyway, have a nice Easter! :)

Proceduralness galore


Last week I worked a bit on a new type of mesh for nerve. Next to the way too basic primitive mesh (which could only generate spheres, cubes, planes and cylinders), I implemented a procedural mesh. This mesh has a parameter named "formula" in which is simply a piece of text holding formulas (or formulae?) for the x,y,z,u and v components of the mesh. Generating this mesh is just a matter of evaluating this formula for different values for s and t, my loop values.

Anyway, I wrote a special formula language for this purpose: Funk. Here's a piece of Funk code for the image to the right:

// my crappy sphere for testing, uses s, t and pi

var radius = (1 + 0.2 * cos(<s>*20*<pi>) * sin(<t>*20*<pi>));

var x = radius * sin(<s>*<pi>*2) * sin(<t>*<pi>);
var y = radius * cos(<s>*<pi>*2) * sin(<t>*<pi>);
var z = radius * cos(<t>*<pi>);

var u = <s> * 8;
var v = <t> * 8;

This piece of code is compiled into Funk VM bytecode. This pile of bytecode gets executed by my Funk VM which is running in my demo system and in Maya.

You can already edit and change this formula and see the results in realtime in Maya, but I'm currently working on a separate Code Editor dialog to make everything a bit more easy.

Although everything works quite okay already, I still have to clean everything up a bit more. And I still have to implement support for this into my viewport renderer and stand alone demo viewer. But I'm already quite pleased with the results.

PS, I used the GOLD Parsing System to create my own language. Kudos to Walter for the tip :)

About me

Project overview


Last posts


Partners in crime


ATOM 0.3

Powered by Blogger