10
$\begingroup$

I'd like to make a scientifically accurate animated snake using particle objects (and no, sculpting or bump mapping won't be realistic enough because real scales don't actually shrink and stretch when the snake bends, they overlap or move away from each other, like particles do).

As per this answer Particle Object to Inherit Uniform Colour from Emitter I managed to get the scales to have ONE color sampled from the emitter thanks to the "from instancer" checkbox.

enter image description here

Cute but not good enough!

Real snake scales have multiple colors EACH, they're not actually pixilated! enter image description here

So this is what I hoped to achieve, an imitation of real life:

enter image description here

This would not only make my snake 100% realistic, but also make my life easier as I would only have to paint a pattern onto the body mesh which then reflects perfectly onto the scales... but even though I tried to follow the instructions from the follow-up answer on the previously mentioned post, which supposedly would make the scales go "chamelleon-like" just as I need them to, I can't for the life of me get it to work!

each scale has the same rainbow as the entire body, rather than only copying a small area in their vicinity...

I've tried:

  • making sure everything shares the same origin.
  • making the original scale object have the same size as the whole body (scale applied)
  • making a completely new file with simpler objects (cubes and planes)

nothing works.

enter image description here

Here's the file, hopefully containing new updeated texture:

Any help will be appreciated!

$\endgroup$
28
  • 1
    $\begingroup$ Apply the particle OR use "Animation Nodes" add-on, then copy UV using blender.stackexchange.com/a/86759 OR bake snake texture to the scales? $\endgroup$ Oct 19 '20 at 1:20
  • 1
    $\begingroup$ It works when animating (it is UV based)... will provide details asap. Two approaches could work: this one (from the image above) or applying all and data transfer. For now, have not compared them. A decisive point would be: could you provide a real snake skin texture so that we can see the result? $\endgroup$
    – lemon
    Oct 19 '20 at 18:18
  • 2
    $\begingroup$ i.stack.imgur.com/f5GJj.jpg so far... not accurate enough... But the bad news are the following: have imagine 2 ways to do it. Though, in both the limitation is about they need a seamless texture in at least one dimension for the snake texture... Do you think you can manage it? (eventually, we can continue in chat if we're proposed to here). $\endgroup$
    – lemon
    Oct 20 '20 at 17:34
  • 1
    $\begingroup$ @CBarr, I won't answer as what I've done so far is not good enough. Though, this is a result. So here is the file with some comments in it. Hope that will help. blend-exchange.giantcowfilms.com/b/PjwQd8v6 $\endgroup$
    – lemon
    Oct 25 '20 at 7:59
  • 1
    $\begingroup$ @cppBeginner sorry! I wanted to keep this updated but work became real tough all of a sudden and I won't be touching this until at least the end of this month. I will be trying every option suggested and hopefully post a definitive answer. This is my sole priority when I can get back to blender (I absolutely NEED to be able to make realistic snakes!)... just not right now. $\endgroup$
    – CBarr
    Nov 19 '20 at 10:24
1
$\begingroup$

Use UV From Instancer to offset a large UV gradient. So a scale shows not just one point from the texture but a small area around.

enter image description here

$\endgroup$
0
$\begingroup$

I've simplified the node tree from unwave's solution above by changing the "Texture Mapping Type" from "Point" (which scales the coordinate system) to "Texture" (which scales the texture itself). In order to achieve the same relative movements between the texture and the texture coordinate system, the rotation around the z-axis had to be inverted from 90° to -90° and the scaling factor from 1/3000 to 3000. The scaling factor of 7 for the y-axis in the "Mapping Node" (set to "Point") had to be taken as divisor for the scaling factor 3000 in the new mapping node (set to "Texture") giving the value 428.571, but here for x and not for y which gets the undivided scaling factor of 3000. I've further simplified 428.571 to 300: enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.