Two dice with an ATTiny13

A long time ago, I designed my own board using an ATTiny85, a 74HC595, two buttons and 14 LEDs to create a simple board with 2 6-sided dice. Pressing a button would roll one of the dice. It was fun, but I forgot about that project until I decided to redo it again. And this time, I designed a new, round board that would use capacitive buttons. And the result? This video, this design, this Gerber file (zipped) and this picture:

In the above picture you’ll see two round boards, two rectangle boards and two square boards. These are some boards that I’ve been working on.

The rectangular board supports an 74HC165 IC, which is an input shift register. I have a similar board for an output shift register. Basically, the 165 reads voltages (High or Low) from 8 pins to translate them to bits in a byte. The 595 translates bits in a byte back to voltages. Having this on a special board is just practical.

The square board combines the 74HC595 shift register with an ATTiny processor, which is linked again to an ESP8266 module. (The ESP-01.) This basically makes a multi-processing board where the ATTiny can handle various LEDs while the ESP sends commands to the ATTiny based on input from the Internet. And the ESP still has 3 pins available for other input or output. But this board is for a later post…

It’s the round board that matters, though. This is what you need to roll two dice. And it has three major parts. The first part is the design of the board. The second part is choice of hardware. The third part is the code to roll dice.

Design

Two dice, by W.A. ten Brink.

Well, the design is reasonably simple. Power is on the left and the yellow lines are on the top while the orange lines are on the bottom. The 74HC595 has 4 pins per die so with 8 pins I can handle 2 dice. If I want more dice then I would need to chain more of these 595 IC’s. On the right is the 8-pin ATTiny and pins 0 and 1 go to the bottom, allowing communications with “something else”. Three other pins are needed to control the 595. And then there are 14 LEDs consisting of 6 pairs and 2 loose LEDs, resulting in just 4 combinations for every die. Which is exactly what I need.

Hardware

Now, for the hardware I have many options. For my first board, I decided to use an ATTiny13 as this processor is very limited in it’s options. It only has a kilobyte of RAM! And in a time where computers have lots of gigabytes of RAM, a single kilobyte is just unimaginable. It’s slightly more than a thousand characters so this post is likely to be bigger than this RAM can handle. But to roll dice, you don’t need much code…

For the LEDs I’ve picked purple-UV LEDs just for fun. These are pretty clear in the day yet not too bright. And in the dark they provide a blacklight-effect. I did not add any resistors as the whole setup doesn’t use that much power to begin with. These LEDs can handle the voltage.

As for input, I decided to add two capacitive buttons. These will already respond when your finger is near the button so you don’t have to touch them. Which is interesting as I’m planning to cast the LEDs and buttons in resin to give it a smooth surface.

Code

And then the code for all of this. I still needed 105 lines of code but that’s mostly because I use a lot of ‘define’ statements and added several comments. This is the code:

#define CLEARLEFT 0b11110000
#define CLEARRIGHT 0b00001111

#define LEFT_2  0b00000001 // LB-RT
#define LEFT_3  0b00000010 // Horizontal
#define LEFT_4  0b00000100 // RB-LT
#define LEFT_1  0b00001000 // Center
#define RIGHT_2 0b00010000 // LB-RT
#define RIGHT_3 0b00100000 // Horizontal
#define RIGHT_4 0b01000000 // RB-LT
#define RIGHT_1 0b10000000 // Center

#define ROLL_L1 LEFT_1
#define ROLL_L2 LEFT_2
#define ROLL_L3 LEFT_1 | LEFT_2
#define ROLL_L4 LEFT_2 | LEFT_4
#define ROLL_L5 LEFT_1 | LEFT_2 | LEFT_4
#define ROLL_L6 LEFT_2 | LEFT_3 | LEFT_4

#define ROLL_R1 RIGHT_1
#define ROLL_R2 RIGHT_2
#define ROLL_R3 RIGHT_1 | RIGHT_2
#define ROLL_R4 RIGHT_2 | RIGHT_4
#define ROLL_R5 RIGHT_1 | RIGHT_2 | RIGHT_4
#define ROLL_R6 RIGHT_2 | RIGHT_3 | RIGHT_4

// Value of (last) roll.
int left = 0;
int right = 0;
// Pin for left button.
int leftPin = 0;
// Pin for right button
int rightPin = 1;
//Pin connected to data pin of 74HC595
int dataPin = 2;
//Pin connected to clock of 74HC595
int clockPin = 3;
//Pin connected to latch pin of 74HC595
int latchPin = 4;

int LeftValue(int value) {
  switch (value) {
    case 1: return ROLL_L1;
    case 2: return ROLL_L2;
    case 3: return ROLL_L3;
    case 4: return ROLL_L4;
    case 5: return ROLL_L5;
    case 6: return ROLL_L6;
  }
  return 0;
}

