Human Base Meshes - Gender Agnostic Topology

As a foundation for upcoming projects, I wanted to revisit my base human models and research the possibility of using a gender agnostic base mesh. It would serve both as a base for high poly models and something optimized for a real-time character creation pipeline.

Having worked for a long time with a character creation pipeline with thousands of assets and blendshapes, sharing a base mesh for all genders would greatly simplify many of the production steps, especially aiding the possibility of asset reuse and transfer.
Part of the inspiration for this project was Epic’s Metahuman framework which uses a single body topology.

After finalizing the low poly topology and the high poly models for both genders, I made heavy use of R3DS Wrap for topology alignment and reprojection. This step was a breeze compared to manually aligning and re-projecting topology in ZBrush, as I have done in the past.

The biggest challenge, and the overall intent, was to keep the features and landmark locations consistent, alongside joint placement and length (the shoulder joint being the one in need of repositioning).

The UVs are authored on the average shape between the two models, with closed eyelids, and packed in three flavors: Combined, Split and UDIM.


ZBrush - Human Base Meshes - Gender Agnostic Topology

Please note that this content is free for personal use, personal projects, and non commercial educational purposes only.
Please contact me for other usage. Enjoy!


Godot is a fantastic game engine that reminds me a lot of the trajectory that Blender had as an open source project. GDScript is fun and accessible, being derived from Python, and I can't wait to see it grow.

Between various Unreal R&D projects I wanted to take the time and learn a bit of its architecture and language.
The goal with this project was to set up the a couple of basic components like manager classes for the game, level, player, windows, events, etc. along with a logging service and a visual debug component, that could be reused between different projects. 

I also wanted to get familiar with the physics engine with the intent to create a fluid movement system.

Art is pure placeholder using Godot's icon.
Chiptune made in Renoise tracker

Semi Oblique Strategies

About fifteen years ago I was having infrequent character modeling sessions between other jobs, and as such, I kept forgetting all those small and valuable discoveries and learnings during the process.

In one of those instances I decided to write notes to myself, and kept that practice going on for some years. This proved to be quite useful, and through the years I became aware of the mistakes I kept on making, and managed to reinforce some good practices.

Read More

Blender - Align Pivot To Selection

During the process of porting my tools to the new version of Blender 2.8 I couldn’t find a tool that would easily allow me to align the origin pivot rotation to a sub-object, or object selection, and I decided to write and share the tool below.


Download: - September 02 2020

Note: Blender 2.9 + required


Unzip the archive to %appdata%\Blender Foundation\Blender\2.90\scripts\addons (Undoz_Tools folder should be present in addons)
Start Blender, open Edit > Preferences, search for Undoz Tools in the Add-ons section and enable the script


You can find the action in the right click Context Menu as: “Align Origin To Selection

Edit mode: Make a selection ( Good on edges )
Object mode: Select two objects (The Active/Last selected is the source for the pivot/origin orientation)

The command is also present in the F3 search menu as Align Origin Pivot To Selection (Developer Extras needs to be enabled in Preferences > Interface > Display)

Cycles - SSS Skin Shader

For the last few days I’ve been testing Cycles, which is a fairly a new unbiased CPU/GPU path tracer renderer for Blender, available alongside Blender’s internal engine. When combining its speed with the flexibility of Blender’s Shading node editor, it becomes a serious contender to Vray, Arnold, Keyshot, Octane or Corona, plus it’s Open Source and free.

While Cycles comes with basic shaders like Diffuse BSDF, Subsurface BSSRDF, Glossy BSDF (including the GGX Shading Model), etc, to create realistic materials you have to combine these together into more a complex Shading Group. Once created, this Shading Group can be easily reused and shared between scenes, and can be controlled with a set a variables that you decide to expose to the end user. 

In this example I am mixing together two Subsurface shaders, a Diffuse shader, and a GGX Gloss shader. To get a red scattering lobe, I am overlaying the color inputs of the SSS shaders with two complimentary colors, slightly weighted towards red, and I am using two different scattering radiuses to simulate two skin layers. For the specular component I am remapping the fresnel node to allow individual control over the F0 and F1 parameters. 

I would like to thank Ten24 for providing this model.


Update (8-8-2016)

Skin Shader: I’ve added a simple scele with just the skin shader so you can use it with your own models. 


Skin Shader and Model: was very generous to give away a Blender Render Scene complete with a free Head Scan and the Skin shader above. You can find it here:

Vertex - Pattern Drafting in Marvelous Designer and Zbrush

