DrPetter's homepage


March 3, 2014

It's been a while since I quit Pixologic now, and for some reason or other I haven't been keeping in touch a lot with the online world. This doesn't mean I've been completely idle though, so check out this quick recap if you're interested in my various hobby goofs over the past couple of years.

Hopefully I will resume and maintain a better habit of updating this site and my twitter account based on current activities. A lot of these things I do are way more fun when people get to try them out. Like games for instance... what idiot makes games without giving them to players?

June 22, 2011

Sculptris Alpha 6 available now for PC and Mac, so go check it out!

July 23, 2010

Let's see... I've quit school, got a job at Pixologic, moved out of my apartment. Also gone all kinds of places in Europe on the back of a motorbike with my father. Italy and Croatia were particularly nice.

Looking forward to regaining some kind of daily routine, but it'll have to wait a little while longer. Going to Siggraph in L.A. next week.

To read more about what I'm cooking up with Pixologic, check my forum announcement and sculptris.com.

May 22, 2010

Sculptris 1.0 has been released!

I will be out on vacation for three weeks now, so don't worry if I appear absent.

April 16, 2010

I was bored the other day so I thought up an algorithm for video motion vector estimation. It's different from the one I used in the Lurch project, and much faster. The implementation is still rough and simple though, so I'm not sure how far it could go in terms of accuracy/quality given further development.

I've attached an image below to illustrate the basic idea, for a 1D case. It's basically a way to measure horizontal shift distance between two copies of the same curve (or very similar curves). You measure the value (y) difference at "a few" points and calculate the estimated shift distances according to the figure, then weight all those together based on local slope size. Larger slope means more reliable value, so you want those contributing more to the final result.

As it turns out, this works similarly well in 2D when performed independently for x and y, on small regions to isolate local movement. The images (adjacent video frames) are converted to greyscale and blurred before the calculation, to create a simple and robust data set. Any relevant motion is equally visible in a blurred image, and you get rid of distracting details.

I made a short video showing some preliminary results. Watch it here

Obviously this is just some fun distraction from my main Sculptris work. I will probably spend the occasional evening thinking about ways of improving it though. Video processing is such an interesting field.

March 2, 2010

Yesterday I was helping a certain Arne out with a texture mapping issue, and it resulted in a rough little tool that others might find useful, so I'll put it up here.

The tool will allow you to remap a texture between two different sets of uv coordinates for the same model. Basically, if you've mapped a model and painted a texture, then change your mind and make a new mapping - just run this tool and it will update the texture image to fit with the new mapping coordinates.

You will have to check readme.txt for how to use it. Not the most elegant application in the world, and it has some functional limitations, but I've included the relevant source so you could modify it if need be.

Download below:

uvremap.zip  (240 kB)

February 27, 2010

Sculptris alpha 3 is out!

I've done some more work on the sculpting tools and interface. The overall experience should be smoother, prettier and more comfortable.

Notable changes:
- Tablet pressure support
- Alternative brush control menu (press Alt)
- Improved flatten and pinch tools
- Some bugfixes (should not crash quite as much)
- It's a little bit faster

Check documentation.txt to see what else has changed.


February 12, 2010

Sculptris alpha 2 released, with some fixes and improvements.

There's still no bumpmap or texture functionality in this release, but I've tried to fix some of the issues people have brought up. The main improvements are performance, tool quality, new materials, bugfixed rendering, and some additional controls for navigation.

The new materials will only be visible if your graphics processor supports shaders.


February 10, 2010

Randomly remembered an old game I made with poppeman as a school project in 2002.
Download it here and have a few minutes of retro fun. Controls are arrow keys and Z/X/Space (bombs, cannon, flip). Look for run_game.bat if you're on Windows, otherwise type "java GameUI" to play.


February 1, 2010

I've released the musagi source code.
Grab it now before everyone else get to have all the fun!

January 30, 2010

Large batch of old projects uploaded. Most are from 2008 and 2009. These are things I've always considered worthy of a place on my site, but I didn't take the time to write pages for them before.

Check them out:

Chup - Flash game from 2009.
Deflectorpool - Flash game from 2009.
matchref - Photo reference tool for 3D modeling, 2008.
Software 3D - Various experiments in software 3D rasterization, 2001-2008.
drlcap - Desktop video capture, 2008.
Vectorize - For reducing artifacts in pixel transformations, 2009.
Implicit surface rendering - From 2009, check the bottom of the page.

The other week I also made some music for a friend's game. Play it over at his site!

January 29, 2010

Bumpmap painting in Sculptris has reached a decent level of usability.

Check out this youtube video of it in action.

