Tuesday, November 8, 2011

Island Draft

This is a draft of the a level I am working on. It would be comprised of 10 to 12 different areas that would be used in a fighting game.

Monday, November 7, 2011

Terrain Adjustment

I ran into rather unusual but common problem with Unity's Terrain. The default terrain starts at height zero (0). This poses a problem when you want to create trenches and creates a greater problem when you have already sculpted the height of the terrain and now need to sculpt the depth. The solution to this problem is rather simple. Export the terrain as 8bit RAW file. Import the file into Photoshop. Create a new layer. Add a shade of gray that would represent the height increase. Change the blend type of this layer to Linear Dodge and then merge layers. Save the file and then import the new height map. This would remedy the problem.

The idea behind this solution is to add to all of the existing values of the terrain to create and offset from height zero (0). This maintains all of the existing sculpted terrain and allows sculpting downward or into the terrain.

Monday, October 10, 2011


This drawing was an experimental technique for drawing in Photoshop. There is a significantly high chance that folks already use this method but, I am feeling special for coming up with the technique on my own. Anyway, this drawing was accomplished using many pixelated rough sketches to give the overall shape and lighting information. After the sketch as done the blur tool was used to blend the pixelated drawing to give a nice smooth look. The final image was then treated with the noise filter to further blend the image.

Using Unity 3D

Currently I working on several Unity 3D projects so I am trying to get a grasp of the shaders technology that is available. Unfortunately, custom shaders needs to be programmed/written because there isn't a material editor like UDK. This is a simple test of some custom shaders for Unity. The Ambient Occlusion is pre-rendered and is a separate texture. The final shader would store the Ambient Occlusion in a the Alpha channel and currently, the intensity of the shadow is adjustable without causing overexposure. Also the Ambient Occlusion directly affects the reflection.

Thursday, September 29, 2011

Creating textures with Maya

This is my attempt to create textures using Maya. First the potential texture surface is modeled then its rendered using a custom Orthographic camera.

The second series of images used a similar technique to create a satellite type texture.

Sunday, July 17, 2011

Water shader for the waterfall

This is the shading network used for the water in the waterfall scene. Its broken into several sections. I approached this in shading network in layers. I first worked on the reflection. The reflection uses a cube map that was generated in UDK. Currently the SceneCaptureCubeMapActor is broken in DirectX 11 so I needed to switch to DirectX 9 to create the cubemap. The process is rather simple.
  1. Place the SceneCaptureMapActor into the scene
  2. Create a TextureRenderTargetCube texture in the Content Browser
  3. Assign the Texture to the SceneCaptureMapActor that was placed in the scene (F4>Scene Capture Actor> Capture> Texture Target)
  4. In the content browser right click on the TextureRenderTargetCube and select Create New Static Texture.

Once the cube map was made the next step was creating the reflection mask. The reflection mask is the main aspect of creating the illusion of motion with the water. I used a noise texture and a water texture with a Panner node. Each Texture was panned at varying speeds and was tiled slightly different. This created enough variation to make the water look believable. Half of this reflection mask was output(ed) to Specularity and multiplied to another version of the panning noise texture. The noise texture was created in photoshop using the noise filter.

Fresnel was combined to the mask to control the angle of reflection and it was also used to enhance the base color with a Scalar Parameter to control the intensity of the Fresnel.

The reflection was created using the cube map texture with Reflection Vector node plugin into the UVs. This was multiplied with the mask which would control where the reflection would and would not show.

Opacity used some features that were used to gernerate the reflection mask but, this was combined with DestDepth and PixelDepth (DestDepth - PixelDepth )/integer. The integer was made scalar to control the results. Because the depth used in the water was very shallow, the lower part of the water fall became completely opaque hiding the rocks behind it. To counter this I created a mask which was then multiplied to the results of the DestDepth/Pixel Depth calculation. This allowed the lower part of the water fall to return to the previous transparency. A Scalar Integer was added to control the intensity of this mask.