If you are interested in pattern drafting for custom designs, then you can find an article I wrote in the latest edition of Vertex from Art By Papercut.

Vertex 3 is one of the best CG publications and it’s packed with learning content from professionals in the games industry.

You can download it for free at:

VRay - Physically Based Shader

I am currently working a Vray base shader for dielectrics and metals that has a similar response to the PBR implementations from Marmoset/Unreal/Substance. The purpose of this is to have a material that responds well in different lighting conditions, and that is driven by plausible parameters based on physical measurements. It currently supports both metallness/gloss and specular(F0)/gloss workflows, along with micro roughness control, and should make the texturing process a lot more easier and consistent between different projects.


Download: undoz_vray_PBR_simple_SHD.rar( Please note that this shader was created before Vray supported Maya’s color management system. That’s why the shader is setup with gamma correction nodes. You can either disable the color management, bypass the gamma nodes, or set the texture color space to raw. Edited: 8-8-2016 )

Usage: Import the shader through the Maya Hypershade window (File>Import). 

The shader is made for LWF (gamma 2.2) and supports both mentalness and specular workflows. The fresnel component is remapped to allow full F0-F1 control, and the F1 component is sensitive to glosiness changes to account for the microfacet normal changes.

Saturated Carbon

Saturated Carbon

One year ago I decided to start a personal space on tumblr called Saturated Carbon while looking for new sources of inspiration, and trying to expose myself to something a bit different than the usual suspects like CGHub, CGSociety, Artstation, that probably most of us visit daily. Over the time this proved to be a very useful exercise and it is something that I regularly reefer to when I am in need inspiration, and which I try update whenever I stumble upon something appealing, be it fashion, industrial design, photography, movies or sketches. 

Hard/Soft Edges to Edge Creasing - Maya MEL

One of the modeling workflows that I frequently apply in 3ds Max is to use Smoothing Groups to act as a poor man’s creasing. That is done by stacking two Turbosmooth modifiers on top of eachother, with the first one having Separate By Smoothing Groups on and using the Iterations to control the crease amount. 

With the introduction of Pixar’s OpenSubdivs in Maya 2015, edge creasing becomes very appealing and in a lot of cases it can be a huge time saver. One of the major drawbacks I found was that the crease values are easily destroyed when using basic modeling tools, and rebuilding them is a pain in the ass.

With the script below I am replicating the same workflow by using Hard/Soft edges to store and control the creasing of the model. It basically adds a predefined creasing value to Hard edges and removes the creasing from Soft edges. 

I run this after I define the initial Hard/Soft edges, usually with Set Normal Angle, and whenever the edge creasing gets mangled by various modeling tools. The authoring is done only by using Harden/Soften Edge, or by using the commands from the Shelf attached at the bottom. 

global proc createCrease() { float $creaseValue = 3; ConvertSelectionToEdges; SelectEdgeMask; string $selEdges[] = `ls -sl -fl`; string $hardEdges[]; polyCrease -value 0; select -cl; int $i = 0; for ($edge in $selEdges) { string $edgeType[] = `polyInfo -ev $edge`; if (`gmatch $edgeType[0] "*Hard*"`) { $hardEdges[$i] = $edge; $i++; } } select $hardEdges; polyCrease -value $creaseValue; select -cl ; } createCrease();


 I recommend staying away from defining custom crease sets until you are done changing the topology of the model, and only worry about Hard and Soft edges. Maya’s tools are very destructive when it comes to maintaining crease values, and you will end up manually reassigning custom creases after each topology change. The default creasing value in the script is 3, so you can use safely use the H3 and Soft presets while modeling, in case you have to rebuild the creasing with the H/S script later on. These presets mark the edges as Hard/Soft at the same time

Please feel free to modify the scripts to your own liking!


Download: shelf_U_Crease.mel

To install, copy it to : Documents\maya\2015-x64\prefs\shelves

Zbrush Practical Material Set


Here is the second edition of my Zbrush Practical Material Set that I’ve created a few years ago. I thought of sharing it here since the original post is buried deep on the ZBrush Central forums.

Today I mostly use the real time shaders from the set since they respond to light direction changes and they are a bit more versatile.

Copy the files into the ZStartup\Materials Directory and restart ZBrush

Download: Undoz_ZbrushParticalMatSet.rar

Base Meshes And Primitives


This is a set of base meshes and primitives that I have been using for the last couple of years as a start for my concept sculpts in ZBrush

The models are in OBJ format so feel free to use them your program of choice. 


Download: Undoz_BaseMeshSet.rar