Still no updated version for download, though I will try to get a bugfixed alpha build up within a week or two - same functionality as before, but less bugs.


January 20, 2010

I've started working on Sculptris again.

So far I'm just adding a few features that I had planned during holiday leave. Notable additions are image-based lighting, improved/smoother tesselation and bumpmapping. The bumpmap is currently edited through decal pasting, but hopefully I'll be able to make it support interactive drawing, so you can make free-form scratches and wrinkles, or whatever else.

No new downloads yet.


December 20, 2009

Sculptris alpha release!
Download it and play around a bit. Tell me what you think on the forum.


December 10, 2009

Working on a sculpting tool. Having lots of fun.


November 22, 2009

Deflectorpool is finally out in the wild after three weeks of development and five-or-so weeks of looking for sponsors. Play it over here.
I'm currently working on another flash game that will hopefully be released before the end of the year.

Recent thoughts have resurfaced of updating the site with a bunch of project/game pages. One detractor recently has been my twitter account where I can post random notes that make me feel like I've tended to my online presence, which pushes this site even further down the priority ladder.

October 25, 2009

I've fixed all download links, as far as I know. If there was something you were trying to get recently but couldn't, go ahead and try it again now. Let me know if something is still missing.

October 23, 2009

I made a little video showing glimpses of the development process leading up to my latest flash game, which I'm currently trying to get sponsored. It should be released in a few weeks time, so check back here next month to play it.

October 8, 2009

Getting some new hardware that caused problems spurred me to fix a few things in musagi - go grab the new version. Notable fixes include better double-clicking, fixed setting/drawing trigger volumes and the ability to open musagi through file associations.

September 18, 2009

One small update for CherryBrush. I woke up today and randomly thought of a way to do curve smoothing using bezier splines. After testing it out in a little flash applet I went ahead and put it into CherryBrush (not without pains, it turned out). The end result is that you will get perfectly round and smooth lines even when flicking the pen/mouse around at crazy speeds, instead of the choppy polygonal look that you might get with inferior products ;)

Unfortunately, the mouse still doesn't perform quite as well as the tablet, since it has a lower and less consistent data/sample rate. It might be possible to work around this a bit, but anyone looking to do quality strokes will be using a tablet anyway so I'm not making it a top priority.

I also changed vsync to off by default, since this leads to much better response times in the cursor. The trade-off might be cpu usage, so it's possible that this will be a configurable option later.

For those interested, here is an illustration of the method I used for smoothing out brush strokes. Note that the first and last half segments will need special treatment if they're required. Possible solutions might be linear interpolation or simply using the terminating vertex rather than the half-way point for controlling those bezier curves.
I just skip them since you can't really tell exactly where a quick stroke began and ended anyway, and they're not a problem for cyclical paths.

Actually, this scenario is probably best suited for quadratic beziers (three control points), while the beziers I used are cubic (using four control points) since that's the code I had immediately available from earlier projects. I might try changing it later, for a minor speed boost and perhaps better roundness.

September 4, 2009

New site hosting!

Some files won't download properly until I've moved them over, be patient. I'll try to fix the most popular ones right away, but the more obscure stuff might have to wait for a week or so.

May 24, 2009


I've done a lot of stuff lately, but they've either been boring things not worth mentioning, or just inappropriate due to "circumstances"... I have made some teeny tiny attempts at making money for once, and it's going well enough.

I'll just quickly breeze through a few links here and then I might return with some new project pages and stuff later.

First up, a game I finished 3 months ago - Chup was eventually sponsored and earned me a little pocket money.

Some people got together in #ludumdare to try doing daily sketches for general practice. I've kept up reasonably well, only missing two days so far.
It looks like a sketch blog!

This weekend I kind of participated in a mini compo but ended up playing around with rendering effects instead of making a game. Read about it here. There was also a proper LD48 competition where I produced a weird flash contraption which can be played here.

Musagi might be heading for an open-source release. People have pestered me enough about porting and whatnot, I might as well give them the material to do with what they please. A public repository would be nice, as long as I don't have to administrate it ;)

Another paid project should be wrapping up in the coming week or so. I'll write something about it then.

December 20, 2008

Ho ho ho. Been neglecting the site for a while. In fact I've also been relatively inactive in the coding department for the last couple of weeks. I've finally completed the last exam for this semester though, and am looking forward to some time off over the holidays (yes, even less coding!!)
For now, here's a neat little raytracing project I undertook earlier this month - Extraypork. I also participated in a Ludum Dare recently, and will put up a page covering that game "later" (maybe in a few days, maybe in January).