int RightValue(int value) {
  switch (value) {
    case 1: return ROLL_R1;
    case 2: return ROLL_R2;
    case 3: return ROLL_R3;
    case 4: return ROLL_R4;
    case 5: return ROLL_R5;
    case 6: return ROLL_R6;
  }
  return 0;
}

void WriteDice() {
  int lastRollValue = 0;
  if (left > 0 && left < 7) lastRollValue = (lastRollValue & CLEARLEFT) | LeftValue(left);
  if (right > 0 && right < 7) lastRollValue = (lastRollValue & CLEARRIGHT) | RightValue(right);
  // Avoid flickering LEDs, disable LEDs.
  digitalWrite(latchPin, LOW);
  // Send out the byte value.
  shiftOut(dataPin, clockPin, MSBFIRST, lastRollValue);
  // Avoid flickering LEDs, enable LEDS.
  digitalWrite(latchPin, HIGH);
}

void setup() {
  randomSeed(millis());
  pinMode(dataPin, OUTPUT);
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  digitalWrite(latchPin, HIGH);
  for (left = 1; left <= 6; left++) {
    for (right = 1; right <= 6; right++) {
      WriteDice();
      delay(10);
    }
  }
  left = 1;
  right = 1;
  WriteDice();
}

int Roll() {
  return random(1, 7);
}

void loop() {
  // Check if we're pressing a button. If so, update time!
  if (digitalRead(leftPin) == HIGH) left = Roll();
  if (digitalRead(rightPin) == HIGH) right = Roll();
  // Display the rolled results.
  WriteDice();
  delay(50);
}

I start by defining the left and right sides. Left are the 4 bits on the right and right are the 4 bits on the left. Meh. I should have thought about that before…

I then define the four channels that each die has. These four channels per die allow me to define the combinations needed to display the values 1 through 6.

All these defines will translate to hardcoded values so that saves a few bytes in variables. But I do need a few global variables, though. I need variables for the pins and I need variables to remember the values of the left and right die. Well, I could have used “define” for the pin values but I seem to prefer to use variables for pins. Not sure why, exactly.

Two functions called LeftValue() and RightValue() are used to translate a number between 1 and 6 to the proper bit-pattern. All other values will result in 0.

The WriteDice() function will handle sending the dice values to the LEDs using the 595. It’s not too complex. Calculate the proper byte value to hold both dice and then send it to the 595. (Turning off the latch so it won’t flicker.)

The setup() function is also a simple one, but I want to show the dice are working during start-up. That’s why I loop through all possible combinations before displaying snake-eyes.

A simple Roll() method returns random values between 1 and 6 so that’s where dice are rolled.

The Loop() function is just checking if any of the input pins is getting a signal. If the voltage is high, it will roll for that die. If low then the old value remains. As this is inside a loop, it will just keep rolling for as long as the voltage is high.

I used touch buttons as input so as long as you keep your finger on it or close above it, it will just keep rolling. Which gives an interesting effect. This is done on purpose, allowing a player to “shake” the dice for a while. But instead of these buttons I could also have chosen another form of input. Even more interesting, I could have set up serial communication over these two pins with another board, allowing a secondary device to control the rolls.

So, I could attack an ESP-01 to it and let the rolls be made over WiFi, sending the results back to some web server. This is where my other board with the ESP-01 and the ATTiny could be used.

Conclusion

It is a bit challenging to come up with a simple idea like this. Especially when you’re still not very experienced in electronics. The use of the ATTiny13 was very challenging because it is so limited in memory. The ATTiny85 has 8 kilobytes of RAM, which is more practical. Still not a lot, but enough for many simple purposes.

The whole device works on a 3.6 volts battery but I want to cast the whole thing into opaque resin just to make it look more interesting. But I’m also considering making another one that is connected to an ESP-01 so it has WiFi capabilities. (The IC’s and ESP won’t be cast inside the resin, though!)

Once it’s finished I should be able to connect it to a battery or USB port or some other power source, which will make sure the voltage doesn’t exceed the 3.6 volts.

The use of raw ATTiny processors is very interesting because of it’s limitations. For a software developer, these IC’s are really interesting as you need to optimise for size, while keeping speed high. You’re thinking more in clock cycles and bits. It’s a huge difference compared to designing a whole website with database backend where the amount of executables is easily megabytes in size while data can exceed gigabytes of disk space. Good developers can think small and big.

Loterijen zijn geldklopperij! (En toch speel ik mee.)

First an apology to my International friends who don’t understand Dutch. Occasionally, I have a topic that’s just more interesting for people in my region than for the whole World. Like this one, where I’m nagging about lotteries in the Netherlands and how they almost force you to buy tickets. I’m especially talking about some lotteries that are mostly known in the Netherlands and target Dutch people so I write this in Dutch. I do know that Google Translate can do an excellent job at translating, though! But if you’re not Dutch then this is probably not so interesting for you.


