Profile cover photo
Profile photo
Clayworks, 3d modelling software.
Clayworks, 3d modelling software.


Post has attachment
I've had some time to revisit the subdivision modifier in Clayworks. This was a a fairly simple addition but has a big impact: Variable smoothness for sharp edges. 
Clayworks has two ways of detecting sharp edges: one is via smooth groups (Polygon IDs defining areas that are intended to be smooth) and also via crease factors, which you can set per edge. Previously, the subdivision modifier would just flip between 'sharp' and 'as smooth as possible' which limited the range of shapes that you could usefully create. Not any more! 
Next on the list for subdivision surfaces is to finish the sculpting tools .

Post has attachment
Behold the new Clayworks logo, created in glorious svg.

Post has attachment
Here's a short test video of Clayworks in action - the new PC is fast enough to record full speed and full resolution video rather well. I'll be uploading more interesting videos showing some of the neat features in Clayworks soon.

I'm adding a chamfer/bevel modifier to Clayworks and, as always, things are more complex than they first appear.
  Lots and lots of gnarly little special cases. Still, this will allow me to do some pretty things nice and easily when it's done. It'll be better than the current Blender one, certainly. Especially as in Clayworks. everything is a modifier, everything respects the current selection and everything is non-destructive.

Clayworks ( is a 3D modelling and animation tool that has been a pet project of mine for a long time. The first version I released to the internet was in 1993 - I was 18, it ran in DOS and, in the end, had nearly a million downloads.  Whilst Clayworks has not earned me much money directly, It certainly has opened doors and has been my main vehicle for exploring the world of 3D programming computer graphics, games and animation. 
  Since then, I haven't released an official version as I've been working for various companies and have had to concentrate on those jobs. I have re-written Clayworks a total of four times in this time - it has been frustrating that most have never seen a release.
  Since striking out on my own last year, I've been spending more time developing the current version. 
I use Clayworks for most of the 3D art work in my games and other projects so I'm constantly improving it. It feels quite a waste to sit on such a long term project so I've been giving more and more thought to releasing Clayworks.
  I like software that doesn't fight you - I like a program that I can rely on to be at my fingertips after a quick download and not hassle me for keys, passwords, accounts or other 'I don't have time for this right now' nonsense. I like something you can put on a memory stick and run anywhere on any platform. That's the kind of software I want Clayworks to be - a reliable tool you can always get hold of and that won't treat you like a thief for doing so.
   To this end, I'm considering going open source. This will require a lot of work on my part - opening up your source code after 20 years is a bit like inviting friends around but realising your house needs bit of spring cleaning. Some additional commenting of code may be necessary! Also, I'd like to set things up so that I can fairly gain re-numeration for my efforts - I cannot work for free in the long term as I am not wealthy enough to afford such a luxury.
  My approach to open source has always been to donate to the open source projects that have helped me when I've made money using those projects. However, I'm not entirely sure how that would work. I imagine I could set up a foundation that I could bill for hours worked on the project, as could other contributors. 
  As for a licence - I'd like to ensure that other people cannot take my work, rebrand it and sell it at a profit but I'd like to allow the work created with Clayworks to be free for any use, including commercial - again, as a tool that doesn't fight you. 
  I'd like to ask members of the open source community what kind of Open Source license and corporate (if that's the right word) arrangement would meet these goals.
Clayworks has been a labour of love for many years, I hope to share it with you soon.

Post has attachment
I've added STL support to Clayworks. STL is a simple file format that sites like use to store their files. I've added support for it because 3D printing is the best thing ever and I'm looking forward to getting some real world, solid objects out of my 3D modelling program.

I downloaded this rather neat model from the website as a test; a working, printable steam engine:

Here's a shot of all the bits as displayed in Clayworks. Next I'll figure out how to put it together and do some animations.