You can download the game though, right here: soltcras.zip (68 kB)
Instructions are in the titlebar of the game window. This is a tweaked post-compo version. Two-player fun galore.

November 14, 2008

sfxr has received a free software license due to numerous requests, and there have been some improvements made to facilitate installation and use on Linux.

November 11, 2008

Quick and tiny update to CherryBrush, fixing a "Vista bug" which was essentially just a plain old regular bug that happened to go unnoticed in XP (or at least many versions of it). I also added a sort of clumsy feature useful for coloring line art (the greyscale mask). It should see some improvement later on, with more convenient configurability etc.

October 20, 2008

CherryBrush now has animation support!
You can see a short demo of it in this youtube video. It's kind of rudimentary for now, but it should be enough to do some sketchy clips, and even fully colored animation.

One missing feature that might be useful for more serious work is exporting animation layers separately with preserved transparency, so you can composit them in a different application. I don't think that would be too hard to add, so it might appear in a future version.

October 12, 2008

Added a new game.
Well, actually it's not exactly new since I wrote it back in 2005, but I've recently added some more levels to it and decided that I'm not likely to ever "finish" it, so I might as well just upload it.

October 10, 2008

musagi update. I think I've fixed MIDI input for real now. There's a convenient interface for selecting input device as well (a nice little button in the lower-right corner of the window). I've also fixed a rendering bug that apparently existed in CherryBrush too, but I'll hold off an update for that application until I've added some more proper features.

October 7, 2008

New version of CherryBrush. Main addition is flood fill, but I've also fixed a few bugs and tweaked stuff. There's also a moderately crappy youtube video demonstrating fill functionality.

September 26, 2008

I acquired drpetter.se to use for this site. Still being too cheap to pay for actual hosting though, so for now I'm using a redirect to the old university www account. Sub-URLs seem to work.

As far as development work goes, I played around with musagi a while ago. Fixed some rendering issues and tried to repair MIDI in support. I still want to verify that the MIDI stuff works on other machines than mine before I upload it officially, so there's no new version yet.
I'm also tinkering with selection stuff in CherryBrush. It's mainly in the concept stages right now, but I should have at least basic functionality implemented in a few days.

September 23, 2008