Heb je wel eens aan een loterij meegedaan? Heb je daarbij ook wel eens wat gewonnen? De meest gehoorde klachten in Nederland is dat het allemaal pure geldklopperij is, dat het vooral de organisatie is die er rijk van wordt en dat als je dan iets is, de prijs meestal niet eens de moeite waard is en vaak niet eens hoger dan je inleg. En ja, zo denk ik er ook over.

Loterijen zijn niet bedacht om geld weg te geven maar om juist geld in te zamelen voor bepaalde doelen. Vaak is het doel gewoon het vullen van de zakken van de organisatoren maar de wetgeving in Nederland heeft daar een redelijk stokje voor gestoken met de kansspel-wetgeving. De Wet op de kansspelen legt strenge regels op aan kansspelen in Nederland en doet dat mede om het risico op een gokverslaving te voorkomen of te verminderen. Maar ook om criminaliteit te bestrijden want met kansspelen kan veel geld verdient worden door de organisatoren. En de organisatoren hebben een zorgplicht ten opzichte van de spelers en moeten hen wijzen op de risico’s, de kansen en vooral ook aangeven wat het doel is van het geld dat de organisator ermee verdient.

Voor loterijen met (grote) geldprijzen is bovendien toestemming nodig van bepaalde overheids-organen en die stellen vaak eisen aan het doel van de opbrengst van deze loterijen. Vandaar dat in Nederland de meeste loterijen zijn verbonden aan goede doelen omdat ze anders gewoon geen toestemming krijgen. Nu kunnen er ook wel loterijen zijn waarbij het doel gewoon het spekken van de zakken van de organisatoren is maar omdat het doel vermeldt moet worden voor de deelnemers is dat iets wat erg onsympathiek over komt en  dus meestal niet als doel wordt gebruikt.

Daarnaast zal bij iedere prijs boven de € 454 ook nog eens 29% kansspelbelasting betaald moeten worden. En dat moet ook aan de deelnemers worden gecommuniceerd! Het is dan best leuk als je dan b.v. € 1.000 wint met de Lotto maar uiteindelijk komt er maar € 710 op je bankrekening. De Staatsloterij is gelukkig zo vriendelijk om de te winnen prijzen te tonen na aftrek van deze belasting maar die kunnen dat makkelijk doen omdat de prijzen vaste bedragen hebben. Bij de Lotto en de Postcodeloterij kan men dat echter niet en rekenen deelnemers zich vaker rijker dan ze werkelijk zullen worden. Van grote geldprijzen wordt vooral de belastingdienst enorm blij omdat ze dan bijna een derde van het prijzengeld ontvangen!

Nu zijn er drie loterijen waar ik aan mee doe. Zo doe ik al decennia lang mee aan de staatsloterij, iets langer dan een jaar aan de Lotto en enkele maanden aan de Postcodeloterij. Ook de Toto heb ik wel eens ingevuld voor de lol en met dit alles heb ik best wisselende resultaten behaald. Maar je verliest er gewoon meer mee dan dat je er mee wint, tenzij je een der gelukkigen bent die een grote hoofdprijs wint. Maar gezien het aantal deelnemers vraag je dan wel om behoorlijk veel geluk.

Ik besloot ooit mee te doen aan de Staatsloterij omdat ik mij bezig hield over hoe alles op deze wereld zo mooi in balans lijkt te zijn en te blijven. En raakt iets uit balans dan vindt het vanzelf een nieuwe balans. En dan hoor je ook nog dingen over Karma en hoe ieders leven eigenlijk ook een kwestie is van balans tussen van alles en nog wat. En ik dacht bij mijzelf dat geluk en pech dus ook een soort van balans met elkaar hebben. Dus heb je geluk met iets dan krijg je pech met iets anders. En omdat ik graag van mijn pech af ben en het best pech is als je de Staatsloterij niet wint besloot ik eraan mee te doen, wetende dat de loterij mijn pech wegneemt en ik iets meer geluk heb met andere zaken. En zo verlies ik iedere maand weer met die loterij en dat brengt mij iedere keer weer een grote glimlach want dan ga ik met iets anders wat extra geluk hebben.

Okay, bijgeloof. Belachelijk om erin te geloven dus echt erin geloven doe ik niet. Maar wat als het toch waar is? Ach, gezien de lage prijs van een enkel lot kan het geen kwaad om gewoon mee te doen en dus doe ik al enkele decennia mee. Het hoogste wat ik daarbij won was € 75 en meestal win ik niets of minder dan mijn inleg. Wat een pech! Maar daar hoor je mij niet over klagen.

Ik ben eventjes met de Toto mee gaan doen tijdens de kampioenschappen en ik moet toegeven dat sport mij totaal niet interesseert en ik niet eens meer weet welke kampioenschappen dat waren. Maar ik deed mee omdat ik toch altijd pech heb met loterijen en dus ging ik bij iedere wedstrijd van het Nederlandse team een tientje inzetten op de tegenstander. Mijn pech zou ervoor zorgen dat ik verloor en dus ook de tegenpartij en dus zou ons Nederlandse team gaan winnen. En eerlijk gezegd kwamen we behoorlijk ver, tot ik een keer vergat in te zetten. Daarna lagen we eruit.