My windows machine is out of action for a few days and the part I've ordered won't be here till next week. Never mind, this is an ideal opportunity to do something that I haven't quite been able to justify for years - porting Clayworks to Linux.
The biggest issue here is that my code base has been MSVC only for a long, long time and in that time, I've experimented with some reasonably funky template shenanigans, macro expansion kung-fu and other dustier corners of C++. This port is an opportunity to cull or modify some of the less successful experiments (a template based 'temporary free' vector/matrix library didn't pan out as well as I'd have liked and added an age to compile times, for example) and if I can pull this off in the next week, I'll finally have no reason, other than games, to need a windows development machine. If Clayworks runs on Linux (and from there NaCL, Android, Mac OS, etc.), I'll have everything I need to develop games on a Linux USB stick. No more Microsoft hoops for me!
Developing in Linux has, so far, proved to be a very nice experience. My current IDE of choice, Codelite, is silky smooth compared to visual studio, has lots of free plug-ins and is pretty stable. Basically, I type and the words appear without delay. I click 'go to definition' and it goes to the the definition. It's a world smoother than Visual Studio and whilst Eclipse works out better for me than VS, Codelite is much snappier than that platform too.

I was just thinking how much I'm enjoying using Clayworks, how far its come, how fast, how easy to use and so on.. when it picked exactly that moment to crash.

Hohum, still more to do before I unleash this thing on the world :)

Post has attachment
It's about time for an update, seeing as most of my development time for the past few weeks has been Clayworks related.

I've added decal support to Clayworks as I needed some nice ivy and other foliage for another 3D wallpaper app I'm working on - this time it's for valentine's day (not long now, again).
The feature itself is quite nice but there's much more I can do to it. I worked on a decal editing system when I was at my last job but unfortunately, I didn't get any real control over how they worked on the graphics side so my hands were tied; there were lots of features I had to leave out. Not so now!
Simple features like this can be much better when you're a sole programmer - it takes a lot less time and the freedom to think up an idea and come up with a solution. You can see the result quickly without having to explain anything to anybody or attend a single meeting; it's liberating.
I'm looking forward to improving this feature and applying some of the principles to texture painting (more on some ideas for that later). Currently, various values have a random variation to them as you paint the decals but I'd like to improve both the interface for this and also add various modifiers so that the user can choose other time related effects such as smoothly transitioning between one size or colour and another as they move the mouse around - I could make this generic in a way that would make it very easy to add such a feature to any appropriate value in Clayworks. I'd really like to improve the UI to accommodate some of those ideas (and, well, the current skin is about 12 years old and I'm bored of it) but right now I've got things to finish so dickering about with my modelling program's UI would be indulgent (and a bit stupid).

Despite adding this feature quite quickly it has still taken longer than I wanted it to, like just about everything else I do in Clayworks.
<programmer rant>
Again I can put the blame for that at the feet of Visual Studio. I know they say a bad workman blames his tools but... well, using Visual Studio and Eclipse I have to say that VS just feels sloppy. I know there has to be good code in there and writing an IDE and compiler is not an easy task but come on guys -
Why should searching my code base for a string take 5 minutes? It's not that big.
Why should compilation times be this slow? I've got good header hygiene here!
My hard disk is de-fragmented and my computer runs other software (including my own) pretty well so why is visual studio so bad? I'm scared to right click and bring up a context menu because I might have time to make a cup of tea by the time it's finished. You can tell when I'm working in VS instead of doing art work or programming Java in Eclipse - my activity on social networks like this one spikes as I'm sitting here bored, waiting for visual studio to finish doing something that should be instantaneous.

I can't rely on VS getting better so I am in the process of converting the Clayworks codebase to compile in gcc. This will mean I'll be able to use other tools and hopefully I won't feel the need to complain about visual studio any more - I feel for their programmers.
I can imagine them all there, wanting to make things better but being frustrated by management. I've no idea if that's true or not but chin up guys - I might complain about your software but I'd still buy you a beer.
</programmer rant>
2 Photos - View album

My hatred of visual studio burns with the fierce heat of a thousand suns.
Wait while more posts are being loaded