[Creating snake scale] any way to work with Array modifier with Bezier curve without stretching the mesh?

Contests and Challenges

Is there a way to keep the mesh from stretching like this when you go around a curve?

  • spikeyxxx replied

    Hi talkingskunk, there is. Use Instancing in stead of a Curve Modifier. But there are some extra steps necessary:

    Create some scales:

    Make your Curve:

    Convert it to a Mesh and go into Edit Mode:

    Here you can already see two problems; the Vertex Normals are a mess and the distribution of the Vertices is uneven.

    Second part first: enable the LoopTools Addon and then W (when using RCS) or right click > LoopTools > Space:

    Now comes the trick; Extrude on the Z-axis (in my case):

    (This fixes the Vertex Normals, but we are not going to use that here, in stead we are using the created Faces.)

    Now back to Object Mode, Select your Scales, SHIFT Select your curve-mesh and CTRL+P > Set Parent to Object.

    Then go to Instancing and you can Instance on the Faces:


  • spikeyxxx replied

    Sorry, I forgot, you can find that here:

  • talkingskunk replied

    Thank you. I'm having trouble how to make it go around the snake curves, as the the scale mesh will not turn with the curve?

    Still not certain re: relationship between normals of the faces with the mesh.



  • John Sanderson(procyonlotor) replied

    Alternatively, You could just use a plane with the array and curve modifier, have it parented to your scale and set up instances on it.  This preserves your curve so you can still edit it. Though spikey may know some reason this isn't best practice?

  • spikeyxxx replied

    pprocyonlotor that sounds like a great idea, but I can't get it to work..

    your method:

    vs mine:

  • John Sanderson(procyonlotor) replied

    I don't know why it did that.  It seems to work fine for me. 

  • spikeyxxx replied

    pprocyonlotor I must have done something wrong then.

    But will does your method still work when the curve is 3D like in talkingskunk"s snake?

    Mine doesn't, because you can't extrude correctly anymore...

  • spikeyxxx replied

    ttalkingskunk I didn't realize that the curve was so snakelike and not flat.

    What you can do in your case, is to give the curve a Bevel and then convert it to a Mesh again and Instance a single scale to its Faces:

    Of course first take care of the spacing in the Curve and make sure you have the correct resolution.

    Important: if the orientation of the scales is wrong, first unparent the scale, the rotate it in Edit Mode (or Apply the Rotation) then Parent it again.

  • John Sanderson(procyonlotor) replied

    it does.

  • spikeyxxx replied

    pprocyonlotor excellent! Sounds like the way to go then. Still being able to move the Curve is a great advatage.

    I'd probably try something like this in Geometry Nodes, if I had to do it myself, but this is a great and very easy and accessible way to do it. Thanks for helping!


  • talkingskunk replied

    Sorry guys. After trying array and curve modifier method to create scales, and after trying to draw the image texture in sculpting (both of which crashes my Blender),  I am trying UV editing with the image of scales I cropped from Google. 

    The issue: there are visible cuts in the model, as the image is not large enough to encompass the the entire unwrapped skin.

    Question: How  would you go about this? Would you know how to make an array of the same image?

  • talkingskunk replied

    3-01 at 21.21.34.png

  • spikeyxxx replied

    You need to use a seamless (image) texture.

  • spikeyxxx replied
  • talkingskunk replied

    Is it possible to model your own object and convert it into a seamless texture?

    For example, this:

    3-02 at 12.58.03.png

  • spikeyxxx replied

    You most certainly can!

    Josh Maul did that in his stuffed elephant course in part two. You can find that here: https://www.youtube.com/watch?v=bQFX9tXMCdI


  • talkingskunk replied

    With UV unwrap, I realize it will be difficult to control the flow of the scale to be in one smooth direction, so I think this method was the best:

    1. Create the scale object with Array modifier, then render a displacement map image in EXR.

    2. Then, make a material with the Image Texture node and Displacement node.

    3. Then Append the material into the actual snake body object.

    There is one more hiccup, is that it is not exactly seamless, so there are obvious cuts in the scale flow. I might just try to make it work in Sculpting. Please let me know if there is a quicker solution.3-02 at 17.13.00.png



  • talkingskunk replied

    Figured it out. It was just a matter of lining up the displacement map object in the camera view, taking into account the 4 sides before rendering the image.

    3-02 at 22.42.10.png


    3-02 at 22.38.41.png

    2 loves
  • talkingskunk replied

    Ok. I messed something up during messing around with UV editing workspace. I unwrapped it, and marked seam, and in the UV Editor, I uploaded an image, and it just messed up the entire materials, and I can't go back to it. Does anyone know what the problem is?

    3-03 at 20.04.08.png3-03 at 20.04.19.png

  • spikeyxxx replied

    Try adjusting the Y Scale in your Mapping Node.