Dus karma bestaat niet,zeg je? Stom bijgeloof? Oh, dat geloof ik ook nog steeds. Ik deed gewoon mee omdat ik sowieso altijd zou winnen. Als ik met de Toto verloor dan zou Nederland kampioen gaan worden. En als Nederland verloor dan had ik een leuk prijsje verdiend om wat leuks mee te doen. Dus ik won iedere keer, behalve die keer dat ik niet had ingezet.

De Toto en de Lotto zijn beiden van dezelfde organisatie dus mijn deelname aan de Toto deed mij ook eens kijken naar de Lotto. Het leek mij wel leuk en je kon je eigen cijfers kiezen en de prijs is ook behoorlijk laag. Best veel trekkingen ook dus veel kansen om mijn pech mee te verliezen. Wel, ik kan wel wat extra geluk gebruiken dus ik besloot mee te gaan doen. En inderdaad, meestal win ik of mijn speltegoed, of een euro of heb ik helemaal geen prijs en daar was ik best tevreden over. Eindelijk wat extra pech kwijt.

En dan heb je een moment dat je het financieel even lastig hebt en wel een extra zakcentje kunt gebruiken om Oktober door te komen. En dan komt het geluk rollen uit dezelfde hoek waar mijn pech naartoe gaat. Ik had opeens 5 cijfers goed, ofwel een prijs van € 1.000 waar dan weer de belasting vanaf moest. Nou, daar hoor je mij dus niet over klagen. Mijn extra pech-verzamelaar heeft dus lekker voor wat extra geluk gezorgd!

Geloof ik in Karma? Nee, echt niet! Maar het wordt mij niet eenvoudig gemaakt…

En in het begin van 2014 kreeg ik bij een bestelling een gratis lot van de postcodeloterij. Even online invullen en je speelt meteen gratis mee. Wel meteen weer opzeggen want anders zit je er voor een jaar aan vast! Ingevuld, meegedaan en meteen weer opgezegd. Ik won niets en had ook niets anders verwacht maar vond dat ik wel die kans had moeten grijpen toen ik deze voor nop kreeg. Enkele maanden later kreeg ik weer een gratis lot dus weer ingevuld en meegedaan en opnieuw niets gewonnen. Tja, jammer maar opnieuw gewoon de kans gegrepen. Alleen jammer dat ik vergat om meteen weer op te zeggen.

Maar dit keer is het mis gegaan met mijn karma. Ik vergat op te zeggen en daardoor speelde ik ook mee met de nieuwjaarstrekking van de Postcodeloterij. En wat zou ik gebaald hebben als ik indertijd wel had opgezegd want de kanjer-prijs viel op de cijfers van mijn postcode! In plaats daarvan werd ik gek toen ik hoorde dat hij op mijn postcode was gevallen, mede ook omdat de letters nog niet bekend waren gemaakt en dit letterlijk een miljoenenprijs is.

Toch is mijn karma nog steeds in balans. Ik had de kerstdagen doorgebracht met een zware griep en een enorm gebrek aan eetlust tijdens het kerstdiner en ik dacht net hersteld te zijn maar het tweede griepje is er gewoon mooi achteraan gekomen. Geluk met de loterij lijkt ten koste te gaan van mijn gezondheid.

En nu wil ik niet eens meer in karma geloven! Dit begint eng te worden.

Maar gelukkig, de letters zijn bekend gemaakt en dat zijn niet mijn letters. Ik hoef de prijs dus niet te delen met een paar andere geluksvogels maar moet hem delen met een groot aantal geluksvogels, waardoor het toch een relatief kleine prijs blijft. (Want zo werkt de Postcodeloterij nu eenmaal.) De kansspelbelasting gaat er ook nog eens van af dus het valt allemaal best mee. Hoe groot de prijs is moet ik nog te horen krijgen.

Maar ik begin bang te worden voor de jackpot van de Staatsloterij die over een paar dagen getrokken gaat worden. Als ik die win dan vrees ik dat mijn gezondheid zoveel pech heeft dat ik in een houten kist afgevoerd kan worden. Dus nee, ik geloof niet in karma want dan kan ik hem toch rustig winnen zonder nare gevolgen…

Tja, ik vind al die loterijen nog steeds geldklopperij die vooral bedoeld zijn om geld te verzamelen voor bepaalde doeleinden. Vrijwel iedereen verliest ermee behalve de belastingdienst en de betreffende doelen. Ennee, karma bestaat niet, behalve in een klein, onzeker hoekje in mijn hoofd dat er voor zorgt dat ik toch maar een lot blijf kopen. Want je weet maar nooit…

 

The FBI in Lithuania wants to pay me 15 million dollars…

 

 

 

I do love some of the spam messages I receive. Especially when the spammers try to pretend they’re the FBI or other important organisation and they want to pay me a few millions. And I can’t really imagine that some people are stupid enough to fall for this. Then again, if they send 5 billion of these messages, the chance is quite big for them to find an idiot or two willing to fall for this.

