With the mesh and curve selected . Pressing Ctrl+P to follow path. But the mesh not following the shape of the curve. Some are inside some out side the path. Any suggestion or help how it works. Thanks
3 Answers
You are doing it the wrong way:
- delete the parent relationship, you won't need it
- create a Follow Path constraint on the object and select the curve in the Target field
- As you can see the origin of the object is on the curve, but the object itself is not, so to fix it, with the objects selected, go to Object > Set Origin > Origin to Center of Mass (Surface), and press Alt + G to reset the object's position
- You may want to enable Curve Radius in the constraint
NOTE
In your picture, unlike in your .blend file, you have many of those object on the curve. If you want multiple copies of the object on the curve you should use an Array Modifier with a Curve Modifier
-
$\begingroup$ but later i want to apply that mesh to 1 object $\endgroup$– atekSep 27, 2019 at 13:24
-
$\begingroup$ what do you mean by apply to an object? if you mean Join, any parent relationship or constraint will be lost. If you just want to parent it to that object, just parent the curve to the object and the sphere will follow as well $\endgroup$– TareyesSep 27, 2019 at 16:20
- The hemisphere object (its origin) is following the curve, exactly.
- You can see its location on the curve by looking at the end of its relationship line on the curve.
- But hang on a minute, the origin is nowhere near that point?
- That's because when you parent an object, using 'Follow Path', it's done with 'Keep Transform', and you're not given an option. The offset between the object(origin) and the curve is preserved (in a hidden inverse matrix).
- Furthermore, the hemisphere's mesh is offset from its own object(origin).
- The two offsets roughly cancel one another, but actually the mesh is following a point on the curve some way round from its own location.. and the curve is not circular...
TL;DR
To make things less confusing, we could get rid of the offsets. One way would be:
- Create the hemisphere at world 0, centered on its own origin, bearing in mind that its origin is what will lie on the curve after parenting
- Parent the hemisphere to the curve with 'Follow Curve', but then CtrlA > Clear menu > 'Origin'. The hemisphere object should jump to the curve.
- Adjust the hemisphere's position on the curve using the curve's evaluation time.
- You can tweak the hemisphere mesh's transform with respect to its object origin in Edit Mode.
There are other ways to do all that, once you know what's going on... you may like another one better.
But IMO, better still, use a 'Follow Path' constraint instead of direct parenting, which I find altogether less confusing, and consistent with the rest of the system. I'm open to correction, but I think 'Follow Path' parenting is a bit of an awkward legacy, in Blender.
-
$\begingroup$ The constraint method is nicely described in @Tareyes answer $\endgroup$– Robin Betts ♦Sep 27, 2019 at 10:24
You're using Dupliframes, which won't work from 2.8. But if you want to fix your problem, your need to fix the object's origin and its position on the curve:
- First you need to put the origin of the object's geometry:
- Now, for a Dupliframes, you need to put the object on the first vertex of the curve. See the dotted line between your object and the first vertex of the curve, you can see that your object is far from it. When a curve is open, the starting point will be the first vertex, when it's a close shape like yours it will be one of the vertices. If you want this starting vertex to be another one than the one you see, enable Bsurfaces addon, select the desired vertex, then in the T menu > Tools > Bsurfaces > Set First Points (or delete the segment with X and refill it with F).
- If you move the object on this starting point you'll have a clean duplication.