Ancient pixels

I’ve continued with my pixel sorting experiments. I’ve made one change to the script as well as one addition. The change is that the pixel sorting algorithm no longer wraps, so only pixels in the same row can be swapped with one another. Pixels can be shifted side to side but never move up or down. This constraint goes one step towards preserving more of the original image. The addition is a condition that must be met before two pixels are swapped. For example, a pixel will be swapped with the next pixel if it has a higher saturation value, but only if the next pixel has a red hue. This is where things really get interesting. There are a lot of permutations of this logic and the results are always a bit of a surprise. You can sort by saturation but ignore dark pixels. Sort by brightness but only move blue pixels. Every combination of parameters and thresholds (how blue is “blue”?) provides a different result. Here are a few of my favorites so far.

Hue sat bright in Athens

Inspired by artists like Kim Asendorf and Jay Mark Johnson, I wanted to explore pixel manipulation of images. I felt a good starting point was to just try sorting all the pixels in an image. I used a simple bubble sorting algorithm that marches along from the first pixel to the last pixel. A pixel is swapped with the next pixel if, for example, the next pixel has a higher hue value. The results of that operation can be seen in the first image. The next sorted image is sorted from the most saturated pixel to the least. Both images started as a photograph of the School of Athens, an image I selected at random from a Google image search for classic art. There are two key points to note about the results. The first is that the pixels are considered to wrap from the end of the one row to the beginning of the next row, and swapping them if necessary. The second thing to note is that each image only evaluates one factor, and there are no competing criteria. These are the two points I want to change in my next sketches.

Winter Update

It’s been a long time since my last post and I think I need to do something to break the streak, even if it’s just a quick update. I feel that saying I’ve been busy is a bit of an understatement. At work I have one project coming up out of the ground at a very fast pace as well as another project getting ready to go out to bid. I’m in the process of getting registered to take the architectural registrations exams and doing a bit studying for them as well. In what spare time I’ve had, I’ve made a start on a board game design that’s been kicking around in the back of my head. Of course, any spare time I had has pretty much dried up thanks to a rather significant development in my personal life. Two weeks ago my wife and I had our second child, a baby girl. She’s doing well and I’m sure she will fill our lives with joy and leave little room for things like blogs. None the less, I mean to press forward and scrape together some new content when I can. As for this post, I’ve decided to include a rending from work that was presented at a school board meeting concerning the project that is about to go out to bid, a performing art center.


DUSK Render

On Display

It took way longer than it should have, but the sound panels for the Marion School District offices are finally up. We went through multiple printers, multiple panel manufacturers and still didn’t manage to get exactly what we asked for. However, the results look pretty good. Some of the panels are huge! Having a camera that takes such high resolution pictures paid off in that regard. Its very cool to have my photographs turned into a permanent gallery for the school district.

Big Cats

I’ve been taking a lot of pictures at the wonderful Memphis Zoo. I’m also trying to determine the ideal number of images per post now that I’m putting galleries on the front page. I think the last one was too many and was a bit overwhelming. So here is a selection of nine photos of big cats I’ve taken over my last few visits to the zoo.

Marion Jr High

I’ve updated WordPress and added some new plugins in an effort to improve hosting and sharing of photographs. As a first test, here is a set of images that I had previously been sharing with Flickr:

Pretty slick huh? Be sure to click on the images to check out the slideshow feature. Let me know what you think or if you have any problems viewing the images.

Edit: I’ve removed half of the images that were in this post. I think more than 10 is just overkill for a single post

Procedural Cartography

I’ve made some more progress on the map system I’ve been playing with. I settled on a system governed by two binary variables. The two variables refer to the presence of the smaller three hex and one hex spaces on a given tile. This gives you four categories of tiles. Tiles with neither, tiles with both and tiles with one or the other. This system allows you to layer information onto the map rather than having discrete zones like I described in my previous post. In this case, I am envisioning the three hex spaces as representing trees and the one hex spaces as impassable rocks.

To generate the map, I first generate a pattern of rock formations within a hex grid. Then I do the same with the trees, placing tracts of trees onto the hex grid. This results in a hex grid where each tile can be open or contain rocks, trees or both. In this case, there is no interaction between the tree and rock layers, but I can envision a more sophisticated system which introduces interaction between layers.

Based on the intended contents of each tile, an appropriate tile is selected from the tile set and placed at those coordinates with a random orientation. I developed three possible tiles for each category, for a total of 12 tiles in the set. Since each tile can be oriented six different ways, there are 72 variations of the tiles which can be present in a map. Despite the high number of possible permutations, the map is still generated from very few distinct pieces. This results in a very abstract, low resolution map that is very reminiscent of tabletop games.



Hex Map

I’ve started generating some random maps using the hex tile set in my last post. The map below uses only 3 tiles from the set, placed and rotated randomly. Once I add more of the tiles in, I’m going to group them together into general types. For example I might have 3 tiles which can be used for open terrain, 3 for forested areas and 3 for hills. By doing this, I’m hoping to get less homogenous results as well as create some defined features and regions on the map that span multiple tiles.

Hex Space

I’ve always been interested in rule based systems, and lately I’ve been reading a lot about game design. I’ve found it far more interesting to hear the designer’s thought process behind the design of a game than to actually play the game itself. This has recently led me to listening to The Game Design Roundtable, a game design podcast hosted by Dirk Knemeyer & Jon Shafer.

On a recent episode, Dirk Knemeyer talked about one of the projects he’s been working on called War Stories. The goal of the project is to develop a tabletop strategy game that streamlines and simplifies the process of playing. Most such games require lots of charts, tables and reference materials. The design team wanted to get rid of as much of these extraneous parts as possible, and they did this by making the few pieces they did use more intelligent.

My personal favorite result of this process is the way the space of the game, the map, works. The spaces on the map vary in size proportionally with how easy that terrain is to cross. So easily crossed terrain is very large and hard to cross terrain is small. This allows you to simplify movement by setting a piece’s movement ability to a fixed number of spaces. The movement modifiers present in similar games are now simply inherent to the map. No math required!

I really like the idea and I spent some time exploring it myself. You can see some of the results below. In this example, each map piece is made up of 19 hexes and contains either 3 or 5 spaces. Each space contains either 1, 3, 5, 7 or 9 hexes. These rules allowed me to narrow the number of possible configurations. Each column is one of 9 possible permutations of number and size of spaces within these constraints. There are more possible configurations in each category. I chose ones I felt were most distinct and interesting, generally avoiding symmetry where possible to make them feel more organic.



Sphere Points

I spent some time dressing up the sphere points script for a video. The points are now added one at a time at the same spot, resulting in some nice swirling effects as they spread out. I also added a bit of color to further emphasize the three dimensionality of the form. There were some artifacts from the encoding when the sphere spins that I couldn’t get rid of, but it doesn’t look too bad. You can see it below or click Here for a bigger version.