Those people must be even more brain-dead than the spammers…SpamThis is not a very expensive scam. They just ask for 420 USD instead of thousands of dollars. A payment for the ownership papers or whatever. And they tell me to stop being in contact with the other scammers, which is very good advise.

So? Well, it starts with Mrs. Maria Barnett from Canada. The address seems real, although it has been misused by plenty of other spammers. The address is actually used by an organisation with domain name standardchart.org and is registered by Joseph Sanusi. Too bad that name sounds a bit suspicious since there’s someone in Nigeria with the same name. (The governor of the Central Bank of Nigeria.) He is 75 and I don’t think he’s the spammer, so someone else either has the same name or they’re faking things even more. The domain name is registered but doesn’t seem to be linked to any site or server, because it’s pending a deletion.

Then they refer to Mr. Fred Walters of the FBI. Fred helped Maria to get their money from some Nigerian bank, and they got even a lot more. He even showed her a list of other beneficiaries and my name was on the list and I am eligible to get lots of money too. All I have to do is contact Fred on the email address of Steve Reed in Lithuania, who seems to work at super.lt, which is a Lithuanian website. I don’t really understand the language but Google Translate does. It seems to be an online book store. A strange place for the FBI. I would expect the CIA in that place instead.

Maria herself seems to work for Shaw, a Canadian internet shop. They sell televisions, phones and other stuff. So we have two shops in two different countries that are somehow related by some victim of a Nigerian 419 scam and a FBI agent.

Now, the email headers, visible at the bottom, show some more interesting connections. For example, I notice the name ‘Dealer.achyundai.com’, another chain in the spiderweb of the scammers. That domain is also pending deletion too. The IP address 67.211.119.59 seems to be down too, so it’s likely the scammers have already been taken down.

But this spam message just shows how dumb the spammers make their requests and yet people keep falling for it. If the story was more logical and the email addresses and domain names had actually been more real  then I could understand why people fall for this. But this?

Delivered-To: ********@********.***
Received: by 10.50.87.105 with SMTP id w9csp17960igz;
        Sat, 1 Feb 2014 05:42:38 -0800 (PST)
X-Received: by 10.50.80.75 with SMTP id p11mr1777051igx.19.1391262158192;
        Sat, 01 Feb 2014 05:42:38 -0800 (PST)
Return-Path: <mrs.mariabarnett@shaw.ca>
Received: from Dealer.achyundai.com ([67.211.119.59])
        by mx.google.com with ESMTPS id x1si3519252igl.27.2014.02.01.05.42.07
        for <********@********.***>
        (version=TLSv1 cipher=RC4-SHA bits=128/128);
        Sat, 01 Feb 2014 05:42:38 -0800 (PST)
Received-SPF: softfail (google.com: domain of transitioning mrs.mariabarnett@shaw.ca does not designate 67.211.119.59 as permitted sender) client-ip=67.211.119.59;
Authentication-Results: mx.google.com;
       spf=softfail (google.com: domain of transitioning mrs.mariabarnett@shaw.ca does not designate 67.211.119.59 as permitted sender) smtp.mail=mrs.mariabarnett@shaw.ca
Received: from User (unknown [207.10.37.241])
    by Dealer.achyundai.com (Postfix) with ESMTP id 02525A7FA30B;
    Sat,  1 Feb 2014 06:57:03 -0500 (EST)
Reply-To: <stevereed1@super.lt>
From: "Mrs. Maria Barnett"<mrs.mariabarnett@shaw.ca>
Subject: Make Sure You Read Now.  
Date: Sat, 1 Feb 2014 06:57:10 -0500
MIME-Version: 1.0
Content-Type: text/html;
    charset="Windows-1251"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2600.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
Message-Id: <20140201115704.02525A7FA30B@Dealer.achyundai.com>
To: undisclosed-recipients:;

Creating a nice CGI landscape.

I want a new background for my desktop system. But it’s a dual-monitor system with two monitors with 1920×1200 resolutions. This means that I have to make a very wide image. So I decided to make a wide landscape image. But I don’t want a bunch of trees, some mountains and water, but also some models inside the image, doing something. So I’ve decided to make it a hunting scene. On one side, Raevin with a dangerous gun who is hunting a Brontotherium on the other side. So I first need to create and pose them in Poser. And to make it easy, I just put them both in a single model. I can split them again once it’s imported in Vue. So, here are the models:

Main charactersOf course, I will make them look at one another in Vue. As I said, I will split it in Vue. Just needed to create a proper pose first.

The next step is starting Vue, set the image to 4800×1500 pixels which is the proper scale for my two monitors. I will have to re-size it later on to 3840×1200 to make it fit perfectly, but the larger resolution will also allow me to cut out part of the image as separate images. But size won’t be enough. I need to pick a proper atmosphere, the flow of the landscape, the trees and grass I want and of course I want to add water since that big monster would look nice with his body partially reflected. It also means adding some small splashes and ripples.

