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.