Monday, December 14, 2009

PhotoShop Diet Anyone?

If anyone (is crazy enough and) wants to try a free sample of a "PhotoShop Diet", feel free to ask by commenting to this post. Then I'll try to get in touch, so we can see what I can do with your photo.

That is all for now.

Saturday, September 12, 2009

I'm gonna make my own FreeCell in Flash.

It probably sounds stupid, because it's likely to have been done hundreds of times before already. But I was trying out a Facebook app version of Freecell that had omitted some important key features of this game that has been a staple item of every Microsoft Windows PC since version 3.1 or so. So in my opinion, that Facebook app is broken. Thus if I can make a version of Freecell that works correctly, then I know other people can. And since there's been versions of it since DOS and Win3.1 days, it's not like it's impossible to implement all the rules correctly.

The tricky part of this game is deducting the rules from a programmatic logic standpoint. The problem is that I'm normally not a programmer. So this is a simple logic puzzle and a break from my normal routine. Let's try to think of how the thing works...

First is the layout:
You have four free cells, and you have four open dump cells (Officially its called a foundation, but since I consider it dumping cards out of the game, that's what I've called it.), then you have the cards that get laid out on the table, and you count any empty spaces on the table as an extra free cell. You have eight columns of cards laid out on the table in a random cascade, face up. And generally it's the cards from the bottom (but not only the bottom - important!) of a cascade that are put into play or dumped into the foundation squares.

The actual rules can be found at Wikipedia. So it's known what we have to work with.

Now the first thing to do is initially randomize the cards. This will involve a loop that populates an array. We know we have 52 cards in a standard deck. So we know we need a list that's 52 values long, and contains non-repeating values between 1 and 52. (Non-repeating is important, because there is only one of each card of a given suit and value.) So we use a loop that populates the array. The loop generates a random number between 1 and 52. Then it checks the array to see if the random number matches any already on the array. If there is a match, it goes and generates a new random number and tries again. If there is no match, then it adds the new number to the array. And it keeps doing this until all 52 positions of the array are filled. Easy peasy, right?

Next thing we do... Lay out the cards on the table. This is trickier. I'm thinking of using setting depths (if I recall actionscript correctly) and placing each row across. Since we have the cards in a nice random order from the previous routine, we just populate the table (in more than one way) by drawing from the array. Going across 8 columns, and then down to the next row (and a higher depth), until all 52 cards are used.

Since this is done programmatically, we also need some rules for the suits of the cards. Basically since a simple index number between 1 and 52 is the easiest and most obvious way to identify a card, that's what was done already if you haven't figured it out. But we also need to associate the card's index value with it's suit and it's color. Since I went with diamonds, spades, hearts, clubs as the order of suits, this is how associated variable values are figured out. Index numbers 1-13, diamonds. Index 14-26, spades. Index 27-39, hearts. Index 40-52, clubs. Likewise red-black, red-black. So by pulling up any index number, the function automagically lets you know what the card is. And some simple if-greater than statements and some math routines gives the value from the index number. So now we get the traditional cards suits, colors, and values based upon the index number. And again index numbers are what we use to pick and label any of the cards program-wise.

The easiest rule is for the free cells, thus the name of this solitaire card game. Any card may be placed upon an unoccupied free cell. And no other cards may move on an occupied cell. And any card in the "free" cell, may be put back into play on the table or into the dump (foundation) cells.

What's next? We have the four "dump" foundation places. The rules for dumping cards into the foundation is why we needed that variable that "knows" the suit. So we got to make some if-then statements as some rules. If foundation is empty, an ace (1, 14, 27, and 40 from the index) of any suit may go there. If a card of any suit is in the slot, then check that the suits match. If not, disallow the move. Next check to see if the value of the card being placed is that of the lower card +1. If not, then also disallow the move. Once a card is placed into a foundation position, it's no longer allowed in play.