So, the atmosphere first. It should be sunny and a bit cloudy, but no real visible clouds. A nice sunset would look great. So I start with this:

Atmosphere

Next, I need to decide where I want the models and have decided to place Raevin on the left, so the prey is on the right. The sunlight from behind will make his shape a bit darker, thus more menacing. The same will be true for Raevin, but I will add a second light on Raevin so she becomes more clear in the image.

But before adding the models, I need to decide on the landscape. I want a few mountains in the background. I also want the animal standing in a lake, so I need water on the right side. But Raevin needs to be on dry land, preferably grassy. So, let’s add some terrain, grass and trees for in the distance.

Plains

It’s still far from perfect but it has a lot of potential  But you will also notice that I have water on the complete foreground, but I want to keep Raevin on dry ground. That makes it a bit complex, but it’s still easily solved. Also, I want to have the animal on top of some rock too, even though that rock would be submerged. It just adds more realism. So, I need to import both now, split them and make some adjustments while placing both on flat rocks. So, let’s first show Raevin in this environment.

Adding RaevinWell, I don’t really want Raevin to hunt this animal. She’s cautious but she has a different target. A lot of improvements are still needed, though. For example, I want some bushes in the image too. But first, that animal… And I have to remember to put a rock beneath his feed and to add splashes because he’s walking through water.

Adding Animal

This is promising to look very nice already. However, trees! I am going to add a third rock, place it behind Raevin and I will add trees to it, so she’s slightly hidden. No good hunter would be on open terrain where any possible prey or dangerous animal could see them…

However, I’ve noticed that the atmosphere seems to degrading with every new preview I render. It seems to be getting brighter and brighter. So I just load the atmosphere again before my next preview. And yes, this could be a bug in Vue, or maybe a problem with my graphics card. I will have to look into that one day. However, for now reloading the atmosphere works just fine, as shown in this preview:

Preview 1The next step is fine-tuning the complete image. Raevin needs to be a bit more shiny, and I don’t like the way her gun looks. So I need to fix her textures, or materials. But the problem is that this image is becoming a bit slow to use, so I will use a trick to speed things up. First, I will save this scene so it’s safe. Then it’s time for a new preview. (I will also add a second light just to highlight Raevin.)

Preview 2

And now it’s starting to look better already. The shiny cybernetic limbs of Raevin are a bit shiny in this preview, but I don’t mind. It adds an extra dimension to the image. It’s time to render this image at its full resolution and highest quality. Considering the amount of objects and reflections in this image, I guess it will take a few hours to finish. First I need to save it and then I’ll start rendering around noon. It will probably take most of the night to finish.

And indeed, the next morning I can see the result. Raevin is really having shining cybernetic limbs, which look very interesting. Not a good thing for a hunter, though. Unfortunately, she seems to be floating a bit above the grass so I might have to adjust that. Maybe I should also change the reflectiveness of her cybernetics. The extra rock with the trees is missing some grass, so I might want to add that too. And the mountains in the background you can see lots and lots of houses. It’s really a lot. It turns the setting away from prehistoric times, which is what I like about it. The brontotherium looks great, though. See for yourself!

Raevin and BrontotheriumUpdate

After considering the above image, I decided that a few details had to be changed. First of all, the background just didn’t look natural enough. The sun is shining very pretty but there are too many houses. Another problem is the shininess of the cybernetic arms and legs, that are too distracting. And there’s a bald spot on the ground where grass is supposed to be.

Rendering a final image is very time-consuming and I knew it would take about a day for the render to be complete. But since I wasn’t happy with the above image, I did render it again with some different details. The scene, lighting and models are still the same, except for the textures of the land and cybernetic limbs. This should be a much better result:

Raevin and BrontotheriumUpdate 2

I’m still not very happy with the final result. Raevin needs to be even lower and she should be aware of the beast that’s about to charge at her. So I turned her around a bit. I also changed some of the bushes in the foreground and added additional plants on the right so the “cameraman” would be hiding behind these.

This minor adjustment resulted in the following image, which is supposed to be the last version:

Raevin and Brontotherium II

 

The web comics I like…

All my life I’ve collected a lot of comics. I still have a huge collection of both European comics and comics from the USA. However, the Internet did have an interesting impact on the world of comics, because today a comic can be published world-wide and all the costs is has are the time to draw the comic plus the costs of maintaining a web server. This is then compensated by income from advertisements on the web site and of course all kinds of merchandise that visitors will like to have. Like t-shirts with their favorite character, printed comic books or plushies.

So my interest started to shift from the paper comics to the web comics. I’ve bookmarked these and every evening I like to quickly check them all for the latest updates, just like I check my mailbox, Facebook messages, LinkedIn status and other online stuff. It’s part of my daily routine and keeps me away from viewing the boring television channels that we have here in the Netherlands. At least online, I’m not bothered by the many advertisements…