The reason the texture mask is red, white and blue is because I would at times create more than one mask and place these masks into different channels reducing the amount of textures I need to import into the engine.

And finally, the normals were generated from the specularity by using the Append node to create a normal map.

Because the Panner node only (as far as I know) allows for the texture to be moved in one direction, the UVs for the waterfall needed to be adjusted so that the key areas would show the water moving along the geometry correctly.

Saturday, July 16, 2011

SketchBook Pro

I was playing around in SketchBook Pro and decided to paint some random clouds. The results were rather acceptable. I may consider using this program in the future to develop concept art.


This is the final composition. Its got a "dreamy" feel to it. I was finally able to figure the issue I was having with normal maps from Maya. Apparently the green channel needs to be reversed in order for it to be compatible with UDK. I was also able to try out vertex painting which was used on the rock to give the impression of wet and dry. In addition to that I experimented with water effects using the Panner node in addition to making a relatively complex shader for the water. I also revisited particles effects in which I needed to refresh my memory on at least the basics.


Monday, July 11, 2011


This is my terrrain/rock test using UDK.

Wednesday, June 29, 2011

Nano and Sketch AO

I have added Ambient Occlusion to the guys to improve the overall visual quality.

Tuesday, June 28, 2011

Saturday, June 25, 2011

Nano and Sketch Episode 2 Props

These are the props that would be used in the next episode of Nano and Sketch.

Thursday, June 23, 2011

New Eyes

Old Eyes

New Eyes

I have updated the eyes. They now have added extra details, specularity and pseudo reflectivity. In addition to that I got rid of the black line by extending the area of the color map beyond the UVs for the eyes.

Wednesday, June 22, 2011

New Skin Shader

New Skin Shader

Old Skin Shader

Above is a comparison between the old and new skin shader. I am using a fake sub surface scattering in the new skin shader to give the skin more depth and color variation.

Friday, June 17, 2011

Nano and Sketch

This is my most recent attempt with UDK. Its another proof of concept. Here is also a link to actual animation. Video

The overall process of getting the blendshapes and animation into the engine was rather painful. However in the end I finally figure out the process and the limitations of this this method of rendering.

Problems and Solutions

Exporting Character Meshes

My current setup for animation in Maya is that all animation is done on referenced rigs. The reason for this is to allow my animator to animate on rigs even if they are not fully completed. This also allows me to update the rig without breaking or affecting the animators current animation. However, this setup came with unexpected problems. Since the rigs are referenced in Maya, the referenced rigs all contained an additional prefix. So that MyRig when reference would be named MyRig_MyRig.

Originally I exported the character mesh from the MyRig file. This exported all of the joints and skin clusters. Then I exported the animation from the referenced file. However, the referenced file contain the prefix MyRig making the exported animated joints be named MyRig_joint1 instead of joint1. This created a naming conflict causing my animations not to work. So in order for me to keep my setup of the animator using a reference rig, I reference the rig into an empty scene and exported it to UDK. This appeneded the additional prefix and resolved the problem. Hopefully that makes sense to anyone who is reading this.

Exporting Blendshapes

In addition to that, my blendshapes weren't exporting correctly. They all were the default unmodified face. The problem was due to my rig having expressions on the blenshapes caused by the blendshape controllers. So when ActorX tries to export and supposedly attempts to dial the blenshape it fails because of the expression connection. This forced me to have another file in which the controllers for the blendshapes were removed allowing the blendshapes to correctly export.

Wednesday, April 27, 2011

Anton Voytenkov Concept

This render was created using the CryEngine and the concept was done by Anton Voytenkov.

Tuesday, April 12, 2011

Ice Cube

This is my quasi failed attempt at making ice cubes with a custom shading network in UDK.

Wednesday, April 6, 2011

Tessellation UDK

