Search This Blog

Labels

Sunday, December 5, 2010

Introduction to Blender 2.5: Color Grading

    In this article by Reynante Martinez we'll tackle a topic that is commonly misunderstood and often overlooked inside of Blender. But before we begin, I'd like to make a few remarks. First, I do not claim to be a professional color grading artist nor do I imply the following explanations as “rules” to be strictly followed. What I will try to share with you in this article are my thoughts and experiences on Color Grading using Blender.

    I would like to thank a few people who have made this all possible and I wouldn't be inspired doing this now without their great aid:

    To Francois Tarlier (http://www.francois-tarlier.com) for patiently bearing with my questions, for sharing his thoughts on color grading with Blender, and for simply developing things to make these things existent in Blender. A clear example of this would be the addition of the Color Balance Node in Blender 2.5's Node Compositor (which I couldn't live without).

    To Matt Ebb (http://mke3.net/) for creating tools to make Blender's Compositor better and for supporting the efforts of making one.

    And lastly, to Stu Maschwitz (http://www.prolost.com) for his amazing tips and tricks on color grading.

    Now, for some explanation. Color grading is usually defined as the process of altering and/or enhancing the colors of a motion picture or a still image. Traditionally, this happens by altering the subject photo-chemically (color timing) in a laboratory. But with modern tools and techniques, color grading can now be achieved digitally. Software like Apple's Final Cut Pro, Adobe's After Effects, Red Giant Software’s Magic Bullet Looks, etc. Luckily, the latest version of Blender has support for color grading by using a selection and plethora of nodes that will then process our input accordingly. However, I really want to stress here that often, it doesn't matter what tools you use, it all really depends on how crafty and artistic you are, regardless of whatever features your application has.

    Normally, color grading could also be related to color correction in some ways, however strictly speaking, color correction deals majorly on a “correctional” aspect (white balancing, temperature changes, etc.) rather than a specific alteration that would otherwise be achieved when applied with color grading.

    With color grading, we can turn a motion picture or still image into different types of mood and time of the day, we can fake lens filters and distortions, highlight part of an image via bright spotting, remove red eye effects, denoise an image, add glares, and a lot more.

    With all the things mentioned above, they can be grouped into three major categories, namely:

    • Color Balancing
    • Contrasting
    • Stylization
    • Material Variation Compensation

    With Color Balancing, we are trying to fix tint errors and colorizations that occurred during hardware post-production, something that would happen when recording the data into, say, a camera's memory right after it has been internally processed. Or sometimes, this could also be applied to fix some white balance errors that were overlooked while shooting or recording. These are, however, non-solid rules that aren't followed all the time. We can, however, use color balancing to simply correct the tones of an image or frame such that the human skin will look more natural with respect to the scene it is located at.

    Contrasting deals with how subject/s are emphasized with respect to the scene it is located at. It could also refer to vibrance and high dynamic imaging. It could also be just a general method of “popping out” necessary details present in a frame.

    Stylization refers to effects that are added on top of the original footage/image after applying color correction, balancing, etc. Some examples would be: dreamy effect, day to night conversion, retro effect, sepia, and many more.

    And last but not the least is Material Variation Compensation. Often, as artists, there will come a point in time that after hours and hours of waiting for your renders to finish, you will realize at the last minute that something is just not right with how the materials are set up. If you're on a tight deadline, rerendering the entire sequence or frame is not an option. Thankfully, but not absolute all the time, we can compensate this by using color grading techniques to specifically tell Blender to adjust just a portion of an image that looks wrong and save us a ton of time if we were to rerender again.

    However, with the vast topics that Color Grading has, I can only assume that I will only be leading you to the introductory steps to get you started and for you to have a basis for your own experiments.

    To have a view of what we could possibly discuss, you can check some of the videos I've done here:

    And to those of you interested with some presets, Francois Tarlier has provided some in this pagehttp://code.google.com/p/ft-projects/downloads/list.

    Outlining some of the aspects that we'll go through in Part 1 of this article, here's a list of the things we will be doing:

    • Loading Image Files in the Compositor
    • Loading Sequence Files in the Compositor
    • Loading Movie Files in the Compositor
    • Contrasting with Color Curves
    • Colorizing with Color Curves
    • Color Correcting with Color Curves

    And before we start, here are some prerequisites that you should have:

    Initialization

    With all the prerequisites met and before we get our hands dirty, there are some things we need to do.

    Fire up Blender 2.5 and you'll notice (by default) that Blender starts with a cool splash screen and with it on the upper right hand portion, you can see the Blender version number and the revision number. As much as possible, you would want to have a similar revision number as what we'll be using here, or better yet, a newer one. This will ensure that tools we'll be using are up to date, bug free, and possibly feature-pumped.

    Move the mouse over the image to enlarge it.

    (Blender 2.5 Initial Startup Screen)

    After we have ensured we have the right version (and revision number) of Blender, it's time to set up our scenes and screens accordingly to match our ideal workflow later on.

    Before starting any color grading session, make sure you have a clear plan of what you want to achieve and to do with your footages and images. This way you can eliminate the guessing part and save a lot of time in the process.

    Next step is to make sure we are in the proper screen for doing color grading. You'll see in the menu bar at the top that we are using the “Default” screen. This is useful for general-purpose Blender workflow like Modeling, Lighting, and Shading setup. To harness Blender's intuitive interface, we'll go ahead and change this screen to something more obvious and useful.

    (Screen Selection Menu)

    Click the button on the left of the screen selection menu and you'll see a list of screens to choose from. For this purpose, we'll choose “Compositing”. After enabling the screen, you'll notice that Blender's default layout has been changed to something more varied, but not very dramatic.

    (Choosing the Compositing Screen)

    The Compositing Screen will enable us to work seamlessly with color grading in that, by default, it has everything we need to start our session.

    By default, the compositing screen has the Node Editor on top, the UV/Image Editor on the lower left hand side, the 3D View on the lower right hand side. On the far right corner, equaling the same height as these previous three windows, is the Properties Window, and lastly (but not so obvious) is the Timeline Window which is just below the Properties Window as is situated on the far lower right corner of your screen. Since we won't be digging too much on Blender's 3D aspect here, we can go ahead and ignore the lower right view (3D View), or better yet, let's merge the UV/Image Editor to the 3D View such that theUV/Image Editor will encompass mostly the lower half of the screen (as seen below). You could also merge the Properties Window and the Timeline Window such that the only thing present on the far right hand side is the Properties Window.

    (Merging the Screen Windows)

    (Merged Screens)

    (Merged Screens)

    Under the Node Editor Window, click on and enable Use Nodes. This will tell Blender that we'll be using the node system in conjunction with the settings we'll be enabling later on.

    (Enabling “Use Nodes”)

    After clicking on Use Nodes, you'll notice nodes start appearing on the Node Editor Window, namely theRender Layer and Composite nodes. This is one good hint that Blender now recognizes the nodes as part of its rendering process. But that's not enough yet. Looking on the far right window (Properties Window), look for the Shading and Post Processing tabs under Render. If you can't see some parts, just scroll through until you do.

    (Locating the Shading and Post Processing Tabs)

    Under the Shading tab, disable all check boxes except for Texture. This will ensure that we won't get any funny output later on. It will also eliminate the error debugging process, if we do encounter some.

    (Disabling Shading Options)

    Next, let's proceed to the Post Processing tab and disable Sequencer. Then let's make sure thatCompositing is enabled and checked.

    (Disabling Post Processing Options)

    Thats it for now, but we'll get back to the Properties Window whenever necessary.

    Let's move our attention back to the Node Editor Window above. Same keyboard shortcuts apply here compared to the 3D Viewport. To review, here are the shortcuts we might find helpful while working on theNode Editor Window:

     

    Select Node     Right Mouse Button
    Confirm Left Mouse Button
    Zoom In Mouse Wheel Up/CTRL + Mouse Wheel Drag
    Zoom Out Mouse Wheel Down/CTRL + Mouse Wheel Drag
    Pan Screen Middle Mouse Drag
    Move Node G
    Box Selection B
    Delete Node X
    Make Links F
    Cut Links CTRL Left Mouse Button
    Hide Node H
    Add Node SHIFT A
    Toggle Full Screen SHIFT SPACE

    Now, let's select the Render Layer Node and delete it. We won't be needing it now since we're not directly working with Blender's internal render layer system yet, since we'll be solely focusing our attention on uploading images and footages for grading work.

    Select the Composite Node and move it far right, just to get it out of view for now.

    (Deleting the Render Layer Node and Moving the Composite Node)

    Loading image files in the compositor

    Blender's Node Compositor can upload pretty much any image format you have. Most of the time, you might want only to work with JPG, PNG, TIFF, and EXR file formats. But choose what you prefer, just be aware though of the image format's compression features. For most of my compositing tasks, I commonly use PNG, it being a lossless type of image, meaning, even after processing it a few times, it retains its original quality and doesn't compress which results in odd results, like in a JPG file. However, if you really want to push your compositing project and use data such as z-buffer (depth), etc. you'll be good with EXR, which is one of the best out there, but it creates such huge file sizes depending on the settings you have. Play around and see which one is most comfortable with you.

    For ease, we'll load up JPG images for now. With the Node Editor Window active, left click somewhere on an empty space on the left side, imagine placing an imaginative cursor there with the left mouse button. This will tell Blender to place here the node we'll be adding. Next, press SHIFT A. This will bring up the add menu. Choose Input then click on Image.

    (Adding an Image Node)

    Most often, when you have the Composite Node selected before performing this action, Blender will automatically connect and link the newly added node to the composite node. If not, you can connect theImage Node's image output node to the Composite Node's image input node.

    (Image Node Connected to Composite Node)

    To load images into the Compositor, simply click on Open on the the Image Node and this will bring up a menu for you to browse on. Once you've chosen the desired image, you can double left click on the image or single click then click on Open. After that is done, you'll notice the Image Node's and the Composite Node's preview changed accordingly.

    (Image Loaded in the Compositor)

    This image is now ready for compositing work.

    Loading sequence files in the compositor

    Loading sequence files or image sequences in the compositor is similar to uploading normal single frame images, aside from the additional setting of frame ranges.

    Again, click on Open or the Folder Icon on the Image Node to load up the image browser. Browse to the folder where you have rendered or sequenced the images. For Blender to properly recognize the images as sequences, they must be suffixed with numbers or something value incremental (just like what you see in the screenshot below).

    (Loading Image Sequences)

    You only need to load the first image in this sequence. However, you must be aware how many images you have in the sequence because we'll be using this value as input later on.

    (Loading the First Image Only)

    On the Image Editor, after successfully loading the first frame of the image sequence, change the Sourceto Sequence. This will tell Blender that we are using a sequence of images instead of just the first frame that we loaded up. Change the Frames: value to the total number of image frames you have. You can also alter the Start Frame if you want to offset the start frame. Additionally, enable the Cyclic and Auto-refreshbuttons.

    To clearly see what is going on, add a Viewer Node and connect the image socket to the Image Node.

    (Adding a Viewer Node)

    Now, if you skip through the frames with the arrow keys, you'll notice that the images shown on the Viewer Node changes as well. To clearly see this, you can enable Backdrop under the Node Editor Window. To move the backdrop, you press ALT Middle Mouse Button Drag. To zoom it out, press V, and to zoom it in, press ALT V.

    (Adding an Image Backdrop)

    Loading movie files in the compositor

    Loading movie files in the compositor is similar with loading image sequences. The only difference is that you load up any of the known movie file formats like MP4, AVI, MOV, etc. and instead of setting the Sourceto Sequence, you set it as Movie, but by default, if you load up any of the popular movie formats, Blender automatically recognizes them and sets the Source automatically for you. You'll just have to change theFrame Number accordingly.

    (Adding a Movie File in the Compositor)

    Any of the color grading techniques that we'll be applying later on in this article applies the same whether you're working on a single image, an image sequence, or a movie. It only comes down to a difference in length, format, quality, and compression.

    Contrasting with color curves

    One of the most rudimentary tasks to color grading is primary color correction via contrasting, by which we simply boost the highlights, midtones, and shadows of an image accordingly, resulting in a more vibrant and appealing imagery.

    The Color Curve can be accessed from within the Node Editor by pressing SHIFT A, choosing Color, then finally, RGB Curves. Connect the image sockets of the Image Node and the Color Curve Node. Then add a Viewer Node and connect it to the Color Curve Node accordingly leading through a node like setup seen in the screenshot below.

    (Adding a Color Curve Node)

    (Connecting the Viewer Node, Color Curve Node, and Viewer Node)

    The Color Curve Node is a very powerful color correction tool in Blender and is also very flexible. By default, the C (contrast [correct me if I'm wrong]) channel of the curve is the active node, and there are three more channels, namely the Red, Green, and Blue, represented by R, G, and B. However, for this portion of the article, we'll only be focusing on the C channel right now to adjust the contrast in our image. In the Color Curve Node, you are presented with a diagonal line. This represents the highlights, shadows, and midtones of your image (as seen in the screenshot below).

    (The Color Curve Node)

    The shadows area of the curve controls the dark and shadowy areas of the image, the midtones control the gray or “neutral” parts of your image, and finally, the highlights control the brightness parts of your image.

    (Brightness and Darkness Areas of the Color Curve Node)

    The screenshot above represents the direction by which the shadows, midtones, and highlights affect the image. So if you move the shadows area of the curve towards the brighter portion of the curve, the dark areas of your image become brighter and so on and so forth. Check the screenshots below for a visual reference.

    To add a point on the curve, simply click anywhere inside of the Color Curve.

    (Shadows Brightened)

    (Shadows Darkened)

    (Midtones Brightened)

    (Midtones Darkened)

    (Highlights Brightened)

    (Highlights Darkened)

    When working with the Color Curve Node, subtlety is the key to achieving convincing results. Too much adjustment will lead to color clipping, creating highlights that are too white and shadows that are too black. On most of my compositing work, I try to implement what they call the “S Curve” or commonly know as theContrast Curve (you can see the setup below).

    (“S” Curve)

    Additionally, beside the channel buttons, you can see more options for further controlling the behaviour of your curves and points.

    (Color Curve Node Tools)

    (Color Curves Node Clipping Options)

    Below, you can see examples of the application of color curve contrasting.

    Colorizing with color curves

    Another application of color curves, though not widely used, is colorization. With Colorization, you alter the overall color of your image or frame, creating a specific tone and feel. As compared to using Hue adjustments, with Color Curves, you have more control over the way your shadows, highlights, and midtones behave with respect to the color you are reaching.

    The concept of shadows, midtones, and highlights that we used for the previous topic, applies to this technique too. But now, instead of adjusting one curve for the contrast channel, we work on three more channels: red, green, and blue channels respectively. Here instead of adjusting the brightness and darkness values of the image, you adjust the color. You can see an illustration of this effect below.

    (Color Curve's Red Channel)

    (Red Channel Increased)

    (Red Channel Decreased)

    (Color Curve's Green Channel)

    (Green Channel Increased)

    (Green Channel Decreased)

    (Color Curve's Blue Channel)

    (Blue Channel Increased))

    (Blue Channel Decreased)

    What's so exciting about using Color Curves is that you can mix the results and come up with your own combination of curve effects. Though colorization with curves is not commonly used, it still proves to be useful and fast. You can even link several color curves, each adjusting a different channel, for easier viewing.

    (Combining Several Color Curve Nodes)

    Color correcting with color curves

    One of the most common tasks when it comes to Color Curves, is color correction and adjustment. This happens by adjusting the tones and hues of parts of an image depending on their tonal ranges.

    Take a look at the image below (by the way, the lady you see there is my universe). You'll notice a few things here:

    • yellow cast (caused by improper white balance settings)
    • low contrast

    To address these issues, we'll use the color curves node. First, to add more contrast to the image, we'll adjust the C Channel like that shown in the screenshot below:

    (Adjusting the Contrast Channel)

    Next, to give the colors more saturation, we'll just increase and reduce some of the color values accordingly:

    (Color Correction Color Curve Nodes)

    Now, for some explanation of the process. The left-most color curve node is used to boost the overall contrast of the image, making the bright parts brighter and the darker parts darker, making it easier for the eyes to recognize the subject. The second from the left color curve node is used to brighten up the whole image, making it more recognizable. The third from the left color curve node is used to increase the skin tone. Next, under the green channel, this color curve is used to reduce the overall green tint of the image. And finally, the far right color curve node is used to reduce the yellow tint. The final image is this:

    (Color Corrected Image)

Colorizing with hue adjustment

For a quick and dirty colorization of images, hue adjustment is your best friend. However, the danger with using hue adjustment is that you don't have much control over your tones compared to when you were using color curves.

To add the hue adjustment node in Blender's Node Editor Window, press SHIFT A then choose Color then finally Hue Saturation Value. This will add the Hue Saturation Value Node which is basically used to adjust the image's tint, saturation (grayscale, vibrant colors), and value (brightness). Later on in this article, you'll see just how useful this node will be. But for now, let's stick with just the hue adjustment aspect of this node.

Move the mouse over the image to enlarge it.

(Adding the Hue Saturation Value Node)

(Hue Saturation Value Node)

To colorize your images, simply slide the Hue slider. When using the hue slider, it's a good rule of thumb to keep the adjustments at a minimum, but for other special purpose, you can set them the way you want to. Below are some examples of different values of the Hue Adjustment.

(Hue at 0.0)

(Hue at 0.209)

(Hue at 0.333)

(Hue at 0.431)

(Hue at 0.671)

(Hue at 0.853)

(Hue at 1.0)

High dynamic look

You often see this effect posted on photo blogs and websites where they take a regular photo and turn it into something more interesting, with colors popping out. In computer graphics and photography, they also call this technique High Dynamic Range Imaging (HDRi/HDR). HDR images represent a greater dynamic range of luminance between the lightest and darkest portions of an image. There are several techniques to achieve this in popular programs like Adobe Photoshop or GIMP. In photography, newer digital cameras have a post-processing capability to create such images by taking three photos of the same shot, one with a negative exposure value, one normal exposure, and the third one with a positive exposure value. It then combines all three into one photo creating this effect. Some higher model cameras even take it further by taking more values to the negative and positive scale, creating an even further deeper ranged image.

However, for simplification purposes, we'll only be trying to imitate the effect and look just like what you see below:

(High Dynamic Look Example)

Let's go ahead and learn how to do this. First, in the Node Editor Window, add an Image Node and locate the image, sequence, or movie you want to grade. Afterwards, add a Hue Saturation Value node and connect the image input and image output sockets accordingly (see screenshot below).

(Image Node and Hue Saturation Value Node Linked)

Next, bring the Saturation value all the way to zero (0). This will create a fully desaturated version of the image.

(Saturation Set to Zero)

Add a Filter Node (SHIFT A > Filter > Filter) and connect its Image Input socket to the Hue Saturation Value Node's Image Output socket.

(Adding a Filter Node)

(Connecting the Nodes)

Filter Nodes are very handy nodes to have at your disposal everytime you're doing color grading. They make your images sharper, softer, and they even create outlines based on some selected presets. Change the Filter Type from Soften to Sobel and then make the Factor a value of 0.2. To see the results, add a viewer node.

(Changing the Filter Type to Sobel With a Value of 0.200)

Next, add a Color Curve Node and create a custom S-curve on the Contrast Channel.

(Creating a Custom S Contrast Curve)

This next step is one of the most crucial parts so make sure you do it the right way. Add a Mix Node(SHIFT A > Color > Mix). On the Mix Node, change the mix type to Overlay. Connect the original Image Node to the upper Image Socket of the Mix Node then connect the Color Curve Node's image output socket to the lower Image Socket of the Mix Node. This will blend the original image (with the original rgb color values) with the desaturated image that we just created using an overlay function.

(Mixing the Nodes using Overlay Mix Type)

To accentuate the mixing effect, let's add one more Mix Node with an Overlay Mix Type and connect the nodes as seen in the screenshot below.

(Adding Another Mix Node with Overlay Mix Type)

On this part of the grading process, we are already losing and clipping some dark areas of the image, making it unrecognizable, due to the overlay mixing that was done. To address this, let's add another Mix Node with the Mix Type and let's blend a little of the original image into the output of the Overlay Mix by changing the Factor to 0.2.

(Final Mixing)

And that's about it! Try changing the blend types and factor to create more interesting effects to your taste. Experiment!

If you've followed the steps above, here's what we should be getting:

(High Dynamic Graded Image)

Image sharpening

Image sharpening is one of the many aspects of color grading where, if done too much, could create disaster, but if done sufficiently, will create a fairly convincing output.

To sharpen up your images, you can directly link your images to a Filter Node with Sharpen type. I usually play my factor values between 0.1 and 0.2. Anything far beyond that would be overkill.

(Too Much Sharpening)

(Moderate Sharpening)

When done right, the Sharpen Filter can make your images look more convincing and they can even pop details into your scene, especially textures that were rather blurred by their mapping.

Color overlaying

Another quick and easy way of colorizing your images/videos is through a technique called as Color Overlaying (not sure if I'm just the one calling it such). This is fairly applicable when you are in so much rush that you don't have time to tinker anymore with other settings, and honestly speaking, with your boss or client breathing down your neck, this might just be your easy way to get it done.

To create a Color Overlay setup, first add an RGB Node (SHIFT A > Input > RGB). This will bring up a color wheel for you to select colors from. Alternatively, you can also click on the color bar to select colors better and input their values accordingly.

(Adding an RGB Node)

(The RGB Node)

Now, to colorize our input images/videos, we'll be adding a Mix Node, just like how we did in the previous topics. Check the screenshot below for the setup. The points to note here are: blend type, color (of course), and factor values. Quick and dirty but it gets the job done.

(Color Overlaying)

Toning up and toning down colors

A long time ago with Blender, toning up or down specific ranges of colors would take a lot of effort, and on some scenes even impossible due to the lack of tools. But with the advent of Blender 2.5, new tools and specific nodes arose, including the Hue Correct Node, for which I owe the Blender developers a lot. TheHue Correct Node is a powerful and useful tool.

(The Hue Correct Node)

What this node does is it takes a color value from your image, depending on what channel would be affected – hue, saturation, value, and it can either increase or decrease the value accordingly without affecting any other color. The default points to work on are 9 but you can simply add as you wish by clicking anywhere on the curve, which will give you finer control over how the colors are sampled.

To add this node, press SHIFT A, choose Color, then finally click on Hue Correct. By default, theSaturation Channel is active, but depending on the work you're doing, feel free to play around.

(Desaturating the Flower Petals)

(Saturating the Flower Petals)

(Desaturating the Leaves)

(Saturating the Leaves)

(Altering the Hue of the Leaves and the Petals)

Creating a sepia tone

Sepia Toning can either refer to a photographic technique of making images look as though they were older or it can refer to the treatment of making photographs look older and enhancing their archival qualities. But both relate more to the toning quality.

Sepia toned images look more brown than any other color. Some even look pale white due to the photograph's old age. There are no definite rules though in creating sepia-toned images, it just all comes down into how old you want to treat them.

The concept of sepia toning is similar to that of color overlaying. To do so, first add a Hue Saturation Value Node and connect it to the image you're applying sepia tone to.

(Hue Saturation Value Node Added)

Next step is to desaturate the image by moving the Saturation Slider to a lower value.

(Desaturating the Image)

Next, add an RGB Node. Then mix the desaturated image with the color output of the RGB node using an overlay mix filter. Adjust the Factor value accordingly, depending on your preference.

(Overlaying the Color and the Desaturated Image)

To add aging to the image without adding textures (which we'll discuss in the next part of this article), we'll add a slight blur to the image. To blur the image, press SHIFT A, choose Filter, then click on Blur.

(Adding a Blur Filter)

Change the Filter Type to Fast Gaussian, then change the x blur and y blur values as well. Just remember to keep them on a moderate level.

(Blurring the Image)

Then finally, mix the blurred output with the unblurred image, choosing from a variety of mix types depending on your choice.

(Mixing the Results)

Leading us to this final image:

(Sepia-toned Image)

Summary

In this article, we learned how to properly load image files, sequence files, and movie files in Blender's Compositor as well as do basic color grading techniques which includes: contrasting, colorizing, and color correction with color curves.we learned some more color grading techniques which includes: colorizing with hue adjustment, high dynamic look, image sharpening, color overlaying, toning up and toning down colors, and finally, creating a sepia tone.

For the next part, we'll discuss further how to achieve some stylization techniques involved with color grading and as a gift, I'll be providing BONUSES at the end of the article, so stay tuned! These topics are as follows:

  • Color Balancing
  • Blur Overlaying
  • Selective Glow
  • Noise Removal
  • Adding Film Noise
  • Selective Vignetting
  • Vignette Blurring
  • Bright Spotting
  • Lens Distortion
  • Lens Dirt
  • Retro Effect
  • Day to Night Conversion
  • Sinister Look
  • Cold Look
  • Warm Day Look
  • Subject/Background Blending
  • Outputing Graded Videos into Files
  • BONUSES!

Again, thank you so much for bearing with me and for reaching this part of the article. For comments, suggestions, and casual emails, please contact me at reynantem@gmail.com. You can also visit me at my blog http://www.reynantem.blogspot.com and on my twitter accounthttp://www.twitter.com/reynantem.

See you on the next part of this article. Until next time!

No comments:

Post a Comment