So, to start: Dilbert! I do think that everyone who reads my blog will know this comic too. It’s also one that’s heavily syndicated, appearing in many printed newspaper and magazines. Basically, it’s something I recognize personally, since Dilbert is an engineer and he has to deal with unrealistic demands and situations on a daily basis. It’s still amazing how he still keeps up trying to do his best, instead of giving up like Wally, another character from this comic. I often feel like Dilbert, not wanting to give up no matter the odds or the Elbonians who will imprison me and then fire me for working too hard… 🙂

Another favorite won’t be a surprise: Garfield. What’s not to like about a fat, lazy cat whose favorite dinner is food? Here’s a comic that’s been popular for decades, just like Dilbert. And the Internet has opened up a lot of extra revenue for its author, allowing them to explore all kinds of other options to make this comic even more popular. Of course, the Garfield movies and animated series also make this comic a great success.

But how about Garfield minus Garfield? This is an interesting concept based on the Garfield comics. The artist here picks some Garfield comic and will erase the cat from the comic, often leaving just Jon in the result. And interestingly enough, this often results in yet another fun situation.

Basic Instructions is a autobiographic comic where the artist draws himself in discussions with his wife, his friends, his employer and customers or his fantasy self. The fun is more in the texts than in the drawings, though.

Dinosaur Comics is even more about the texts than the artwork. Basically, the artwork is always the same, since the first comic it published. And yes, it’s about dinosaurs and it sometimes refers to God too. Which is funny, since Dinosaurs were created before creation itself. An interesting paradox.

Molly and the Bear is a comic about a little girl and her talking bear. Without the bear, she would have a normal life, like any other girl. But the bear adds some fun and a very strange perspective on the lives of children and adults.

Sandra and Woo is also a comic about a girl with a talking animal. This time, the animal is a raccoon who was raised as a pet, then escaped to the wild before becoming a pet again because he’s addicted to belly rubs. Of course, having talking pets always make for interesting stories.

I am Arg is also a autobiographic comic from a Canadian artist who just likes to create some funny strips about gaming, geeks, girls and more.

How about stick figures? The comic xkcd is definitely a must-read for geeks and comic lovers and is updated on an almost daily basis. The drawings are simple, but the humor often reflects personal feelings and often a deeper insight in things we normally don’t even think about…

What the Duck is a comic about a professional photographer in the shape of a duck. When you’re a professional photographer, this comic is a must-read.

Buni is a comic about intelligent animals. Basically, the main characters are bunnies and there are occasionally other animals in it, all drinking at the bar, experiencing life-like we all do. Often going beyond “normal” situations and exploring interesting thinks like the Leprechaun at the end of the rainbow. (Who tend to be mugged or eaten by flying unicorns…)

Marry me is a comic about a famous female singer who decides to just marry some random fan on the spot, less than a few minutes after seeing one another. What follows is a love story where they start to explore each other on a personal level before deciding if they should annul the marriage again or just continue it. And yes, at the end of the first book they decide to stay married and even have a child together. The second book provides background information about one of the main character, which makes it an even more interesting read.

Dork tower is a role-players comic. If you’ve ever played Dungeons and Dragons, then this is THE comic to read.

Looking for Group is a comic about an elven woman warrior who is exploring his roots and who starts to build up his own kingdom. He’s accompanied by several strange friends including a wizard who seems to be the incarnation of pure evil, yet he seems to do his best to be good.

Goblins is a roleplaying story from the perspective of the characters themselves. Although it started a bit childish, with lot of referrals to the players and game master, it has turned out to become a very serious strip with a great story line.

Avengelyne is the story of a female angel who is cast out of heaven to the mortal world, where she will have to continue fighting the forces of Evil.

Another comic for role-players is Weregeek where being a geek is actually a superpower. It provides a real interesting view on the lives of fantasy role-players that’s actually not that far away from the truth.

Elven is a fantasy comic about the daily lives of elven fantasy characters. It’s more background information about how elven mages and paladins learn to become the warriors that are common in role-playing games. Unfortunately, it now seems to be updated once per year or so. I’m hoping it won’t stop, but the artist seems too occupied with other things to do.

PhD Comics is for students and professors and shows the fun side of the Academic World.

Cyanide & Happiness is a simple-artwork cartoon but with funny punch lines and interesting twists. The humor tends to be meant for adults, not minors, since talking about sex is a common topic.

Foreskin Man is more a protest site against male and female circumcision. This site is trying to enact legislation in the USA that should protect young boys from this kind of penis mutilation. Why? Because in most cases there’s no medical reason to do this kind of surgery. Parents often force this upon their young children for aesthetic or religious reasons. Like female circumcision in Africa, it’s a practice that should be stopped since the victims of these operations have this procedure forced upon them, instead of doing so out of their own free will, after being informed about the pro’s and cons of this procedure. Then again, I am glad my parents left my foreskin intact, which is common for many European men.

