how to control an arc angle with an empty?

I"m trying to figure out how to rig an arc that is controlled by an empty so I can simply move or rotate the empty and the end-angle of the arc will change. Like this:




I’ve looked at a lot of methods, modifiers, constraints, drivers etc, but can’t find a good solution to what is probably a simple problem. The closest thing I’ve come up with is using an array with a central “object offset” to form a circular dotted line, but this doesn’t have the accurate, predictable results that I need.
Any ideas?
Thanks.

What range of included angle to you need? e.g. 5 to 180, 10 - 360?

0 to 135 ought to do it. Or let’s say, 10 to 135.

Something like this?

arc-problem.blend (713 KB)

Just press PLAY or rotate the empty about Y axis. It might not be the best solution, but seems to work. I had to use a similar principle to get my clock mechanism to wind a cord onto a drum.

Thanks Clock. This is a clever workaround. Totally follows your K.I.S.S. maxim! This will work great.
Though, it does seem to be a bit of an oversight in the broad, impressive functionality of Blender. Maybe if the curve modifier had a percentage-along-path function, similar to so many “loft” features in other programs.

I couldn’t agree more with your wish for a mod to the curve modifier!

Don’t you have rendering problems with this animation? I think it would be easier to make a curve, give it a bevel depth and then just drive the end bevel factor with the rotation of the empty. Here is an example; rotate the empty counter clockwise.

arc_prob1.blend (512 KB)

AlanK! yes that is a better solution, I did say mine was might not be the best solution. I don’t have render problems unless I make the segments from different materials. In that circumstance, I scale each successive segment by a factor of 0.995 times the previous one. I like your solution and have to admit my knowledge was not good enough to come up with that. Thanks - another day when I learn something, (it’s a sad day when I don’t).

@AlanK can you go into how you set up the driver for this a bit more?..
I’m a little lost on how it works exactly…
I see in the Drivers Panel there is a ‘generator’ Modifier…
I have never used one of these before… (at least not that I know of) …
also under active keyframe you have set .333 in X and Y did you set these by hand… that is… did you type these in? or did blender default these in when you applied the Driver?

Norvman, the numbers in the active key frame are set when you add the driver. I used the generator modifier as an easy way to modify the magnitude of the effect of the driver (reduce it in this case). My math is a bit rusty but I think it uses polynomial equations to modify the curve. Poly Order 1 is a straight line, if you add a number in the first box it will add this number to the driver value; if you add a number in the second box it will multiply the driver value by this number and change the slope of the curve. In my case I just multiplied by 0.2 to reduce the effect of the rotation of the empty so that it roughly followed the increase in the line. Hope this helps.

I worked on this a bit, because I need to be able to drive the angle of this arc in the arc’s local space… Like Alan K I ended up using a driver to control the bevel factor of the arc with a slider. When I started this, I didn’t understand how to use curves & “bevel factor”… so that helped. Also, I used Jacques Lucke’s Animation nodes (which is an awesome plugin) to control the text, so that it updates dynamically & accurately as I slide the slider. This way I can place this angle object anywhere in space and use the slider to change the angle, a little like an angle-dimension in any CAD program. I did a similar thing with a linear dimension object. It seems to work pretty well so far. let me know if you see problems, or better ways to do it. Thanks,

I couldn’t get my blend to upload here, but it’s at BlendSwap:
http://www.blendswap.com/blends/view/76776

Hi

Your link to the blend is showing a “Not Published” error…

Sorry about that. I just checked it, and it looks like the admins are still checking it, I guess for viruses, I’m not sure. Anyway, hopefully it will be published in the next day or so.

Thanks for the explain… I hadn’t used the Generator modifier before…

I found out that my blend was rejected from BlendSwap. Sorry about that. I’m new to Blender as well as BlendSwap, and I’m not quite sure why it’s being rejected. I’ll make a cleaner version and see if I can upload it. Hopefully I can get it out there, because I think I found a pretty good solution to something that I can’t find anywhere else i.e. renderable dimension objects that have animatible, dynamically updating text. There is a Dimension plugin out there that is quite nice for static measurements, but the text will not dynamically update as you move the length/angle of your dimension.

Try uploading it to www.pasteall.org in the blends section (click the second icon on the right side) and post the link to it here.

I found this one on my random searchings for something else - what you need to do for the driver is use the rotation of the empty as the variable and then the scripted expression would be " var / (2 * pi) " without the quotes. The rotation of the empty is in radians - there are 2 * pi radians in a full circle, so dividing the rotation by 2 * pi means that a full rotation returns a value of 1 - just what you need to drive the end point of the curve’s bevel object from one end (0) to the other (1) - hope it’ not too late to clarify this.

Cheers. Clock.

PS I am going to use this principle to mod my clock’s winding mechanism - hence my continuing interest in this post.