diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4ec20c0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*/.idea/ +*-assets/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..741e4db --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2014 Levi Lansing + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index f9c7b31..9386711 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,33 @@ -pixel-avatar-generator -====================== +#Pixel-Style Avatar Generator +![Avatar Example](graphics/examples/avatar-0.png?raw=true "Avatar Example") + +I needed a kid-friendly (G rated) avatar generator, preferably PHP based. Inspired by the randomly generated github avatars, but unable to find a satisfactory pre-made solution, I did what I always do and took on the challenge from scratch. Here's the results of my simple PG-rated pixel-style avatar generator, with billions of possible combinations! + +![Avatar Example 1](graphics/examples/avatar-1.png?raw=true "Avatar Example 1") +![Avatar Example 2](graphics/examples/avatar-2.png?raw=true "Avatar Example 2") + +![Avatar Example 3](graphics/examples/avatar-3.png?raw=true "Avatar Example 3") +![Avatar Example 4](graphics/examples/avatar-4.png?raw=true "Avatar Example 4") + +##Usage +It should be pretty straightforward to use- + +``` +// Avatar::render($size = 400, $gender = null, $id = null) +Avatar::render(200, 'male', 'some-reusable-identifier'); +``` +By using an identifier, you can re-generate the identical avatar by sending the same identifier (and gender) later. For my own purposes size is limited to 512 max width/height for performance reasons, but if you plan to generate and cache the avatars, you can go as big as you like! + +If you want to use the output rather than render directly to the output stream, use `Avatar::generate` which returns the image resource. + +##Photoshop file included +Under `graphics/` you'll find `avatars.psd`, a complete photoshop file that produced the layers using the image assets generator. You can add and remove layers, regenerate the layers and then replace the `images/` folder to use your own set. Just make sure the file names begin with the layer name. include `_m`, `_f`, or `_mf` at the end of the file name to designate the layer for Males, Females, or both respectively. + +The generator is set to 20x20px layer sizes. If you create a brand new set with a different resolution you'll want to change the `AVATAR_SIZE` constant in avatar.php. + +##More Examples +![Avatar Examples](graphics/examples/avatars.gif?raw=true "Avatar Examples") + +Enjoy! + +Licensed under the MIT licence. See LICENSE for details. diff --git a/generator/avatars.php b/generator/avatars.php new file mode 100644 index 0000000..0c6bc23 --- /dev/null +++ b/generator/avatars.php @@ -0,0 +1,233 @@ + [], 'female'=>[]]; }, $list); + foreach (scandir(__DIR__ . DIRECTORY_SEPARATOR . 'layers') as $file) { + $layer = self::findLayer($file); + if ($layer) { + if (self::isForMale($file)) + $list[$layer]['male'][] = $file; + if (self::isForFemale($file)) + $list[$layer]['female'][] = $file; + } + } + return $list; + } + + /** + * determine the layer name from a file name + * @param $fileName + * @return null|string + */ + private static function findLayer($fileName) { + $found = ''; + foreach (self::$layers as $layer) { + if (substr_compare($layer, $fileName, 0, strlen($layer), true) == 0) { + if (strlen($layer) > strlen($found)) + $found = $layer; + } + } + return $found == '' ? null : $found; + } + + /** + * determine if the file is meant for male avatars + * @param $fileName + * @return bool + */ + private static function isForMale($fileName) { + return (preg_match('/_f?mf?\.png/', $fileName) > 0 || preg_match('/_[mf]+\.png/', $fileName) == 0); + } + + /** + * determine if the file is meant for female avatars + * @param $fileName + * @return bool + */ + private static function isForFemale($fileName) { + return (preg_match('/_m?fm?\.png/', $fileName) > 0 || preg_match('/_[mf]+\.png/', $fileName) == 0); + } +} \ No newline at end of file diff --git a/generator/index.php b/generator/index.php new file mode 100644 index 0000000..a65d56d --- /dev/null +++ b/generator/index.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/generator/layers/background0.png b/generator/layers/background0.png new file mode 100644 index 0000000..a358aaa Binary files /dev/null and b/generator/layers/background0.png differ diff --git a/generator/layers/background1.png b/generator/layers/background1.png new file mode 100644 index 0000000..33215ad Binary files /dev/null and b/generator/layers/background1.png differ diff --git a/generator/layers/background2.png b/generator/layers/background2.png new file mode 100644 index 0000000..23b9aee Binary files /dev/null and b/generator/layers/background2.png differ diff --git a/generator/layers/background3.png b/generator/layers/background3.png new file mode 100644 index 0000000..f143bf4 Binary files /dev/null and b/generator/layers/background3.png differ diff --git a/generator/layers/background4.png b/generator/layers/background4.png new file mode 100644 index 0000000..3bbde7e Binary files /dev/null and b/generator/layers/background4.png differ diff --git a/generator/layers/background5.png b/generator/layers/background5.png new file mode 100644 index 0000000..64bb0c9 Binary files /dev/null and b/generator/layers/background5.png differ diff --git a/generator/layers/background6.png b/generator/layers/background6.png new file mode 100644 index 0000000..5785236 Binary files /dev/null and b/generator/layers/background6.png differ diff --git a/generator/layers/background7.png b/generator/layers/background7.png new file mode 100644 index 0000000..c737c04 Binary files /dev/null and b/generator/layers/background7.png differ diff --git a/generator/layers/background8.png b/generator/layers/background8.png new file mode 100644 index 0000000..453a0a7 Binary files /dev/null and b/generator/layers/background8.png differ diff --git a/generator/layers/background9.png b/generator/layers/background9.png new file mode 100644 index 0000000..e8c39d6 Binary files /dev/null and b/generator/layers/background9.png differ diff --git a/generator/layers/brow2_mf.png b/generator/layers/brow2_mf.png new file mode 100644 index 0000000..471b00f Binary files /dev/null and b/generator/layers/brow2_mf.png differ diff --git a/generator/layers/brow2a_mf.png b/generator/layers/brow2a_mf.png new file mode 100644 index 0000000..12fe094 Binary files /dev/null and b/generator/layers/brow2a_mf.png differ diff --git a/generator/layers/brow2b_mf.png b/generator/layers/brow2b_mf.png new file mode 100644 index 0000000..46e851c Binary files /dev/null and b/generator/layers/brow2b_mf.png differ diff --git a/generator/layers/brow3_mf.png b/generator/layers/brow3_mf.png new file mode 100644 index 0000000..fc13f69 Binary files /dev/null and b/generator/layers/brow3_mf.png differ diff --git a/generator/layers/brow3a_mf.png b/generator/layers/brow3a_mf.png new file mode 100644 index 0000000..c0b9b2c Binary files /dev/null and b/generator/layers/brow3a_mf.png differ diff --git a/generator/layers/brow4_mf.png b/generator/layers/brow4_mf.png new file mode 100644 index 0000000..53bba56 Binary files /dev/null and b/generator/layers/brow4_mf.png differ diff --git a/generator/layers/brow5_f.png b/generator/layers/brow5_f.png new file mode 100644 index 0000000..38b0177 Binary files /dev/null and b/generator/layers/brow5_f.png differ diff --git a/generator/layers/brow6_m.png b/generator/layers/brow6_m.png new file mode 100644 index 0000000..a598a95 Binary files /dev/null and b/generator/layers/brow6_m.png differ diff --git a/generator/layers/eyes1.png b/generator/layers/eyes1.png new file mode 100644 index 0000000..1998ab4 Binary files /dev/null and b/generator/layers/eyes1.png differ diff --git a/generator/layers/eyes2.png b/generator/layers/eyes2.png new file mode 100644 index 0000000..1343cd1 Binary files /dev/null and b/generator/layers/eyes2.png differ diff --git a/generator/layers/eyes3.png b/generator/layers/eyes3.png new file mode 100644 index 0000000..e54a379 Binary files /dev/null and b/generator/layers/eyes3.png differ diff --git a/generator/layers/eyes4.png b/generator/layers/eyes4.png new file mode 100644 index 0000000..4005af8 Binary files /dev/null and b/generator/layers/eyes4.png differ diff --git a/generator/layers/eyes4a.png b/generator/layers/eyes4a.png new file mode 100644 index 0000000..7754b3e Binary files /dev/null and b/generator/layers/eyes4a.png differ diff --git a/generator/layers/eyes4b.png b/generator/layers/eyes4b.png new file mode 100644 index 0000000..6caf16f Binary files /dev/null and b/generator/layers/eyes4b.png differ diff --git a/generator/layers/eyes4c.png b/generator/layers/eyes4c.png new file mode 100644 index 0000000..10b9ba6 Binary files /dev/null and b/generator/layers/eyes4c.png differ diff --git a/generator/layers/eyes5.png b/generator/layers/eyes5.png new file mode 100644 index 0000000..8e5c5a2 Binary files /dev/null and b/generator/layers/eyes5.png differ diff --git a/generator/layers/eyes5a.png b/generator/layers/eyes5a.png new file mode 100644 index 0000000..7026982 Binary files /dev/null and b/generator/layers/eyes5a.png differ diff --git a/generator/layers/eyes6.png b/generator/layers/eyes6.png new file mode 100644 index 0000000..2a7b3b9 Binary files /dev/null and b/generator/layers/eyes6.png differ diff --git a/generator/layers/eyes7.png b/generator/layers/eyes7.png new file mode 100644 index 0000000..d3499b1 Binary files /dev/null and b/generator/layers/eyes7.png differ diff --git a/generator/layers/face-none_mf.png b/generator/layers/face-none_mf.png new file mode 100644 index 0000000..289ebae Binary files /dev/null and b/generator/layers/face-none_mf.png differ diff --git a/generator/layers/face10_m.png b/generator/layers/face10_m.png new file mode 100644 index 0000000..83fe919 Binary files /dev/null and b/generator/layers/face10_m.png differ diff --git a/generator/layers/face1_f.png b/generator/layers/face1_f.png new file mode 100644 index 0000000..b18b502 Binary files /dev/null and b/generator/layers/face1_f.png differ diff --git a/generator/layers/face1_m.png b/generator/layers/face1_m.png new file mode 100644 index 0000000..d6ee511 Binary files /dev/null and b/generator/layers/face1_m.png differ diff --git a/generator/layers/face2_f.png b/generator/layers/face2_f.png new file mode 100644 index 0000000..467530d Binary files /dev/null and b/generator/layers/face2_f.png differ diff --git a/generator/layers/face2_m.png b/generator/layers/face2_m.png new file mode 100644 index 0000000..d62bdeb Binary files /dev/null and b/generator/layers/face2_m.png differ diff --git a/generator/layers/face3_f.png b/generator/layers/face3_f.png new file mode 100644 index 0000000..a86984a Binary files /dev/null and b/generator/layers/face3_f.png differ diff --git a/generator/layers/face3_m.png b/generator/layers/face3_m.png new file mode 100644 index 0000000..669e74e Binary files /dev/null and b/generator/layers/face3_m.png differ diff --git a/generator/layers/face4_f.png b/generator/layers/face4_f.png new file mode 100644 index 0000000..0ebb9be Binary files /dev/null and b/generator/layers/face4_f.png differ diff --git a/generator/layers/face4_m.png b/generator/layers/face4_m.png new file mode 100644 index 0000000..6dea81e Binary files /dev/null and b/generator/layers/face4_m.png differ diff --git a/generator/layers/face5_f.png b/generator/layers/face5_f.png new file mode 100644 index 0000000..821fa61 Binary files /dev/null and b/generator/layers/face5_f.png differ diff --git a/generator/layers/face5_m.png b/generator/layers/face5_m.png new file mode 100644 index 0000000..2d67cb7 Binary files /dev/null and b/generator/layers/face5_m.png differ diff --git a/generator/layers/face6_m.png b/generator/layers/face6_m.png new file mode 100644 index 0000000..5861a71 Binary files /dev/null and b/generator/layers/face6_m.png differ diff --git a/generator/layers/face7_m.png b/generator/layers/face7_m.png new file mode 100644 index 0000000..a9401b8 Binary files /dev/null and b/generator/layers/face7_m.png differ diff --git a/generator/layers/face8_m.png b/generator/layers/face8_m.png new file mode 100644 index 0000000..f31f5f2 Binary files /dev/null and b/generator/layers/face8_m.png differ diff --git a/generator/layers/face9_m.png b/generator/layers/face9_m.png new file mode 100644 index 0000000..2c26371 Binary files /dev/null and b/generator/layers/face9_m.png differ diff --git a/generator/layers/facewear0-none1_mf.png b/generator/layers/facewear0-none1_mf.png new file mode 100644 index 0000000..a24cdf8 Binary files /dev/null and b/generator/layers/facewear0-none1_mf.png differ diff --git a/generator/layers/facewear0-none2_mf.png b/generator/layers/facewear0-none2_mf.png new file mode 100644 index 0000000..a24cdf8 Binary files /dev/null and b/generator/layers/facewear0-none2_mf.png differ diff --git a/generator/layers/facewear0-none3_mf.png b/generator/layers/facewear0-none3_mf.png new file mode 100644 index 0000000..a24cdf8 Binary files /dev/null and b/generator/layers/facewear0-none3_mf.png differ diff --git a/generator/layers/facewear0-none4_mf.png b/generator/layers/facewear0-none4_mf.png new file mode 100644 index 0000000..d989322 Binary files /dev/null and b/generator/layers/facewear0-none4_mf.png differ diff --git a/generator/layers/facewear0-none5_mf.png b/generator/layers/facewear0-none5_mf.png new file mode 100644 index 0000000..d989322 Binary files /dev/null and b/generator/layers/facewear0-none5_mf.png differ diff --git a/generator/layers/facewear0-none_mf.png b/generator/layers/facewear0-none_mf.png new file mode 100644 index 0000000..9c54f9e Binary files /dev/null and b/generator/layers/facewear0-none_mf.png differ diff --git a/generator/layers/facewear10_f.png b/generator/layers/facewear10_f.png new file mode 100644 index 0000000..4990ce4 Binary files /dev/null and b/generator/layers/facewear10_f.png differ diff --git a/generator/layers/facewear11_f.png b/generator/layers/facewear11_f.png new file mode 100644 index 0000000..88d828e Binary files /dev/null and b/generator/layers/facewear11_f.png differ diff --git a/generator/layers/facewear11a_f.png b/generator/layers/facewear11a_f.png new file mode 100644 index 0000000..5bc102a Binary files /dev/null and b/generator/layers/facewear11a_f.png differ diff --git a/generator/layers/facewear12_f.png b/generator/layers/facewear12_f.png new file mode 100644 index 0000000..f9cbcda Binary files /dev/null and b/generator/layers/facewear12_f.png differ diff --git a/generator/layers/facewear13_f.png b/generator/layers/facewear13_f.png new file mode 100644 index 0000000..036f19e Binary files /dev/null and b/generator/layers/facewear13_f.png differ diff --git a/generator/layers/facewear14_f.png b/generator/layers/facewear14_f.png new file mode 100644 index 0000000..bfc7db7 Binary files /dev/null and b/generator/layers/facewear14_f.png differ diff --git a/generator/layers/facewear15_f.png b/generator/layers/facewear15_f.png new file mode 100644 index 0000000..355da33 Binary files /dev/null and b/generator/layers/facewear15_f.png differ diff --git a/generator/layers/facewear1a_mf.png b/generator/layers/facewear1a_mf.png new file mode 100644 index 0000000..e278152 Binary files /dev/null and b/generator/layers/facewear1a_mf.png differ diff --git a/generator/layers/facewear1b_mf.png b/generator/layers/facewear1b_mf.png new file mode 100644 index 0000000..6e747b4 Binary files /dev/null and b/generator/layers/facewear1b_mf.png differ diff --git a/generator/layers/facewear2_m.png b/generator/layers/facewear2_m.png new file mode 100644 index 0000000..88c3681 Binary files /dev/null and b/generator/layers/facewear2_m.png differ diff --git a/generator/layers/facewear3_mf.png b/generator/layers/facewear3_mf.png new file mode 100644 index 0000000..6fbe2a2 Binary files /dev/null and b/generator/layers/facewear3_mf.png differ diff --git a/generator/layers/facewear4_mf.png b/generator/layers/facewear4_mf.png new file mode 100644 index 0000000..9a3d2b6 Binary files /dev/null and b/generator/layers/facewear4_mf.png differ diff --git a/generator/layers/facewear5_mf.png b/generator/layers/facewear5_mf.png new file mode 100644 index 0000000..8862d0b Binary files /dev/null and b/generator/layers/facewear5_mf.png differ diff --git a/generator/layers/facewear6_m.png b/generator/layers/facewear6_m.png new file mode 100644 index 0000000..72ceb88 Binary files /dev/null and b/generator/layers/facewear6_m.png differ diff --git a/generator/layers/facewear7_f.png b/generator/layers/facewear7_f.png new file mode 100644 index 0000000..53d06ee Binary files /dev/null and b/generator/layers/facewear7_f.png differ diff --git a/generator/layers/facewear8_f.png b/generator/layers/facewear8_f.png new file mode 100644 index 0000000..a1a719a Binary files /dev/null and b/generator/layers/facewear8_f.png differ diff --git a/generator/layers/facewear9_f.png b/generator/layers/facewear9_f.png new file mode 100644 index 0000000..faee8f9 Binary files /dev/null and b/generator/layers/facewear9_f.png differ diff --git a/generator/layers/hair0_m.png b/generator/layers/hair0_m.png new file mode 100644 index 0000000..76492e0 Binary files /dev/null and b/generator/layers/hair0_m.png differ diff --git a/generator/layers/hair10_f.png b/generator/layers/hair10_f.png new file mode 100644 index 0000000..b21064c Binary files /dev/null and b/generator/layers/hair10_f.png differ diff --git a/generator/layers/hair11_f.png b/generator/layers/hair11_f.png new file mode 100644 index 0000000..bf11f90 Binary files /dev/null and b/generator/layers/hair11_f.png differ diff --git a/generator/layers/hair12_f.png b/generator/layers/hair12_f.png new file mode 100644 index 0000000..96238ad Binary files /dev/null and b/generator/layers/hair12_f.png differ diff --git a/generator/layers/hair13_f.png b/generator/layers/hair13_f.png new file mode 100644 index 0000000..3914df1 Binary files /dev/null and b/generator/layers/hair13_f.png differ diff --git a/generator/layers/hair14_f.png b/generator/layers/hair14_f.png new file mode 100644 index 0000000..b303648 Binary files /dev/null and b/generator/layers/hair14_f.png differ diff --git a/generator/layers/hair15_m.png b/generator/layers/hair15_m.png new file mode 100644 index 0000000..7731cb9 Binary files /dev/null and b/generator/layers/hair15_m.png differ diff --git a/generator/layers/hair16_f.png b/generator/layers/hair16_f.png new file mode 100644 index 0000000..c3d0459 Binary files /dev/null and b/generator/layers/hair16_f.png differ diff --git a/generator/layers/hair16_m.png b/generator/layers/hair16_m.png new file mode 100644 index 0000000..5e45cef Binary files /dev/null and b/generator/layers/hair16_m.png differ diff --git a/generator/layers/hair17_f.png b/generator/layers/hair17_f.png new file mode 100644 index 0000000..378faa2 Binary files /dev/null and b/generator/layers/hair17_f.png differ diff --git a/generator/layers/hair17_m.png b/generator/layers/hair17_m.png new file mode 100644 index 0000000..0f4b18c Binary files /dev/null and b/generator/layers/hair17_m.png differ diff --git a/generator/layers/hair18_f.png b/generator/layers/hair18_f.png new file mode 100644 index 0000000..58d2c9e Binary files /dev/null and b/generator/layers/hair18_f.png differ diff --git a/generator/layers/hair18_m.png b/generator/layers/hair18_m.png new file mode 100644 index 0000000..e413fbd Binary files /dev/null and b/generator/layers/hair18_m.png differ diff --git a/generator/layers/hair19_f.png b/generator/layers/hair19_f.png new file mode 100644 index 0000000..8c242b8 Binary files /dev/null and b/generator/layers/hair19_f.png differ diff --git a/generator/layers/hair19_m.png b/generator/layers/hair19_m.png new file mode 100644 index 0000000..9626cbc Binary files /dev/null and b/generator/layers/hair19_m.png differ diff --git a/generator/layers/hair1_m.png b/generator/layers/hair1_m.png new file mode 100644 index 0000000..51b0b62 Binary files /dev/null and b/generator/layers/hair1_m.png differ diff --git a/generator/layers/hair20_f.png b/generator/layers/hair20_f.png new file mode 100644 index 0000000..d9d0f67 Binary files /dev/null and b/generator/layers/hair20_f.png differ diff --git a/generator/layers/hair20_m.png b/generator/layers/hair20_m.png new file mode 100644 index 0000000..716812e Binary files /dev/null and b/generator/layers/hair20_m.png differ diff --git a/generator/layers/hair21_f.png b/generator/layers/hair21_f.png new file mode 100644 index 0000000..53a4c6d Binary files /dev/null and b/generator/layers/hair21_f.png differ diff --git a/generator/layers/hair21_m.png b/generator/layers/hair21_m.png new file mode 100644 index 0000000..dff475d Binary files /dev/null and b/generator/layers/hair21_m.png differ diff --git a/generator/layers/hair22_f.png b/generator/layers/hair22_f.png new file mode 100644 index 0000000..ec3dc93 Binary files /dev/null and b/generator/layers/hair22_f.png differ diff --git a/generator/layers/hair23_f.png b/generator/layers/hair23_f.png new file mode 100644 index 0000000..53d64b1 Binary files /dev/null and b/generator/layers/hair23_f.png differ diff --git a/generator/layers/hair24_f.png b/generator/layers/hair24_f.png new file mode 100644 index 0000000..4eb1a52 Binary files /dev/null and b/generator/layers/hair24_f.png differ diff --git a/generator/layers/hair2_m.png b/generator/layers/hair2_m.png new file mode 100644 index 0000000..513f7f4 Binary files /dev/null and b/generator/layers/hair2_m.png differ diff --git a/generator/layers/hair3_m.png b/generator/layers/hair3_m.png new file mode 100644 index 0000000..9e51299 Binary files /dev/null and b/generator/layers/hair3_m.png differ diff --git a/generator/layers/hair4_m.png b/generator/layers/hair4_m.png new file mode 100644 index 0000000..bdc54c2 Binary files /dev/null and b/generator/layers/hair4_m.png differ diff --git a/generator/layers/hair5_m.png b/generator/layers/hair5_m.png new file mode 100644 index 0000000..585ac36 Binary files /dev/null and b/generator/layers/hair5_m.png differ diff --git a/generator/layers/hair6_m.png b/generator/layers/hair6_m.png new file mode 100644 index 0000000..32dae7e Binary files /dev/null and b/generator/layers/hair6_m.png differ diff --git a/generator/layers/hair7_m.png b/generator/layers/hair7_m.png new file mode 100644 index 0000000..55cc755 Binary files /dev/null and b/generator/layers/hair7_m.png differ diff --git a/generator/layers/hair8_m.png b/generator/layers/hair8_m.png new file mode 100644 index 0000000..12e9ce1 Binary files /dev/null and b/generator/layers/hair8_m.png differ diff --git a/generator/layers/hair9_f.png b/generator/layers/hair9_f.png new file mode 100644 index 0000000..b4955d2 Binary files /dev/null and b/generator/layers/hair9_f.png differ diff --git a/generator/layers/mouth02_mf.png b/generator/layers/mouth02_mf.png new file mode 100644 index 0000000..18e3181 Binary files /dev/null and b/generator/layers/mouth02_mf.png differ diff --git a/generator/layers/mouth04_mf.png b/generator/layers/mouth04_mf.png new file mode 100644 index 0000000..42f43e3 Binary files /dev/null and b/generator/layers/mouth04_mf.png differ diff --git a/generator/layers/mouth05_mf.png b/generator/layers/mouth05_mf.png new file mode 100644 index 0000000..4327617 Binary files /dev/null and b/generator/layers/mouth05_mf.png differ diff --git a/generator/layers/mouth06_mf.png b/generator/layers/mouth06_mf.png new file mode 100644 index 0000000..85bfcce Binary files /dev/null and b/generator/layers/mouth06_mf.png differ diff --git a/generator/layers/mouth09_mf.png b/generator/layers/mouth09_mf.png new file mode 100644 index 0000000..c0cf653 Binary files /dev/null and b/generator/layers/mouth09_mf.png differ diff --git a/generator/layers/mouth10_mf.png b/generator/layers/mouth10_mf.png new file mode 100644 index 0000000..de0be13 Binary files /dev/null and b/generator/layers/mouth10_mf.png differ diff --git a/generator/layers/mouth11_mf.png b/generator/layers/mouth11_mf.png new file mode 100644 index 0000000..17673ab Binary files /dev/null and b/generator/layers/mouth11_mf.png differ diff --git a/generator/layers/mouth13_mf.png b/generator/layers/mouth13_mf.png new file mode 100644 index 0000000..a57da35 Binary files /dev/null and b/generator/layers/mouth13_mf.png differ diff --git a/generator/layers/mouth14_mf.png b/generator/layers/mouth14_mf.png new file mode 100644 index 0000000..0866478 Binary files /dev/null and b/generator/layers/mouth14_mf.png differ diff --git a/generator/layers/mouth20_f.png b/generator/layers/mouth20_f.png new file mode 100644 index 0000000..b437e65 Binary files /dev/null and b/generator/layers/mouth20_f.png differ diff --git a/generator/layers/mouth20_m.png b/generator/layers/mouth20_m.png new file mode 100644 index 0000000..6a44b2f Binary files /dev/null and b/generator/layers/mouth20_m.png differ diff --git a/generator/layers/mouth21_f.png b/generator/layers/mouth21_f.png new file mode 100644 index 0000000..bd0ebd7 Binary files /dev/null and b/generator/layers/mouth21_f.png differ diff --git a/generator/layers/mouth21_m.png b/generator/layers/mouth21_m.png new file mode 100644 index 0000000..d378d1c Binary files /dev/null and b/generator/layers/mouth21_m.png differ diff --git a/generator/layers/mouth22_f.png b/generator/layers/mouth22_f.png new file mode 100644 index 0000000..46b6bce Binary files /dev/null and b/generator/layers/mouth22_f.png differ diff --git a/generator/layers/shirt1_m.png b/generator/layers/shirt1_m.png new file mode 100644 index 0000000..aca72b0 Binary files /dev/null and b/generator/layers/shirt1_m.png differ diff --git a/generator/layers/shirt1a_m.png b/generator/layers/shirt1a_m.png new file mode 100644 index 0000000..d1b5d7c Binary files /dev/null and b/generator/layers/shirt1a_m.png differ diff --git a/generator/layers/shirt1b_m.png b/generator/layers/shirt1b_m.png new file mode 100644 index 0000000..298a00c Binary files /dev/null and b/generator/layers/shirt1b_m.png differ diff --git a/generator/layers/shirt1c_m.png b/generator/layers/shirt1c_m.png new file mode 100644 index 0000000..7cd41b7 Binary files /dev/null and b/generator/layers/shirt1c_m.png differ diff --git a/generator/layers/shirt2_f.png b/generator/layers/shirt2_f.png new file mode 100644 index 0000000..920e9fd Binary files /dev/null and b/generator/layers/shirt2_f.png differ diff --git a/generator/layers/shirt2_m.png b/generator/layers/shirt2_m.png new file mode 100644 index 0000000..6fad948 Binary files /dev/null and b/generator/layers/shirt2_m.png differ diff --git a/generator/layers/shirt2a_f.png b/generator/layers/shirt2a_f.png new file mode 100644 index 0000000..fcb06de Binary files /dev/null and b/generator/layers/shirt2a_f.png differ diff --git a/generator/layers/shirt2a_m.png b/generator/layers/shirt2a_m.png new file mode 100644 index 0000000..d1cdf5d Binary files /dev/null and b/generator/layers/shirt2a_m.png differ diff --git a/generator/layers/shirt2b_f.png b/generator/layers/shirt2b_f.png new file mode 100644 index 0000000..dc3e85e Binary files /dev/null and b/generator/layers/shirt2b_f.png differ diff --git a/generator/layers/shirt3_f.png b/generator/layers/shirt3_f.png new file mode 100644 index 0000000..e2767c2 Binary files /dev/null and b/generator/layers/shirt3_f.png differ diff --git a/generator/layers/shirt3_m.png b/generator/layers/shirt3_m.png new file mode 100644 index 0000000..c432fd2 Binary files /dev/null and b/generator/layers/shirt3_m.png differ diff --git a/generator/layers/shirt3a_f.png b/generator/layers/shirt3a_f.png new file mode 100644 index 0000000..619e96f Binary files /dev/null and b/generator/layers/shirt3a_f.png differ diff --git a/generator/layers/shirt3a_m.png b/generator/layers/shirt3a_m.png new file mode 100644 index 0000000..a9e33c0 Binary files /dev/null and b/generator/layers/shirt3a_m.png differ diff --git a/generator/layers/shirt3b_f.png b/generator/layers/shirt3b_f.png new file mode 100644 index 0000000..3b90d62 Binary files /dev/null and b/generator/layers/shirt3b_f.png differ diff --git a/generator/layers/shirt3c_f.png b/generator/layers/shirt3c_f.png new file mode 100644 index 0000000..771e981 Binary files /dev/null and b/generator/layers/shirt3c_f.png differ diff --git a/generator/layers/shirt3d_f.png b/generator/layers/shirt3d_f.png new file mode 100644 index 0000000..da612dc Binary files /dev/null and b/generator/layers/shirt3d_f.png differ diff --git a/generator/layers/shirt4_f.png b/generator/layers/shirt4_f.png new file mode 100644 index 0000000..2dc4590 Binary files /dev/null and b/generator/layers/shirt4_f.png differ diff --git a/generator/layers/shirt4_m.png b/generator/layers/shirt4_m.png new file mode 100644 index 0000000..0d840a3 Binary files /dev/null and b/generator/layers/shirt4_m.png differ diff --git a/generator/layers/shirt4a_f.png b/generator/layers/shirt4a_f.png new file mode 100644 index 0000000..80f4c8e Binary files /dev/null and b/generator/layers/shirt4a_f.png differ diff --git a/generator/layers/shirt4a_m.png b/generator/layers/shirt4a_m.png new file mode 100644 index 0000000..45614f7 Binary files /dev/null and b/generator/layers/shirt4a_m.png differ diff --git a/generator/layers/shirt4b_f.png b/generator/layers/shirt4b_f.png new file mode 100644 index 0000000..0e81ac7 Binary files /dev/null and b/generator/layers/shirt4b_f.png differ diff --git a/generator/layers/shirt4b_m.png b/generator/layers/shirt4b_m.png new file mode 100644 index 0000000..71bf99a Binary files /dev/null and b/generator/layers/shirt4b_m.png differ diff --git a/generator/layers/shirt4c_m.png b/generator/layers/shirt4c_m.png new file mode 100644 index 0000000..e11fb06 Binary files /dev/null and b/generator/layers/shirt4c_m.png differ diff --git a/generator/layers/shirt5_m.png b/generator/layers/shirt5_m.png new file mode 100644 index 0000000..859aeac Binary files /dev/null and b/generator/layers/shirt5_m.png differ diff --git a/generator/layers/shirt5a_m.png b/generator/layers/shirt5a_m.png new file mode 100644 index 0000000..ec1d73d Binary files /dev/null and b/generator/layers/shirt5a_m.png differ diff --git a/generator/layers/shirt5b_f.png b/generator/layers/shirt5b_f.png new file mode 100644 index 0000000..232cf60 Binary files /dev/null and b/generator/layers/shirt5b_f.png differ diff --git a/generator/layers/shirt5b_m.png b/generator/layers/shirt5b_m.png new file mode 100644 index 0000000..b1649f4 Binary files /dev/null and b/generator/layers/shirt5b_m.png differ diff --git a/generator/layers/shirt6_f.png b/generator/layers/shirt6_f.png new file mode 100644 index 0000000..3bf792e Binary files /dev/null and b/generator/layers/shirt6_f.png differ diff --git a/generator/layers/shirt6_m.png b/generator/layers/shirt6_m.png new file mode 100644 index 0000000..2459ff3 Binary files /dev/null and b/generator/layers/shirt6_m.png differ diff --git a/generator/layers/shirt6a_f.png b/generator/layers/shirt6a_f.png new file mode 100644 index 0000000..acafc9a Binary files /dev/null and b/generator/layers/shirt6a_f.png differ diff --git a/generator/layers/shirt6a_m.png b/generator/layers/shirt6a_m.png new file mode 100644 index 0000000..9a2e92d Binary files /dev/null and b/generator/layers/shirt6a_m.png differ diff --git a/generator/layers/shirt6b_f.png b/generator/layers/shirt6b_f.png new file mode 100644 index 0000000..c66196d Binary files /dev/null and b/generator/layers/shirt6b_f.png differ diff --git a/generator/layers/shirt6b_m.png b/generator/layers/shirt6b_m.png new file mode 100644 index 0000000..ade1196 Binary files /dev/null and b/generator/layers/shirt6b_m.png differ diff --git a/generator/layers/shirt7_f.png b/generator/layers/shirt7_f.png new file mode 100644 index 0000000..fcd4325 Binary files /dev/null and b/generator/layers/shirt7_f.png differ diff --git a/generator/layers/shirt7a_f.png b/generator/layers/shirt7a_f.png new file mode 100644 index 0000000..be81010 Binary files /dev/null and b/generator/layers/shirt7a_f.png differ diff --git a/generator/layers/shirt7b_f.png b/generator/layers/shirt7b_f.png new file mode 100644 index 0000000..a5e0fc0 Binary files /dev/null and b/generator/layers/shirt7b_f.png differ diff --git a/generator/layers/shirt7c_f.png b/generator/layers/shirt7c_f.png new file mode 100644 index 0000000..e18dc16 Binary files /dev/null and b/generator/layers/shirt7c_f.png differ diff --git a/generator/layers/skin0_f.png b/generator/layers/skin0_f.png new file mode 100644 index 0000000..fb429f0 Binary files /dev/null and b/generator/layers/skin0_f.png differ diff --git a/generator/layers/skin0_m.png b/generator/layers/skin0_m.png new file mode 100644 index 0000000..c7a0ff4 Binary files /dev/null and b/generator/layers/skin0_m.png differ diff --git a/generator/layers/skin1_f.png b/generator/layers/skin1_f.png new file mode 100644 index 0000000..30a8ddb Binary files /dev/null and b/generator/layers/skin1_f.png differ diff --git a/generator/layers/skin1_m.png b/generator/layers/skin1_m.png new file mode 100644 index 0000000..00d9836 Binary files /dev/null and b/generator/layers/skin1_m.png differ diff --git a/generator/layers/skin2_f.png b/generator/layers/skin2_f.png new file mode 100644 index 0000000..97c44fb Binary files /dev/null and b/generator/layers/skin2_f.png differ diff --git a/generator/layers/skin2_m.png b/generator/layers/skin2_m.png new file mode 100644 index 0000000..06ab0f3 Binary files /dev/null and b/generator/layers/skin2_m.png differ diff --git a/generator/layers/skin3_f.png b/generator/layers/skin3_f.png new file mode 100644 index 0000000..34d22e1 Binary files /dev/null and b/generator/layers/skin3_f.png differ diff --git a/generator/layers/skin3_m.png b/generator/layers/skin3_m.png new file mode 100644 index 0000000..9533d99 Binary files /dev/null and b/generator/layers/skin3_m.png differ diff --git a/generator/layers/skin4_f.png b/generator/layers/skin4_f.png new file mode 100644 index 0000000..2a431bc Binary files /dev/null and b/generator/layers/skin4_f.png differ diff --git a/generator/layers/skin4_m.png b/generator/layers/skin4_m.png new file mode 100644 index 0000000..ac7aef3 Binary files /dev/null and b/generator/layers/skin4_m.png differ diff --git a/graphics/avatars.psd b/graphics/avatars.psd new file mode 100644 index 0000000..39dfa4d Binary files /dev/null and b/graphics/avatars.psd differ diff --git a/graphics/examples/avatar-0.png b/graphics/examples/avatar-0.png new file mode 100644 index 0000000..181f1d8 Binary files /dev/null and b/graphics/examples/avatar-0.png differ diff --git a/graphics/examples/avatar-1.png b/graphics/examples/avatar-1.png new file mode 100644 index 0000000..7b66ca2 Binary files /dev/null and b/graphics/examples/avatar-1.png differ diff --git a/graphics/examples/avatar-10.png b/graphics/examples/avatar-10.png new file mode 100644 index 0000000..4e5bf9b Binary files /dev/null and b/graphics/examples/avatar-10.png differ diff --git a/graphics/examples/avatar-11.png b/graphics/examples/avatar-11.png new file mode 100644 index 0000000..ebdcce7 Binary files /dev/null and b/graphics/examples/avatar-11.png differ diff --git a/graphics/examples/avatar-12.png b/graphics/examples/avatar-12.png new file mode 100644 index 0000000..9f14cc5 Binary files /dev/null and b/graphics/examples/avatar-12.png differ diff --git a/graphics/examples/avatar-13.png b/graphics/examples/avatar-13.png new file mode 100644 index 0000000..78fc248 Binary files /dev/null and b/graphics/examples/avatar-13.png differ diff --git a/graphics/examples/avatar-14.png b/graphics/examples/avatar-14.png new file mode 100644 index 0000000..ca5727b Binary files /dev/null and b/graphics/examples/avatar-14.png differ diff --git a/graphics/examples/avatar-15.png b/graphics/examples/avatar-15.png new file mode 100644 index 0000000..0c311dd Binary files /dev/null and b/graphics/examples/avatar-15.png differ diff --git a/graphics/examples/avatar-16.png b/graphics/examples/avatar-16.png new file mode 100644 index 0000000..a84b818 Binary files /dev/null and b/graphics/examples/avatar-16.png differ diff --git a/graphics/examples/avatar-17.png b/graphics/examples/avatar-17.png new file mode 100644 index 0000000..58f55d7 Binary files /dev/null and b/graphics/examples/avatar-17.png differ diff --git a/graphics/examples/avatar-18.png b/graphics/examples/avatar-18.png new file mode 100644 index 0000000..8472116 Binary files /dev/null and b/graphics/examples/avatar-18.png differ diff --git a/graphics/examples/avatar-19.png b/graphics/examples/avatar-19.png new file mode 100644 index 0000000..aa86a0f Binary files /dev/null and b/graphics/examples/avatar-19.png differ diff --git a/graphics/examples/avatar-2.png b/graphics/examples/avatar-2.png new file mode 100644 index 0000000..ded8669 Binary files /dev/null and b/graphics/examples/avatar-2.png differ diff --git a/graphics/examples/avatar-20.png b/graphics/examples/avatar-20.png new file mode 100644 index 0000000..233e5ab Binary files /dev/null and b/graphics/examples/avatar-20.png differ diff --git a/graphics/examples/avatar-21.png b/graphics/examples/avatar-21.png new file mode 100644 index 0000000..b973fa3 Binary files /dev/null and b/graphics/examples/avatar-21.png differ diff --git a/graphics/examples/avatar-22.png b/graphics/examples/avatar-22.png new file mode 100644 index 0000000..41d6814 Binary files /dev/null and b/graphics/examples/avatar-22.png differ diff --git a/graphics/examples/avatar-23.png b/graphics/examples/avatar-23.png new file mode 100644 index 0000000..907c2f1 Binary files /dev/null and b/graphics/examples/avatar-23.png differ diff --git a/graphics/examples/avatar-24.png b/graphics/examples/avatar-24.png new file mode 100644 index 0000000..119f4f1 Binary files /dev/null and b/graphics/examples/avatar-24.png differ diff --git a/graphics/examples/avatar-25.png b/graphics/examples/avatar-25.png new file mode 100644 index 0000000..ddd8626 Binary files /dev/null and b/graphics/examples/avatar-25.png differ diff --git a/graphics/examples/avatar-26.png b/graphics/examples/avatar-26.png new file mode 100644 index 0000000..1093926 Binary files /dev/null and b/graphics/examples/avatar-26.png differ diff --git a/graphics/examples/avatar-27.png b/graphics/examples/avatar-27.png new file mode 100644 index 0000000..d9909a6 Binary files /dev/null and b/graphics/examples/avatar-27.png differ diff --git a/graphics/examples/avatar-28.png b/graphics/examples/avatar-28.png new file mode 100644 index 0000000..515851e Binary files /dev/null and b/graphics/examples/avatar-28.png differ diff --git a/graphics/examples/avatar-29.png b/graphics/examples/avatar-29.png new file mode 100644 index 0000000..5b25320 Binary files /dev/null and b/graphics/examples/avatar-29.png differ diff --git a/graphics/examples/avatar-3.png b/graphics/examples/avatar-3.png new file mode 100644 index 0000000..b3cde0b Binary files /dev/null and b/graphics/examples/avatar-3.png differ diff --git a/graphics/examples/avatar-30.png b/graphics/examples/avatar-30.png new file mode 100644 index 0000000..bb7978a Binary files /dev/null and b/graphics/examples/avatar-30.png differ diff --git a/graphics/examples/avatar-4.png b/graphics/examples/avatar-4.png new file mode 100644 index 0000000..c2b9371 Binary files /dev/null and b/graphics/examples/avatar-4.png differ diff --git a/graphics/examples/avatar-5.png b/graphics/examples/avatar-5.png new file mode 100644 index 0000000..38a2b21 Binary files /dev/null and b/graphics/examples/avatar-5.png differ diff --git a/graphics/examples/avatar-6.png b/graphics/examples/avatar-6.png new file mode 100644 index 0000000..1974a1f Binary files /dev/null and b/graphics/examples/avatar-6.png differ diff --git a/graphics/examples/avatar-7.png b/graphics/examples/avatar-7.png new file mode 100644 index 0000000..fae0ebf Binary files /dev/null and b/graphics/examples/avatar-7.png differ diff --git a/graphics/examples/avatar-8.png b/graphics/examples/avatar-8.png new file mode 100644 index 0000000..d5a88e8 Binary files /dev/null and b/graphics/examples/avatar-8.png differ diff --git a/graphics/examples/avatar-9.png b/graphics/examples/avatar-9.png new file mode 100644 index 0000000..cc72abc Binary files /dev/null and b/graphics/examples/avatar-9.png differ diff --git a/graphics/examples/avatars.gif b/graphics/examples/avatars.gif new file mode 100644 index 0000000..f4107c1 Binary files /dev/null and b/graphics/examples/avatars.gif differ