I recently tried playing around with DirectX 11 tessellation feature in UDK. The results are rather interesting. I did run into some unusual problems when this feature is activated.

  • When using static lighting there is no self shadowing from the displacement.
  • Self shadowing occurs when using dynamic light
  • When you switch to light only mode, tessellation disappears. This could be the reason why self shadowing with static lighting does not work because the light calculation is evaluated without tessellation. (I guessing here)
  • Tessellation with displacement is degraded when the object is scaled. The image above shows how much degradation occurs by scaling the mesh to 3.
  • Tessellation does not work if there are no smoothing groups, so meshes would need to be assigned a smoothing group in order for tessellation to work.
  • Multiple smoothing groups would create seams and tearing as shown below

Sunday, April 3, 2011

Cavern UDK

This was a quick conversion of a scene done using mental Ray. Unfortunately I had to re-texture the scene. Link to map and package files.

Monday, March 28, 2011

UDK Bathroom

This is the results of redoing the bathroom scene that was done in both mentalRay and Crysis in one of my earlier projects. The results are very similar to the original mentalRay image.

Project Files

Friday, March 25, 2011

Crysis vs Crysis 2

Top is Crysis 2 bottom is Crysis. The addition of global illumination definitely adds to the overall quality of the render. According to Crytek docs, the image demonstrates the use of real time global illumination with one bounce of light.

Thursday, March 24, 2011

Terrain Test

This is my terrain test using normal maps generated from Zbrush. All of the meshes are static meshes and does not utilize UDK terrain editing software. I would jump on board soon enough. Link to files here.

Wednesday, March 2, 2011


For this project, I was testing both reflections and the creation of a car paint material. The reflections were created from using a separate room containing several white cards and a SceneCaptureReflectActor was placed in the center to capture the imag of the room.

The next image is a screen capture of the wireframe.

The image below is the final render using 'tiledshot'.

The reason why reflections weren't working in the previous renders when using 'tiledshot' was due to DirectX 10 not being fully supported. When the renderer was changed to DirectX 9, reflections worked using 'tiledshot'.

Tuesday, February 8, 2011

Soenke Christian Seidel Concept

UDK Render

Soenke Siedel Concept

This would be my final project for the proof of concept. Map and package files as requested.

Saturday, February 5, 2011

Current WIP

This is the AO of the current project that I am currently working on.

Thursday, January 13, 2011

Morgan Yon Concept

This project was based on Morgan Yon concept art. It was done in the same manner as the other renders. Youtube. Files

Monday, January 3, 2011

Video Test

This is a short video test I ran to using the UDK `DumpMovie_TiledShot`.

HD Youtube Link

Dongbo Sun Concept

The concept for this robot was done by a fellow classmate of mine Dongbo Sun. As with every project I ran in to several problems. Firstly I was unable to import the robot as one unit so it was imported in parts. When it was imported as one unit, the imported model was severely corrupted. Another issue I did not anticipate was the lack of free motion on the robot's shoulders and legs, limiting the positions that he can be posed. The final image is the best pose that I could have conjured up. Like the other renders that contain real-time reflections, I was unable to get the reflection to show when using `tiledShot`. In addition that the colors were off and it maybe due to the `tiledShot` ignoring some of the Post Process features. Here are the two images created. One was generated as a screen shot, the other using `tiledShot`. Here is the link to the UDK files. LINK

Taken as a Screenshot

Taken using `tiledShot`

Sunday, January 2, 2011

Alex Brockel Concept

This is Project 2 which is using the concept art of Alex Broeckel. For this one I played around with varying shaders but the results weren't up to spec. However, I was able to dip my hands in HLSL for making a custom overlay shader. I also got a bit more acquainted with UDK Post Process Volumes which would be very useful for future projects. For this project, I generated three renders because I was indecisive as to about the look and feel. The three renders are the varying attempts of trying different lighting conditions and effects. Here is the link to the UDK files that were used. LINK