I created a snail-shaped curve using Bezier curve, and a straight tube using BMesh. I hope to deform the shape of the tube, so that its long axis follows the path of the curve, but the modifer does not give me the right outcome, no matter which axis I chose (neither did the translation work). Is there anything I missed? What is the key for it to function properly?
- It will simplify if you set the origin of both your objects to their geometry (right click and Set Origin to Geometry)
- Once done, put the 2 objects at the same location (select one object, press ShiftS > Cursor to Selected, select the other object and ShiftS > Selection to Cursor)
- Create some edge loops all along your tube if you want it to bend
- Give it the Curve modifier with the curve as Object
Your object needs to be subdivided down its length to be deformed by the curve. The Curve modifier does not generate vertices, it can only move them about, and 2 vertices will always be joined by a straight edge.
Beyond that, you might want to follow the steps in this recent answer. Your scales are OK, but the other steps may help you out.
The main point of this answer is to suggest that you may not need to deform an object down this curve at all. If your profile is circular, you can use the curve's native Bevel, accessible through its Data tab > Geometry panel. The curve can generate the circular geometry by itself, and you can convert it to a mesh whenever you like.
If you need to change the profile's radius on the way down the curve, you can AltS scale the profile at any control point. In the Active Spline panel, you can change the way the radius is interpolated between control points.