PDA

View Full Version : Can anyone make sense of this script?


DLDude
01-08-2007, 12:23 AM
This was done by a buddy who has disappeared from the internet.

He was working on a script to automatically animate rollercoasters. I believe it puts dummies on the rails, and then calculates speed and rotation accordingly. I dont know anything about scripting so maybe you could could lead me towards finishing the script.

here's the text:
--Global Variables

global Hi = 157.9989 --Initial Height(In Feet)
global Hf = 34.9887 --Final Height(In Feet)
global Vi = 22 --Initial Velocity(In Feet / Second)
global Vf = 66 --Final Velocity(In Feet / Second)
global Xi = 17.3425 --Initial Path Percentage(Float)
global g = 32 --Acceleration Due to Gravity(In Feet / Second ^ 2)
global l = 4772.7065 --Path Length(In Feet)
global s = 5 --Car Speration Distance(In Feet)
global c = 9 --Number of Cars(Odd)
global X = #() --X Value Array
global Main = #() --Main Dummy Array
global Node = #() --Node Dummy Array
global Look = #() --Look Dummy Array


--Train Dummy Set Up

for i in 1 to c do
(
Main[i] = dummy length:1 width:1 height:1
Node[i] = dummy length:1 width:1 height:1
Look[i] = dummy length:1 width:1 height:1
Main[i].pos.controller = path_constraint()
Node[i].pos.controller = path_constraint()
Look[i].pos.controller = path_constraint()
Main[i].pos.controller.path = $Spline_Main
Main[i].pos.controller.follow = yes
Main[i].pos.controller.allowupsidedown = yes
Main[i].pos.controller.axis = 0
Main[i].pos.controller.loop = yes
Node[i].pos.controller.path = $Spline_Main
Node[i].pos.controller.follow = yes
Node[i].pos.controller.allowupsidedown = yes
Node[i].pos.controller.axis = 0
Node[i].pos.controller.loop = yes
Look[i].pos.controller.path = $Spline_Look
Look[i].pos.controller.follow = yes
Look[i].pos.controller.allowupsidedown = yes
Look[i].pos.controller.axis = 0
Look[i].pos.controller.loop = yes
Main[i].rotation.controller = lookat_constraint()
Main[i].rotation.controller.pickupnode = Node[i]
Main[i].rotation.controller.lookat_vector_length = 6
Main[i].rotation.controller.target_axis = 1
Main[i].rotation.controller.upnode_axis = 0
Main[i].rotation.controller.upnode_world = no
Main[i].rotation.controller.StoUP_axis = 0
Main[i].rotation.controller.viewline_length_abs = yes
Main[i].rotation.controller.target = Look[i]
)
for i in 1 to ((c + 1) / 2 - 1) do
Main[i].pos.controller.percent = (Main[(c + 1) / 2].pos.controller.percent + ((c + 1) / 2 - i) * (s / l))
for i in ((c + 1) / 2 + 1) to c do
Main[i].pos.controller.percent = (Main[(c + 1) / 2].pos.controller.percent - (i - (c + 1) / 2) * (s / l))
for i in 1 to c do
(
Node[i].pos.controller.percent = Main[i].pos.controller.percent
Look[i].pos.controller.percent = Main[i].pos.controller.percent
)

--Link Train Cars to Train Dummies

--for i in 1 to c do
--(
--align $Car_0i to dummyi
--link $Car_0i to dummyi
--)

--Train Animation

global Hi = 157.9989 --Initial Height
global Hf = 34.9887 --Final Height
global Vi = 22 --Initial Velocity
global Vf = 66 --Final Velocity
global Xi = 17.3425 --Initial Path Percentage
global g = 32 --Acceleration Due to Gravity
global l = 4772.7065 --Path Length
global X = #() --X Value Array

for t in 1 to 10 do
X[t] = 0
for t in 11 to 1139 do
X[t] = ((t - 11)/1139) * Xi
for t in 1140 to 3600 do
X[t] = (((2 * g * (Hi - (at time t Car_05.pos.z)) + Vi ^ 2 - (2 * (g * (Hi - Hf) + .5 * (Vi ^ 2 - Vf ^ 2)) / (1 - Xi)) * (X[t-1] - Xi)) ^ (.5)) / (l / 3)) + (X[t-1])
animate on
(
for t in 1 to 4500 by 10 do
at time t Main[(c + 1) / 2)].pos.controller.percent = X[t]
)

I understand parts of it. Do you guys see places that need to be finished so that I can run it through Maxscript?

CGTalk Moderation
01-08-2007, 12:23 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.