View Full Version : Script: Nonuniform rotate array ?

05 May 2003, 02:58 PM
First I am using Max 3.1
Second I looked thru the search and found only a little bit.
How can I rotate an object like an array to create tick marks like a watch face BUT have them increase in the rotate by an exponential amount? So that it is not uniform.
Thanks for the help

05 May 2003, 06:23 PM
A quick way to do this is to use a spline and the spacing tool:

Draw an helix spline with no height so that you have the exponential form
then create your reference object go to tools->spacing tool and then pick the spline as path.

even on Max3.1 it should work

05 May 2003, 08:49 PM
When I try this it still spaces the ticks evenly over the spline.
I want something that will increase the degrees a little more each time there is another tick.
ie (all ticks have their point of rotation in the middle of the dial) first tick rotates 1 degree
then the next one rotates 1.5
then the next one rotates 3
then 6
then 10
then 20 etc.
here is an example for you

05 May 2003, 05:39 PM
Is there anyone out there who knows how to do this?
I have tried taking a mel type of idea and I am getting no where.

05 May 2003, 12:34 PM
I've an idea, I'll try this week-end

05 May 2003, 05:52 PM
Thanks orpheo.
I would really appreciate any help.

06 June 2003, 04:31 AM
I'd love a script that did this btw :D

Just thought I would say that

06 June 2003, 07:51 PM
I can do this, but I need more information.

1. You say exponential, but in your example it's more like doubling the value. What shall it be? Is there some specific formula that should be used to determine the rotation factor?

2. Are the rotation amounts you're referring to supposed to be absolute or cumulative? In other words, is it 1.5 degrees from the original object, then 3 degrees from the original object, etc., or is it 1.5 degrees from the original object, then 3 degrees from there, etc.?

3. How do you wish to define the center of the circle? For instance, you could use an object, or you could pick a point on the grid, or enter a radius and allow the center to be chosen arbitrarily. There are any number of ways that this could be done, and I wouldn't want to have to account for all of them;)

4. Does it only need to array around the world Z-axis? Or would you prefer that it always be around the axis perpendicular to the active viewport?

5. Does it need to be strictly circular, or will you require/desire the ability to make a spiral formation?

6. Should the array stop at 360 degrees? This relates closely to question #5, since a strictly circular array will get messy if you go greater than 360 degrees, whereas a spiral is best achieved with greater than 360.

If I have the answers to these questions, then this should be a relatively simple thing to script. Let me know:thumbsup:


06 June 2003, 12:58 PM
yes :D

This might sound stupid but can't you just build all of that into the script and then just give the user options?

06 June 2003, 02:52 PM
That doesn't sound stupid at all, visualboo. It's just that that's a lot more trouble than I'm willing to go to at this time. I was thinking more along the lines of a one-off script so that rgbman could do whatever it is that he needs to do. It could be developed into something more general purpose later on.


06 June 2003, 07:42 PM
ah, I see. I just thought that you being the super code wiz that you are could whip that out like it was a small little one off script ;) hehe

thanks for all your help in the community LF

06 June 2003, 07:58 PM
Ok sorry it took me soo long but have been busy.
ok here we go
1. Yeah something that could be placed inside that part of the script to make my own measurement.
It would be something like the last degree x 2 +1. something like that
2. well i am not sure if i totally understand but it could be either. but i was thinking it would be more based on the last peice that got rotated. so the 3rd tick would be based on the one before it not from the original peice at lets say 12 oclock.
3. i would like to be able just to set the rotation point in the middle of the dial and then just like array have it duplicate around the center that i pick.
4. i would like to be able to type in the axis that i choose
5. i am sure others would want to be able to do a spiral but mine right now just needs to be circular
6. yeah 360 is fine but maybe something that would allow for less then 360 like 180 because my dial does not go all the way to 360 more like 300.

Thanks for the help.

06 June 2003, 08:56 PM
visualboo -
I appreciate the vote of confidence, but I don't possess quite that level of wizardry yet:D It still takes me a little tinkering time to develop most of the scripts I write.

rgbman -
Thanks for the clarification. I just have one question: won't your numbers get a little out of hand using a formula like 2x + 1, when the rotation is cumulative? Starting with one degree of rotation, you'd end up exceeding 360 degrees after only 7 iterations! Anyway, I'm going to allow you to type in your own expression, so you can decide what works best:)

I'll have to wait 'til tonight to work on the script, so please be patient;)


06 June 2003, 03:04 PM
I didn't get as much time to work on this as I'd hoped last night. I've got the main bits hashed out, but it isn't all put together yet. I should be able to post something tonight.

Sorry for the delay:)


06 June 2003, 04:35 PM
Yeah I think you are right about the math. I think that is the formula for acceleration and it was the first thing that came to me.

Yeah take your time on the script. I understand how hard it is because I couldnt do it. lol

06 June 2003, 11:03 PM
So did we get anywhere with this one?

CGTalk Moderation
01 January 2006, 06:00 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.