Monday, March 29, 2010

Animation support

Spent the weekend extending my model format to support animation frames, which led to optimizations in the converter to reduce the number of indices generated, which led to writing a new model exporter that can export animation frames, which led to learning how to rig and animate in Blender, which led to writing an animation playback control system, which, finally, led to (simple) animated trees in Silhouette.  So, next update will have trees that sway a bit every so often.  Sweet.  Doesn't sound like a lot of payoff for a bunch of hours of work, I guess, but I'm happy it's there.  =P

The main thing here is that now I've got all the necessary tools to handle real animation, so can make use of that in future projects.  Swaying trees was a good, simple, starting task.  I think the plan for this week is going to be another live wallpaper and I'll be exercising the new tools with it.

Currently the animation is very simple vert-cloud style, which works nicely with OpenGL ES's vertex-buffer centric approach.  Next upgrade will be for proper interpolation between frames -- currently there isn't any so it works best for subtle motions.  I'll see how much the next project calls out for interpolation to determine whether I tackle that sooner instead of later... for now all the data's in place and that's the worrying part.

Thursday, March 25, 2010

Synergy review

A nicely positive review of Synergy!

Galactic Core v1.2

- Update: Smaller file size
- New Feature: Touch sensitive camera movement

A couple times now, I've tried reducing the background texture's filesize by changing it to a JPG.  The problem is, JPG images rendered to the screen result in a pretty horrible moire pattern as they get rotated (a side effect of the compression, I think, because it's not there at all for PNG).

After a couple of failed attempts I discovered that Gimp's JPG exporter lets you control which style of subsampling is used, an option I don't think I've ever seen in a JPG options menu before.  Switching to 1x1 subsampling largely fixed the moire issue, and allowed the image size to drop by almost 700k.  I'll call that a win.

The other meaningful change is touch sensitivity.  If you enable this in the prefs, the camera position will move based on where you touch the screen.  I tried to keep this relatively slow and non-crazy, in keeping with the philosophy of the wallpaper being a backdrop and not a toy.

Monday, March 22, 2010

Silhouette v1.0

Continuing with the Live Wallpaper theme, we've got an animated sunset!  A bit simple in some ways, but looking through what's available it seems to me there's a lot of gimmicks out there but not necessarily a lot of live wallpapers that are just designed to be a good looking background one-upped with motion.  I'm going to try a few experiments there and see what comes out of it.

Silhouette takes a classically styled dramatic sunset photo and adds in moving clouds and sun, with settings for backdrop colors, motion speed and direction, etc.  It's attractive looking but should be non-distracting for the user.  Hopefully folks like it!

Galactic Core v1.17

- New Feature:  Spin direction pref
- Update:  Performance improvements

It's becoming more apparent to me that these phones are very fill-rate limited.  In the name of staying as sharp as possible, I had the wallpaper rendering all its passes with the same image (doing some flip flopping and blend mode changing).  The problem is, without mipmapping (and GL10 doesn't support this very well), this means that it's got to render every pixel of that high res texture every pass.  I yanked the alpha channel out of the high res texture (allowing it to get much smaller) and made separate lower-resolution images for the blends.  This made a noticable framerate difference and saves some memory besides, while still looking basically the same.

Friday, March 19, 2010

Galactic Core v1.0

Spent the last few days putting together a new Live Wallpaper called Galactic Core!  I spent a fair bit of time trying to port over my OpenGL stuff written for Synergy before coming across Robert Green's GLWallpaperService example, which made life much easier.  All my TextureManager, MeshManager, Timer, etc code more or less dropped right in once I switched over to it.

The end result is a very pretty (in my opinion) rotating spiral galaxy with multiple layers of rotation moving at different speeds and scales.  It seems to work well so I'm tossing it out into the wild.  I've got plans for some other wallpapers along these lines -- very attractive background images with motion added -- for the next week or two.  We'll see how the feedback goes, hopefully people will let me know if there's any issues.