Faraday the Blob is about the adventures of a blob, a character with no torso, arms or legs. Yet somehow he seems to manage just fine as if nothing is wrong with him. And yes, this is a comic about an absurd world with absurd situations.

Two guys and Guy is about Guy, a young woman (surprise) and her two male friends. One friend is quite intelligent but also a ruthless scientist. The other friend is as dumb as the Monster of Frankenstein without his brain. And Guy herself is the connection between them.

Next, a set of Pixie Trix comics which tend to be slightly NSFW, but still very fun. Three of them rated PG-13 are about a fantasy world in the Harry Potter style, so there’s an academy for super-humans where they learn to handle their powers without betraying their existence to the real World. The two others are about a bunch of friends and are R-Rated because it tends to be sexually explicit, although it doesn’t really display genitals. (Tits, yes.)

Eerie Cuties is where the fantasy stories start. A young vampire girl will attend the academy for the first time, accompanied by her older sister. However, since this little vampire girl was born on Easter, she doesn’t drink blood. She lives on chocolate instead, making her an interesting character. But as the comic progresses, it will also focus on the lives of the other supernatural students in the academy, including the complex hormonal influences of puberty.

Magick Chicks is a spin-off of Eerie Cuties where a group of witches infiltrate a monster academy. After many episodes it’s still not clear why they had to infiltrate this academy, but they are on a secret mission that they don’t even know about.

Dangerously Chloë is another spin-off of Eerie Cuties. Chloë left the academy to become a full-fledged Succubus and is sent on her first mission. She’s to become the girlfriend of a boy who dropped some of his blood on a Satanic statue by accident. He is granted a wish, and wishes for a girlfriend. Thus, Chloë enters the scene and is to become his girlfriend, harvest his soul and then return to the Demon world, well-fed. Too bad Chloë feels sorry for the boy and now wants to help him to escape this contract with the Devil, without compromising her own work. She just has to find some other girl who wants to become his girlfriend and she happens to know the perfect candidate.

Menage a 3 starts as a story about three guys sharing the same house as roommates. But as it turns out, two of them are gay and are caught by the third friend, naked and ‘connected’. They also planned to leave the house but they had put an advertisement out for a new roommate. Knowing their roommate is straight, they asked for female roommates and as a result, two girls turn up to become the new roommates. From here on, the story is about the relationships that develop between these roommates and their friends. Plus, the straight roommate also turns out to be a virgin, so the new roommates are trying to change this.

Sticky Dilly Buns is a spin-off and is about one of the former male roommates, who decides to live together with a female (former) porn star. That too turns out to be very interesting, since they both share a similar interest in men.

Go Get a Roomie is about a hippy girl named Roomie since she just wanders around, sleeping with anyone who offers her a place to sleep. She’s an alcoholic, a bisexual nymphomaniac and at one point she ends up at the place of Lillian who is first just annoyed about her new roommate, yet tolerates her since she’s too lazy to kick Roomie out. Lillian tends to sleep a lot, having some spiritual-like dreams which she shares with Roomie and Roomie’s friends. And their relationship starts to develop to something stronger in a non-sexual way, although Roomie is definitely interested in making things more sexual.

Finally, Oglaf is a comic about a fantasy world with often some very adult content, yet always placed in a fun way. Occasionally, it will have a comic that is safe to view at work but most of it isn’t. It’s a world where men can become pregnant and where the fountain of doubt is doubtful.

2012 in review

The WordPress.com stats helper monkeys prepared a 2012 annual report for this blog.

Here’s an excerpt:

600 people reached the top of Mt. Everest in 2012. This blog got about 3,700 views in 2012. If every person who reached the top of Mt. Everest viewed this blog, it would have taken 6 years to get that many views.

Click here to see the complete report.

The Jewish Samurai

There once was a powerful Japanese emperor who needed a new chief samurai. So he sent out a declaration through-out the entire known world that he was searching for a chief.
A year passed, and only three people applied for the very demanding position: a Japanese samurai, a Chinese samurai, and a Jewish samurai.
The emperor asked the Japanese samurai to come in and prove why he should be the chief samurai. The Japanese samurai opened a matchbox, and out popped a bumblebee. Whoosh! went his sword. The bumblebee dropped dead, chopped in half.
The emperor exclaimed, “That is very impressive! “The emperor then issued the same challenge to the Chinese samurai, to come in and prove why he should be chosen. The Chinese samurai also opened a matchbox and out buzzed a fly … Whoosh, whoosh, whoosh, whoosh! The fly dropped dead, chopped into four small pieces.
The emperor exclaimed, “That is very impressive!”
Now the emperor turned to the Jewish samurai, and asked him to prove why he should be the chief samurai. The Jewish Samurai opened a matchbox, and out flew a gnat. His flashing sword went Whoosh! But the gnat was still alive and flying around.
The emperor, obviously disappointed, said, “Very ambitious, but why is that gnat not dead?”
The Jewish Samurai just smiled and said, “Circumcision is not meant to kill.”