After that, we need the rest of the rules. Which is tricker to implement. On the table, an empy position can be used by any card. Then if a card is in a playable spot, only a card of an alternate color and a value lower by -1 may be placed on it. However the tricky thing to implement is the moving of stacks of cards. (And this is where the Facebook app that inspired the idea is broken.) If you have a stack of alternating cards in downward order, then entire stacks of cards are playable based on the value of the topmost card. But the playable topmost card of a stack is determined by number of free cells and open columns on available the table. The number of cards that can be moved as a stack are 1 + open columns + free cells. (There's also some programmatic trick in the MS version that anticipates some other moves and allows even more cards, depending on how many table columns are empty.)

The tricky thing is figuring out how to keep stacks together. I'll probably have to to assign variables that tell which row and column a card is currently placed in on the table. Then it's a matter of doing some routine that swaps the depths for all the cards in play so they layout properly from a visual perspective when moved. Scripting is fun (*half-sarcastic lol*), isn't it?

And once all cards are played from the table and free cells and into the foundation cells, the game is a win. If no moves are possible to clear the table (I've still got to figure out how that works programatically, I think I'll just have a manual button in my first implementation), then the game is a loss.

I think I'll give this a shot. I already did the card graphics. Now it's time to start digging into my books and reviewing the actionscript stuff. Other things to add are some stats. Total plays, wins, losses, and win/loss ratio. Maybe some time stats too, like fastest game and average play time. (If other freecell players are like I am, they could care less about other ways of scoring.) I'm also thinking of throwing some quirky goodies into the game, that spoofs the king icon in the MS version. Maybe even have it talk and say random insults when a move isn't allowed, just to make it unique and a bit more fun.

Tuesday, August 25, 2009


Pulled this thing I modeled out of my archive and did a render. I'm not even sure what it's supposed to be. Anyhow it just looks cool. Maybe it could be a plot device?

Friday, August 14, 2009

Automotive Design Terminology

Yeah, this should be an interesting post. Maybe these terms have bounced around elsewhere, but I figured it would be neat to gather them and put in this blog post. At one time way back I even made a wiki of this, but it was deleted a long time back. So now I've got to start over from scratch...

Here it goes.

Cab: The enclosed or semi-enclosed volume of the car that contains the driver and vehicle occupants.
Cab forward: The passenger area is weighted to the front of the vehicle.
Cab back: The passenger area is moved to the aft of the vehicle.
Greenhouse: The upper section of the cab surrounded by windows. Thus the term.
Wheel arch: The definitive shape made by side on view of a wheel enclosure.
Wheel bucket: The volume of the wheel enclosure.
Fender: An area of the car body or an attached piece that surrounds a wheel.
Fender flare: an outward exension of the body surrounding the wheel arch.
Quarter-panel: a section of a car body that is removable from the main chassis.
Wing: Rear topside spoiler. U.K. also uses this term for fender.
Beltline: An implied line going through the vertical center of the lower body of a vehicle. Sometimes accentuated with trim or two-tone paint.
Swage line: A distinctive line or crease added to the body of a car that enhances the appearance of a visual shape.
cladding: Pieces of trim added to the lower body of a car. Also to protect body paint from road debris.
Spoilers: Trim or body pieces added to the car with the intent of adding aerodynamic downforce.
Trunk: Rear enclosed portion of a sedan or coupe. U.K. calls this a boot.
ground effects: cladding or lower body spoilers added for more aesthetic purposes than functional ones.
Hood: Forward enclosed portion of the car that typically contains the engine. U.K. calls this a bonnet.
Brightwork: polished chrome trim pieces added to a car.
Jeweled glass: various facets or shiny reflectors seen in lights and reflectors.
Bling: contemporary term for eyecatching brightwork and jeweled glass.
Roof line: the distinctive shape defined by the top surfaces of a vehicle as viewed side-on.
window line: the distinctive shape defined by the lower edge of the greenhouse glass.
wheelbase: distance from bottom of front wheel to bottom of rear wheel.
overhang: distance which overhangs the wheelbase, front or rear.

Monday, August 10, 2009

What are the rates?

I suspect people may want to know how much it costs to get stuff done. So this is what I'm starting out with. I figure they may be on the low side, but since supply exceeds demand at the moment - that's what they are for now.
  • Cover/Advance fee: $40
  • Hourly: $15
  • Rendertime: $15/hr
This is freelance work, no refunds, take-it or leave-it. This means one guy and one computer, so you may have to wait if there are other jobs in the queue. Completed job files will be on a CD or DVD. Additional discs will cost extra.

Pretty simple, huh?

And no, rendertime isn't as cheap as you think it is. I don't have a render-farm yet, and my computer isn't anything new. So you may want to weigh how fancy you want to go on the effects before that process starts. Also rendering is done in Carrara 6. So don't bring outside work unless you're dealing with fairly standard 3D meshes (.obj or .3ds) or actual Carrara .car files. Note that I can do the 3D modeling at the above hourly rate, so I'd suspect you're getting one heck of a deal for the meantime.

When I get more regular work, it's likely I'll adjust the rates again and also come up with an expanded schedule. Of course this depends on what kind of jobs come up. The cheap deal you're getting now is because you're catching me on the startup end. So enjoy it while it lasts, before demand goes up, overhead creeps in, and rates go up.

Oh, and if you're wondering why print runs aren't listed - that's bigger overhead than what I'm able to cover right now. So it has to go outside to be completed. Thus you can either take the graphics files to a service of your own choosing, or you can let me take it to a third party and pass on their rates to you. I figure it's fair to be up front about it so you'll know what you're dealing with.

Sunday, August 09, 2009

Not all my 3D is mechanical

In case people were wondering, not all of my 3D modeling is mechanical type stuff. I do some organic things every now and then. It's just that I'm better at doing things like cars and airplanes and whatnot.
Hope you guys find my hamster amusing. It's probably the most favorited images of mine at one of the graphics forums I post at. Of course it's without the text, but this version is for my own promo type stuff.

What's up now?

Right now, I'm feeling about as scatterbrained as the Colin Bear. And the fact that Sim City 4 Rush Hour is a lot more addictive with the NAM from SimTropolis added doesn't help. I need to get back into the mode of doing something more productive than that.

Anyhow, I got a flyer on my car last week. Apparently someone else local does graphics services. (But of course it was probably targeted more towards my neigbors, being there's a nightclub ad on the opposite side.) I figure I may check them for possible positions, since I'm not the best pitchman when freelancing solo. I'd rather just make art or do fun animations. So if I can join a team, that would help make things easier. If turned down, that flyer may still give some ideas though. I may have to make a small run of promo stuff too. I'm not so keen on dropping stuff on people's cars, but maybe I could find some businesses with corkboards or such and see if I can get permission to post there. Do the thing with tear-offs showing email, etc.

Another option may be using SSID to bring traffic to this site. But I don't exactly like advertizing my wireless. (Which is different than advertizing through wireless. But you have to one for the other to work, right?) I'm sure it can be found other ways, but I'm not keen on making it obvious. However if it helps get something going, that may be a risk worth taking. I'm still not going to give away traffic through the wireless though, since I really don't know who's poking around the park at all times. Friends and trustworthy folks may get access, but that's a limited audience considering where the signal goes.

Thursday, June 18, 2009

Yes, I'm still around

Yes, I'm still around. Just trying to figure out what to do. But mainly I've been bouncing back and forth between posting to job boards and building my own site. At least until get tired of it all and fall into playing with noise makers or video games. It would be nice to have a regular job so I can be forced to focus on one thing long enough such that my other projects would become more interesting in comparison. Then that way I know I'd get them done too. (I know that explanation sounds wierd, but back when I had a regular job I'd write stuff down during breaks so I could get on them a bit during my non-work hours. Being unemployed is problematic with 100 random ideas popping up every day and having nothing make me focus on getting any developed. Having a creative mind is a problem when it gets too noisy. It's a lot like those old cartoons where a character would run in a dozen directions all at once.)

Tuesday, May 05, 2009

Starting sales at TurboSquid

Yes, I know I've made fun of TurboSquid in the past because of overpriced junk. But somebody then poignantly pointed out that it's the artist setting the prices. So I guess I can't entirely call the site on that (but they really should bother to do some product review.) I'm going to be selling some items at TurboSquid soon. Why? Well the other places I've done sales through cater mostly to Poser/Daz figures and such. So if it's not some costume or backdrop for virtual dollies, it tends not to move much. And with flagging sales, they tend to drop my items after a few months. So, I'm going to try my luck at a place where stuff is more miscellaneous. Wish me luck!

Minor update: Took me a bit to figure out some things. Also there has been some price markup on items sold at T.S. This is because they don't allow items to be sold for under $10. But relatively speaking it's still a bargain. (Compare the similar goods!) No longer a cheeseburger priced bargain, but rather my things are pizza priced bargains.

And this is my store at TurboSquid. Feel free to take a look.

Saturday, May 02, 2009

Disney's Recycling

Somebody on one of the forums I go to gave this a link, and I thought it was funny enough to put here. It's funny how much recycling they do, no wonder why they don't want it to go into public domain just yet. lol

Oh yeah, you're going to want the linky! Here it is!
The article at

Tuesday, February 17, 2009

iScribble Rocks!

I'm sure some stuff in my review of iScribble didn't sound the best, but overall I'm liking that particular web-app. No shortage of people to collab with, and the drawing tools level the playing field where you're relying more on technique than anything else. (No secret "hidden" tools or unusual theory to applying some process.)

Here's some links to my works or collabs there, enjoy!:

Saturday, January 24, 2009

A Portfolio Review

A review of various CGI renders and "PhotoShopping", in case anybody visiting wants to get an idea of how diversely I can apply such skills. I would think that the selection is entertaining enough without being too gaudy or odd.

Oh yeah, try not to notice the clipping of images too much. I tried scaling down the cross-linked images enough already, and the blogger CMS still leaves a few rough edges. So there are some things to be desired with the presentation, but I need to get on with doing some other things.

I have this sort of love/hate relationship with 3D rendering. I love it because I can make things that look almost real, and I can make and have stuff in a virtual world that I wouldn't be able to afford otherwise. I hate it because my computer isn't the newest thing, and trying to do some things requires processing power and ties up my computer such that I can't be doing those other things. Some renders take hours, and I'm not at a point where I can build a render-farm just yet.

I just noticed an "oops!" on my biplane above. (Did you notice it?) But since this isn't any commercial project and took some hours to render already, I'll let it go this time. If it was for something more important, I'd re-do or take a money hit on a deadline snafu to make up for it.

Ahh... Good ol' PhotoShop. There's a reason why it's an industry standard. And this is done with an older version. Either 7 or CS, nothing newer than either of those. Anything CS or later is pretty much icing on the cake. Still it makes me wonder why they'd call something stripped down to less than 7 "Essentials". They should just release 7 or the oldest CS under that name, and it would be groovy. Want the extras and toys? Then get the pro version. Still it's neat that I can make my car resemble a micro-machine toy in under an hour or so.

And here's my shopping cart 3D model. Perhaps it's not the most impressive thing to some folks. But guess what, this particular model has actually made me some money. Not huge, "OMG it's a business venture success!" kind of money. But rather, I can get a tank of gas or a pizza every now and then kind of money. It still wouldn't come close to covering rent or anything like that. And the price on it isn't at some ridiculous TurboSquid trumped up value. Nope. It's a reasonable $5.50 or so. Around the price of a typical meal at Burger King. And if you want to download it for that modest sum, it's over at