Jump to content
  • Advertisement
  • 11/12/18 02:20 AM

    Using the Skin Modifier in Blender to Quickly Model Creatures

    Visual Arts

    lawnjelly

    After spending many hours painstakingly attempting to model creatures entirely by hand, I finally discovered (a couple of years ago) the skin modifier in Blender, which is a fantastic quick way to build organic creatures and shapes, especially for the artistically challenged like myself, and also makes rigging a breeze. I thought I would write a quick description for those unfamiliar.

    If you want ultimate control, particularly for a low poly creature, there is no substitute for manually creating polys. However, this can be very time consuming and tedious. If you are instead in a position where you are willing to trade off speed of creation against 'perfect rendering efficiency', or are making medium/high poly models, or models for later sculpting, then one of the options available is the skin modifier.

    Using the skin modifier, instead of modelling the skin by hand you place the joints (as vertices) of a creature to build a kind of skeleton, and allow the skin modifier to automagically generate a skin around this skeleton.

     

    Process

    • Typically I start off by creating a plane, then go into edit mode, and merge the vertices to 1 in the centre.
    • Next set up the modifier stack to create the skin. At the top of the stack goes a mirror modifier, because most animals are symmetrical bilaterally. Next goes the skin modifier, which creates a simple box-like skin around the skeleton. Finally add a subsurface modifier to smooth the skin, and make it more organic.

    Set up the skin modifier in Blender

    • Once the modifier stack is ready you can begin modelling. In the case of this bird, I started with a top-down view.
    • Select the start vertex (there should now be a 'blob' around the single merged vertex), and create the skeleton by pressing 'e' to extrude and place a new vertex. I did this to place several vertices to create a backbone for the bird.
    • You can then create wings and legs by picking one of the vertices in the backbone and extruding to the side.

    Extrude vertices to create wings and legs

    • If you follow this process you can form a rough top-down skeleton, it doesn't have to be exact because it is easy to adjust, that is one of the beauties of skin modifier. I find it useful to google pictures of the skeleton of the animal for reference.
    • Next look at side views and adjust the up-down position of the vertices (joints). The legs needed to be going downwards, and the head slightly up.
    • Once I am happy with the basics of the structure, I start to fill it out. You do this by selecting a vertex, then pressing 'ctrl-a' then dragging with the mouse. You can make the skin thicker or thinner at each vertex.

    Refine and add details to complete your model

    • This can quickly give you a reasonable shape. You can further refine the shape by pressing 'ctrl-a' then limiting to either the x or y axis by pressing 'x' or 'y' before dragging. I used this to give a broad flat tail and wings.

     

    Conclusion

    Pretty soon you can build a pretty good model. You can tweak a few things in the skin modifier, especially set a root vertex (e.g. pelvis) can make it easier for later animation.

    A complete (if basic) model

     

    Skin modifier also makes rigging easy. Once you are happy with your skeleton, make a copy of the whole thing (so you don't lose the original), then choose 'create armature' from the skin modifier. This will create an armature and link it to the mesh so it is ready for posing and animating!

    I also typically choose smooth shading in the skin modifier, then manually add hard edges in mesh edit mode (ctrl-e, hard edge, and use in combination with the edge-split modifier). I also use this to select seams for uv mapping. Note that once I finish the skin modifier version I usually have to do a little tweaking of the polys manually, because there are some things it is not good at.

    Anyway, this has been a brief introduction to this method, I would encourage trying it and following some youtube tutorials.

     

    After some decimating and very rough texturing (~640 tris)

    Our completed model with (very) rough texturing

     



      Report Article


    User Feedback

    Create an account or sign in to leave a review

    You need to be a member in order to leave a review

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

    There are no reviews to display.


  • Advertisement
  • Advertisement
  • Latest Featured Articles

  • Featured Blogs

  • Advertisement
  • Popular Now

  • Similar Content

    • By MasterReDWinD
      Hi,
      I am trying to create a set of functions (similar to Libnoise, Fastnoise and the Accidental Noise Library) to manipulate noise with the goal of producing terrain.  As recommended by this article (http://accidentalnoise.sourceforge.net/minecraftworlds.html) I am starting out with a 'gradient' function.  The purpose of this function is to establish a ground level.  I've read the articles many times, along with the previous versions and I can't get my head around this function at a conceptual level.
      I believe that the gradient function maps input coordinates (in my case x, y, z) to a range that I specify (0 to 1 in the linked article), on a per axis basis and assigns them a value based on where they fall within the range?  Assuming y is my gradient axis, the gradient is from 0 to 1 and the value range is -1 to 1 then any y value above 1 or below 0 is clamped to either 1 or -1.  For a y value between the 0 and 1 the result is lerp(-1, 1, y)?
      I did find this question but it didn't clear things up for me (https://gamedev.stackexchange.com/questions/57790/accidental-noise-gradient-function).
      Any clarification would be greatly appreciated.  Thanks.
       
    • By horror_man
      Hello, I'm currently searching for additional talented and passionate members for our team that's creating a small horror game.
       
      About the game: The game would be a small sci-fi/post-apocalyptic survival horror 3D game with FPS (First person shooter) mechanics and an original setting and story based in a book (which I'm writing) scene, where a group of prisoners are left behind in an abandoned underground facility. It would play similar to Dead Space combined with Penumbra and SCP: Secret Laboratory, with the option of playing solo or multiplayer.
       
      Engine that'd be used to create the game: Unity
       
      About me: I'm a music composer with 4 years of experience and I'm fairly new in this game development world, and I'm currently leading the team that'd be creating this beautiful and horrifying game. I decided that making the book which I'm writing into a game would be really cool, and I got more motivated about doing so some time ago when I got a bunch of expensive Unity assets for a very low price. However, I researched about how to do things right in game development so I reduced the scope of it as much as I could so that's why this game is really based in a scene of the book and not the entire thing. Also I'm currently learning how to use Unity and learning how to program.
       
      Our team right now consists of: Me (Game Designer, Creator, Music Composer, Writer), 4 3D Modelers, 2 Game Programmers, 1 Sound Effect Designer, 1 Concept Artist, 1 3D Animator and 1 Community Manager.
       
      Who am I looking for: We are looking for a talented and passionate programmer that's experienced with Unity and C#.
      Right now the game is in mid-early development and you can see more information about it and follow our progress in our game jolt page here: https://gamejolt.com/games/devilspunishment/391190 . We expect to finish some sort of prototype in 3 months from now.
       
      This is a contract rev-share position
       
      If you are interested in joining, contributing or have questions about the project then let's talk. You can message me in Discord: world_creator#9524
    • By congard
      I am trying to restore the position from the depths. I separately created a position map in view space, which I use as a basis for tests. But I can not get the same result when I try to reconstruct the position from the depth. Here's how I'm trying to do this:
      #define getPosition(texCoord) texture(positionMap, texCoord).xyz vec3 posFromDepth(float depth) { float z = depth * 2.0 - 1.0; vec4 clipSpacePosition = vec4(texCoord * 2.0 - 1.0, z, 1.0); vec4 viewSpacePosition = inverse(projection) * clipSpacePosition; // Perspective division viewSpacePosition /= viewSpacePosition.w; return viewSpacePosition.xyz; } void main() { float d = -(projection * vec4(getPosition(texCoord), 1.0)).z; // get depth fragColor = posFromDepth(d); //fragColor = getPosition(texCoord); fragColor = clamp(fragColor, 0, 1); } Here is the correct position map:

      But reconstructed looks like this:

      What am I doing wrong?
    • By JimmieJohnsson84
      Hi everyone!
       
      Im working on a tutorial / work portfolio that will try and cover not just a single topic ("animating a 3D model", "lighting", "collision detection"), but a whole asteroid-like game using C++ and OpenGL.
      My goal is to try and cover all aspects of this game and how all the parts are connected to each other in a comprehensive and efficient way.

      The game is pretty close to being finished and sits at gitlab, but my site covering it is still in progress. But I figured it would make sense to let others look at it and give me feedback on it as I work on the tutorial. Is there anyone who would be interested in helping out with reading through it, checking for misstakes or just general feedback? I would of course mention anyone who gives me feedback at a credits part of the tutorial (please put a credits section in your feedback (name, twitter account, website - what ever you want) if you want to get credited).

      The work-in-progress site sits at http://165.22.53.246
      All and any help would be very appreciated!
       
       
    • By slonv23
      I'm looking for programmers to take part in my spare time project. I am a web programmer, but interested in gamedev. I've decided to make my own game which I think will help me to understand underlying concepts of the game programming. I've chosen to create a 3d space shooter, something similar to space battles in star wars battlefront. The tools I am using are javascript and three.js library. It is not a big deal to understand javascript if you know some low level languages such as C++ or C. So far I've implemented basic movement of a spaceship and a camera. In future I'm planning to add a multiplayer. Contact me if you are interested in what I'm doing and you are the same newbie to the game programming as I. I can share some video of the application I have so far.
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!