• Laptop Keyboard Repair - Razer Blade 14" (2013)

    My Winter break took an unexpected turn when two keys on my laptop stopped working, after a minor water “incident”. What initially seemed like a series of repeated typos, would eventually lead me on a multi-day journey to tear apart my laptop and its keyboard to find and repair the culprit.

    This is the story of that quest and all it’s struggles, written entirely on the keyboard that’s been given a second chance at life.

  • Model a Day - Day 17: Rook

    Half way done with the chess pieces, and now I’m ready to just wrap it up. Well, except for the knight… I’m looking forward to that one, which is why it’s saved for last. There’s nothing particularlly special about today’s rook, besides it being a required part out the set.

    As this was more an excersise of previous techniques, I turned it into a mini time challange for myself. At just over half an hour, it’s one of the quicker models I’ve made to date, and the shortest from the chess set.

    Total Time: 33 minutes

    [ download: chess_rook.blend ]

  • Model a Day - Day 16: The Queen

    Following the chess theme, next up is the queen.

    If you’ve been following the progression from the pawn and bishop, you may have noticed the pattern of progression is going from the simple pieces to the ones with the most challenging shapes to build. The complexity in the queen comes from her crown, and it was a fun challenge to tackle. I had to try a couple techniques because the first one resulting in points that were.. well uhm, too pointy I guess.

    Speaking of redoing things, remember to bump your undo limit all the way up in your “user preferences”, because 32 is insufficient for when you mess up your crown (and mess it up you will). Also, save, save, save!

    Total Time: ~1 hour

    [ download: chess_queen.blend ]

  • Model a Day - Day 15: Chess Bishop

    Following the pawn from yesterday, is today’s bishop model. The bishop was a bit more fun to build than the pawn, and I got to mess around with the boolean modifer some to cut out the notch for his fancy little hat.

    Total Time: ~1 hour

    [ download: chess_bishop.blend ]

  • Model a Day - Day 14: Happy 4th!

    Happy 4th of July! I’m celebrating over here by venturing into VFX with absolutely no guidance or proper supervision (ahh, found memories of lighting of fireworks in the neighborhood :-Þ). While I managed to not mess things up horribly, I should probably find some tutorials before playing around with particles again.

    Total Time: ~45 minutes

    [ download: sparkler.blend ]

  • Model a Day - Day 13: Chess Pawn

    As you may have guessed, the current lesson plan for the Udemy course I’ve been following revolves around chess. My first piece from the set is a modest pawn, shown in the render above. Although the lesson didn’t cover any major new topics, it was a good exercise using some of the techniques that are starting to become familiar. Plus, building a chess board seems like a necessary right of passage, similar to printing the fibonacci sequence or blinding implementing bubble sort.

    Total Time: 45 minutes

    [ download: chess_pawn.blend ]

  • Model a Day - Day 12: Bowling Action Scene

    It would be entirely irresponsible to build Bowling Pins and a Bowling Ball and then just let them sit there idle. So, being the upstanding member of the 3d modeling community that I am, I assembled the above action shot to breath some life into those dusty assets. A single still frame of a likely strike, which almost assuridly will result in one spinning & wobbly, yet ultimately sturdy and stubborn, asshole pin. You can almost fell the shattered hopes.

    I enjoyed playing around with the reflective properties of the floor material, and I feel like a small, faint understanding of how to interlay diffuse and specular color properties might be starting to take root.

    Total Time: 1 hour

    [ download: bowling_pin.blend ]

  • Model a Day - Day 11: Bowling Ball

    There won’t be any awards for this quick model, but it will go nicely with the Bowling Pins I made yesterday. Made from an ICO sphere following the Udemy course I signed up for. (And yes, the finger holes are way too small)

    Total Time: 25 minutes

    [ download: bowling_ball.blend ]

  • Model a Day - Day 10: Bowling Pin

    Today’s Udemy course focused on building simple curved models. After a quick refresher on Bézier curves and importing reference images, we were all set to map the edge of a bowling pin with a spline. Once the profile of the curve was set, the Blender rotate tool quickly turned the cureve into a nice 3d model. A couple simple materials later for the pin and the stripe, and you’ve got yourself a brand new bowling pin asset.

    Total Time: 40 minutes

    [ download: bowling_pin.blend ]

  • Model a Day - Day 09: Aztec Temple

    After a bit of silence, I’m proud to announce my return with the above temple.

    Yes, I failed miserably and didn’t create any models for the past few days, but let me explain (or try to).

    See, I started on a pineapple model and wasn’t quite sure how to approach it. After a few frustrating minutes in Blender, I started looking for some help and found a video of someone streaming as they built a pineapple… perfect, right!? However, about 1 minute into the video, came the realization that I had only barely scratched the surface of how to manipulate geometry effectively, and I was going to need some more structure on my quest.

    Luckily, I found a good deal on some Blender courses at Udemy for $20. Specifically, [this one][blender tutorial]. So, I’ve still been busy following along and going back to the basic of Blender these last several days and really focusing on the keyboard shortcuts and shorthand tricks.

    And, now we’re caught back up to creating this temple. While not particularly interesting in itself, it was a good model to practice insetting, extruding, snapping, and the super nifty array tool. It’s all starting to feel somewhat naturals, and boy, do I like arrays.

    [ download: pyramid.blend ]

  • Model a Day - Day 04: Scissors

    Today’s model is my small trimming scissors I keep in the bathroom. This is the first time I’ve ventured off on my own without following (or even looking at) any tutorials or guides. Metallic materials still remain elusive, but I’m feeling more confident in my geometry manipulation.

    Total time: 4 hours 30 minutes

    [ download: scissors.blend ]

  • Model a Day - Day 03: Texturing Big Knife

    Today I worked on texturing yesterday’s bowie knife model. Technically not a new model, but it was nice to be able to spend a good deal of time experimenting with materials and textures.

    The wood material is procedurally generated form the default Wood texture that ships with Blender, and I think it turned out alright. The steel material is untextured, and just uses diffuse, specular, and some ‘mirror’ properties on the material. I would like to spend more time on the steel material, as it still looks a bit ‘flat’ to me. I suspect materials take a lot of practice to master, so I’m hopeful I’ll be able to figure it out eventually.

    Wood material based on this tutorial, and the steel is almost entirely based on this one.

  • Model a Day - Day 02: Big Knife

    Overall, I’m quite pleased with the final model. I ran out of time for texturing, so I just threw some diffuse colors on to grab a render. A lot of the detail doesn’t come through in the final render, because I suck at lighting. Figuring out the knife projection tool took awhile for the notches on the blade, because you can apparently only use flat (planar) objects for the projection.

    Maybe I should continue on this model tomorrow to add some proper textures?

    Loosely followed this tutorial, although I like mine better. :P

    [ download: bowieknife.blend ]

  • Model a Day - Day 01: Pleasant Mushroom

    My first model, a “hello world!” of sorts.

    While I may not have figured out why I couldn’t paint the texture in the UV editor, or why Blender kept trying to force a black diffuse texture seemingly out of nowhere, I was able to add some color and capture a render.

    Made with the help of this tutorial.

    [ download: mushroom.blend ]

  • Model a Day Challenge

    With no prior knowledge of how to create 3D models, I plan to create one model a day for the next 14 days and document the progress here. I will be using Blender since it’s free, but that’s about all I know right now.


    This all started a couple days ago when I needed a simple boat asset for a project. It didn’t even need to be final; just something temporary to play the role for awhile. So like any typical programmer I decided, “I’ll just make my own!” How hard could it be?

    A few hours later I was struggling to move around the Blender viewport with no idea where to begin building a low poly hull. So, after living the fantasy of “maybe it would be neat to learn 3D modeling sometime soon” for the last forever, I’ve finally decided to take the plunge and get a little wet.

  • Integrating libGDX into a new Android Studio Project

    This post details my experience with integrating the libGDX game engine into a new Android Studio project on my Linux machine (running Ubuntu); it is intended as a simple walk-through of the process I followed.

    *Disclaimer: I am not an expert. In fact, I am learning most of this as I go along.


    1. Background
      1. Goal
      2. Why libGDX?
    2. Prerequisites
    3. Getting Started
      1. The Official libGDX Documentation
      2. Downloading the libGDX Setup App
      3. Installing Java
    4. Creating a libGDX Project
      1. Generating the libGDX Project
      2. Importing the Project into Android Studio
      3. Running the libGDX Android Project
    5. Conculsion



    The goal for this walk-through is to create a new Android project that integrates the libGDX. By the end, we’ll have a bare bones “Hello World!” style program that initializes an OpenGL context and renders a simple scene to show it’s working.

    The primary focus of this guide will be on supporting the Android platform, however we will also be creating projects to target HTML5 and PC [Desktop] (Because why not?).

    *Sorry, iOS will not be covered here. You should still be able to follow along for this guide, but make sure to check out the libGDX Docs for more information on additional platforms.

    Why libGDX?

    libGDX is an OpenGL engine library for Java, with a heavy focus on game development. The library is completely open source and supports multiple target platforms out of the box.

    Now, deciding middleware is never an easy task, especially for something as important as your Engine. There is no definitive guide or a right or wrong answer here; it really all comes down to your project’s specific requirements (and personal preference). I’d encourage everyone to do some research on their own, and maybe even experiment with a few different engines before making your final choice.

    All I can offer are some of my own reasons for going with libGDX:

    • Android Support
      • My primary target is Android, so this was a must.
      • The additional target platforms (PC, HTML5, and iOS [at time of writing]) are just icing.
    • Java
      • I made the choice to work with Java instead of writing native code in C++.
        • I write C++ all day at work
        • My project really won’t require the raw performance of a native engine.
      • And if we’re honest, there really aren’t many alternatives for Java based OpenGL engines.
    • Lightweight
      • This was somewhat important for me, since I personally like a decent amount of control for how I layout my project and it’s pipelines.
        • A mix of NIH (Not-Invented-Here) and a desire to learn the underlying techniques and principals.
      • There are much better options if you want to buy into a complete engine and asset pipeline right out of the box (Unity3D or any of the other paid engines)
        • [Okay, maybe not if you want to use Java :P]
    • Support for basic Input, Audio, and Networking
      • Besides rendering, this is all I (and probably a lot of indie types) really need to roll out a solid little project.


    This guide begins assuming that you already have a working copy of Android Studio installed on your system.

    If you haven’t already setup Android Studio, you will need to install the following:

    Getting Started

    We are going to use the libGDX Setup App to make a new libGDX project. The application will automatically generate all the necessary build configurations to create new projects for all our target platforms.

    The Official libGDX Documentation

    Please consult the official libGDX documentation before getting started.

    Downloading the libGDX Setup App

    Download the latest libGDX Setup App from the official libGDX Downloads page, and then navigate to the folder where it was downloaded.

    $ ls

    *Note: You can alternatively download the libGDX Release & Nightly builds and setup your projects manually if you are integrating libGDX with an existing project or require custom project settings.

    Installing Java

    To run the Setup App, you must have the Java Runtime Envirement (JRE) installed. If unsure, you can check what version of Java (if any) is currently installed with:

    $ java -version
    java version "1.7.0_79"

    If necessary, install Java now.

    $ sudo apt-get update
    $ sudo apt-get install default-jre

    Creating a libGDX Project

    Generating the libGDX Project

    To start up the Setup App, simply execute the JAR file gdx-setup.jar downloaded earlier.

    $ java -jar gdx-setup.jar

    The libGDX Project Setup will display the following dialog, where we can change set all the parameters for the new project.

    Enter the project Name, Package, and Game Class, and select the Destination directory where the project should be created and the folder where the Android SDK is located. Then check all of the platforms you would like to target and any optional extensions you would like to included.

    Once you are done setting up the project, click the Generate button to create the project. When the process completes there will be folders for each of the target platforms you selected.

    These projects can now imported into the IDE of your choice, such as Android Studio.

    Importing the Project into Android Studio

    Launch Android Studio and select “Import Project (Eclipse ADT, Gradle, etc.)” from the initial dialog. (You may need to close a previously opened project first, File->Close Project)

    In the open file dialog that appears, navigate to your newly created libGDX project and select the build.gradle file from the root project directory.

    It may take a few moments for Android Studio to initialize your libGDX project. Once the import process has completed, we can finally start using the new project.

    Running the libGDX Android Project

    To Run the new Android libGDX project, simply click the green “Play” button on the toolbar at the top. This will automatically build the Android Module, before launching the Android program.

    A dialog should prompt you to select your connected device or simply launch an Emulator. If you have a device connected, select it, otherwise just pick the emulate and hit OK.

    If all went well, you should see the default libGDX project rendering on your device.


    Thanks to the official libGDX Setup App, setting up a new project and importing it into Android Studio is pretty painless.

    If you’d like, you should be all set to jump straight into developing your Android project. However, if you’re like me, we still have to finalize our other target platforms and setup some additional build processes.

    We’ll save that for next time though…