Some fixes for CherryBrush. One new feature - you can paste images from the Windows clipboard (as a new image, can't paste external bitmaps as layers for now).
There's some minor bug that causes artifacts in the right and bottom pixel edges of an image in some cases, seemingly for pasting certain bitmap formats and for saving to PNG. I'll look into it.

September 19, 2008

Ok, I've given CherryBrush a version number now, might be helpful. New features include undo for filters, and two new ones - Transparency noise and Levels. The first one chips away random pixels from the opacity mask of a layer, which should allow relatively complex noise application depending on how you do it. Might be a bit cumbersome to get a plain old additive or subtractive noise though.
Levels is just... well, levels. You gotta have it. I think I managed to squeeze out a decent interface for it.

September 18, 2008

Protoshop is now CherryBrush. Celebrating with some new features as usual - More blending modes, blur filter, variable canvas size (only on new image though, for now), and finally you can now scroll the layer stack. I spent almost an hour trying to bake an application icon into the executable, but couldn't find a painless procedure that worked. Problem being that I'm using a command-line compiler, so I'd have to dig out some magic formula to feed the linker step... or something.

September 17, 2008

Protoshop is now friendlier with a large clear font and help text. Also a few basic layer blending modes and image filters (will add more of those later, the hard part is done though). Furthermore, it now supports opening files passed through the command-line, so you can associate files with the program and have them open as expected. Various settings are also saved to a config file for customization.

September 15, 2008

Protoshop. Added non-orthogonal line drawing (shift+click), a different interface for scroll/rotate, and visual layer selection. I've always liked the idea of picking layers by simply clicking on them, and it worked out pretty nice here with a realtime thumbnail of the layer you're hovering over.

From painting a bit yesterday and the day before, I've managed to get some idea of what tasks you're likely to perform often, and what kind of stuff could be automated or aided by new features. Layers are really great now that the transparency can be locked. A locked layer basically works as a solid object with given depth placement, that you can "texture" or shade by painting freely on it without risk of ruining the surrounding area. Ideally you'd place all separate parts of a subject on individual layers to eliminate any need for careful manual edge preservation. It's kind of annoying to constantly mouse over to the layer stack and select which layer to paint on though, so hopefully the visual picking will help there.

Another problem is that many objects are self-overlapping, like a human figure for instance. You can have an arm crossing over a torso with no given seam between their surfaces, so it gets a bit inconvenient to split it into two layers, since you'll probably want to paint freely over the non-contour seam at some point. I've considered some kind of quick-masking using a magnetic "lasso" tool, where you could temporarily mask out a region and choose to paint inside or outside it. It would only be useful if it was very quick and painless to apply, hence the magnetism (locking to edges/contrasts in the image).
A related feature that needs some more pondering is locking one layer to the transparency of another, so you can have multiple layers of "texture" on top of an object, and paint on any of those layers without worrying about the object edges. When I eventually add layer movement, such layers would preferably move together, so I suppose it should be considered a kind of general grouping.

September 14, 2008

Protoshop has some new features. Highlights are undo, speed+memory optimizations and multicore support. I've also added a little discussion on the color blending stuff, along with example images.

September 12, 2008

Protoshop is all I do these days, it seems. Some of the most interesting new features are 16-bit color channels, channel transparency lock and really interesting internal color representation. Basically I've played around with non-linear color spaces by shaping the RGB channels, and it leads to very cool blending properties for when you have any kind of transparency (like semi-opaque layers or just a simple brush stroke). You can add colored bias or just punch up/down general color saturation. It's even possible to get convincing high dynamic range effects. I'll put up some illustrative images later.

September 8, 2008

Paint app update. It now has layers - wohoo! Spent like 6 hours yesterday beating myself up over how to properly merge two alpha-blended layers... Came up with a formula late that night which turned out to be correct, but a different (pointer) bug prevented the image results from showing up accurately, so it took another good bashing today before everything was settled. The blending code has grown increasingly horrible due to being prematurely optimized and hardcoded into specific functions for every blending operation. I'm going to try making some nice overloaded operators now to get convenient vector operations for everything. Stuff like channel3=channel1*(1-channel2) instead of a nasty loop dealing in bytes and shifts.

September 7, 2008

Started working on a cute little paint app earlier this week, and it's starting to become useful now. It's mainly focused on streamlined painting and sketching, with some possibilities for pixeling as well. Will most certainly be updating this one in the near future.

September 4, 2008

Fixed a few musagi issues and upped the version number a little bit again. Most important addition is that you can now change the audio latency to find a good setting for your system. If the old versions resulted in crackling sound or were misbehaving in some other way, you might have better luck with this one.

August 29, 2008

Through an unexpected hyperburst of coding stamina, I've made months' worth of progress in musagi over the last few days. And though it's not at 1.0 yet, I have indeed bumped it up to something other than 0.1 - definitely worth a "wohoo"!
There are several noteworthy bugfixes, plus many cool new features. I suggest everyone go grab a copy right now.
The changelog has more details regarding specific features and fixes.

Here are two mp3's demonstrating some capabilities of a new instrument I added:

operator-sid.mp3  (1.9 MB, SID-like ring modulation)
vocoderskoj.mp3  (2.0 MB, messing up Jim Lee's voice) (TODO: find file and fix dead link)

August 26, 2008

Intermediate musagi update. I've fixed a bug that's been eating me for some time, and which should finally enable people with two-button mice to edit note slides. Other highlights include (ugly) pixel-doubling for people with too much resolution and a slightly more compact interface for those with too little.

One thing that didn't quite make it into this build but which I'm almost finished with is support for custom skins/themes. Basically I've added a palette image into the already present skin directory, and there will also be a button for switching themes at run-time... hopefully. What remains to be done is figuring out which colors I can rearrange to make the appearance more flexible, since right now I'm reusing a lot of palette entries for completely unrelated elements and that means you can't really change them all that much before things start looking very random.

August 22, 2008

Another thing I played with during summer was converting this NES controller to make it PC-compatible. The choice of circuitry wasn't ideal, but at least it works and will do just fine for now. When it comes to retro gaming it's much better than my (otherwise great) xbox360 controller, and there's obviously nothing above it for good old NES emulation.

August 19, 2008

Celebrating three months of inactivity with this little update. During summer I've done some work on the racing game, adding a proper track and tweaking controls to make it more comfortable to drive. I also made a new video clip showing the latest placeholder graphics...
I still need to sort out a few issues with the simulation before I feel prepared to upload a public test version, and obviously it won't be much to look at for a long while still, as I won't focus on the graphics until I'm happy with how it moves.

May 19, 2008

Oh look! I made a game!
Go check it out, it's kind of epic... in a very limited way.

May 10, 2008

Finally got around to uploading the sound article. I started work on that two weeks ago, but dropped the ball after an initial burst of drafting. Have a peek if you'd like to learn some stuff about basic sound theory.
I might expand on it later, and maybe rewrite parts. Feedback would be useful.

April 28, 2008

Spent this day with musagi. Made some changes and additions to the interface, hoping to make it a bit more friendly and accessible. There's also a changelog file available from now on that is meant to record any significant progress and new features. Check it out on the project page linked above.

April 27, 2008

For some reason I got a relatively sudden urge to play with desktop video capture earlier this week. I spent some time experimenting with the basics and found that my machine could deliver 70+ fps of raw framebuffer capture without processing or storage, mostly due to its integrated GPU with shared memory I presume.
After a few days of fun-fun problem solving I had a working lossless compression algorithm that was fast enough to deliver 30 fps at a reasonable data rate (like 2 MB/minute for "friendly" 1680x1050 material with little movement, much smaller than the wav audio stream that goes with it).
I guess at the back of my head was always the idea of doing tutorial videos for musagi, and it seems that will be quite feasible using this thing. I added capture and display of keyboard and mouse input so it would be easier to follow what's going on and learn from it.

The first test video is up on youtube: watch

I will try adding text captions and zoom later so it'll be possible to make more involved tutorials. There will probably be a project page on this as well... at some point.

April 20, 2008

Made a quick little update to smuplay, adding support for recent changes in the musagi song format. Get it over at the project page for musagi or directly here: smuplay.zip.

I'm currently working (rather slowly and distractedly) on an LD entry that is mostly just an excuse for experimenting with the PSD-as-level concept. Yesterday I added simple rectangle-against-bitmap collisions and today I hope to make it into some kind of basic platformer. Theme score will be minimal, as per tradition.

April 12, 2008

Rather quiet around here. It's partly because I'm busy. Busy mainly with a new attempt at the racing game. There's a small video available, but it's not much to see yet. I'm having trouble with a few details, but there's some hope that they'll be sorted out in a week or less.

Unrelatedly, I put up a little zip archive with a PSD image loader I've tinkered with, on and off. It only started to work well recently, and I'm not 100% sure that it'll accept all valid files yet. Only reason I'm making it available at this point is that I might want to use it in the upcoming Ludum Dare competition which takes place next week. The rules state that only publicly available code may be used for competition entries.

What's interesting about this code is that it allows you to extract each layer as a separate image, rather than loading the entire thing as a flat picture. I'm thinking of using it for painting levels directly in Photoshop. It only supports regular RGB-format images though. Transparency in actual layers is ok, but no explicit alpha channels or other tricks.

Get it here: psdimage.zip (TODO: find file and fix dead link)

March 21, 2008

Back again. Done some minor bug fixes on musagi. Also added a bunch of random instruments and a new song to the zip, so you might want to go download and play around a bit.

March 3, 2008

I'll be away for a week or two, and won't be able to update the site until I get back. At least one new project is waiting for proper coverage, but some teaser images will have to suffice for now:

pic1 pic2 pic3
(I know these links are dead now, but I don't know where to find the original images!)

There's a small chance I might be scribbling at bits of article material while I'm gone. Need to fill that section out with something.

March 2, 2008

More project bonanza: SPCMS and Nitro Butts!

SPCMS is the tiny content management system I wrote to help me make this new site.

Nitro Butts is an old game from 2005 that I'm almost embarrassed that I haven't released earlier. A joint effort between me and my brother.

February 25, 2008


February 19, 2008

Two more, again - animape (2007) and Lurch (2006).

February 12, 2008

Two more old projects are up - fftuner and raytracers.
Page update date fixed. The date shown at the bottom should reflect change date of the particular page you're viewing. I also removed the RSS feed since it was broken somehow, causing refresh on the aggregator(s) despite no updated content from me. Will look for a different feed creator.

February 3, 2008

Added four projects from last year.
sfxr now has a proper home!

February 1, 2008

Site is up and seems to be running ok.
Will try to add a few more project pages tonight or tomorrow, and see if I can put up a working RSS feed.
Realized there's a bug(ish) that will cause the updated-at text furthest down to read the same for all pages. Idea was that it'd specify the most recent update of the specific page you're viewing... might fix it.

January 31, 2008

Migrated the rest of the old site, or the interesting parts at least.
Will replace old site any moment now.

January 30, 2008

Migrated a number of old projects. It's boring.
Uploading for some feedback on the design.

January 29, 2008

Finished building page framework. Adding initial content.

January 27, 2008

Final touches. Working on actual page design.

January 25, 2008

Page generation is now ok.
Currently working on upload.


Upload and file diff works!
Time to build a small test site...


After a few minor fixes everything seems to be working fine.
I can create several pages and easily link between them, yay.

January 22, 2008

Today I started working on this tiny CMS.
Look at that pretty automagic line break!

Page updated on March 03   2014