Monday, March 26, 2007

Windows XP screen yumminess


Only about half a decade too late, Windows XP finally has some tools to make it look more... like a Mac. With new, near-functional, Yahoo! Widgets and brilliant RocketDock from PunkSoftware, my laptop PC never looked better (except for when running Compiz/XGL on Ubuntu which for other reasons just won't fly on my HP quite yet). Both of the apps mentioned deliver lots in terms of both slick looks and long-sought-for functionality. Widgets are similar to the Apple Dashboard widgets, the Vista Sidebar gadgets et al. and are very lightweight and fast. Only problem is they still suffer from some annoying technical issues, which from all I can tell rather stem from poor testing than complicated algorithms, and as such hopefully will be addressed shortly. Awaiting bugfixes to the Yahoo! Widgets engine and various plugins (the latter provided by a seemingly sprawling user community), I can still enjoy the tremendous RocketDock which far outdoes all competition on the vast 3rd party dock market. It has almost everything a secret OSX fan could ask for in a dock; the super-smooth zoom, the alpha-blended PNG icons, the animated minimize-to-thumbnail, the jumping, even the tiny running app indicators. Time to hide that task bar once and for all?

Friday, March 23, 2007

Hair preview!

Today I finally got time to put a vid on my website showing what I'm doing with my life right now: hair. It's a really short sequence demonstrating a handful of guide hairs being subject some high-intensity motion. I guess I'll post it here as well, but make sure to keep an eye on the website for future sneak peeks! Notice the inertia, stiffness and tolerance to large derivatives. Those wondering about the sparsity of hair strands should know that the Renderman/MentalRay shaders will interpolate these "guide hairs" and create 1000s of hairs between them once the scene passes through the rendering pipeline. By increasing the density of guide hairs in areas that somehow will interact with the environment (e.g. having fingers drawn through them) one can better capture the detail in those areas, while saving processing time by populating less dynamic areas much more sparsely. Typically a full head of lead character hair has between a couple of hundred and a couple of thousand guide hairs.






Wednesday, March 21, 2007

R.I.P. John W. Backus

John W. Backus, the man behind Fortran, has passed away at an age of 82. It's hard to assess what an impact Backus, mainly through the conception of Fortran, has had on the development of computer science in general and scientific computing in particular, but he definitely ranks among the big ones. Read the NY Times article.

Thursday, March 15, 2007

Computer art that actually looks good

Working among computer artists every day, watching them craft amazing worlds using only their imagination and a computer, I might not be as easily amused by computer art as some. In fact most artsy stuff that even comes close to a computer seems to loose a lot of its organic, unpredictable feel. Jared Tarbell however really astonishes and inspires me with his procedurally generated pieces - and they're all code. Deliciously open source code at that. So check out http://www.complexification.net today.

Wednesday, March 14, 2007

Typecasting without type conversion

All the C-buffs out there probably already know about this but in order to just cast a type to another one without the implicit type conversion, some pointer games need to be played. E.g. if you want to cast a float into a type that's more suited for bitwise operations, say an unsigned integer, you don't want the whole type conversion thing to round off the float and set the integer to, well, the integer representation of that float. Instead, you want to perform a bitwise exact copy, something that

float f;
unsigned i = (unsigned) f;
i = unsigned(f);
i = const_cast<unsigned>(f);

all fail to do. Instead, use

unsigned i = *(unsigned *) &f;

Easy as that, with no need for memcpy:s or other unsafe operations. To get the correct result though, make sure that whatever datatypes are involved are of the same size, e.g. float and ints on any 32-bit system.