2012-08-25 26 views
0

我創建了以下腳本來生成「煙花」(術語鬆散地使用)作爲指導我的導師。它基於我必須使用的骨架腳本。Maxscript動畫「煙火」腳本動畫卡住

有微調控制某些參數,但是對於我的生活我無法弄清楚什麼是錯的!請幫幫我!!!

任務是通過腳本來創建動畫,一個球體上升,其中的臉部「爆炸」,並通過時間尺度向下改變方向。

(焰火上升,爆炸和碎片墜落地球)

我相信我已經寫是正確的,但是沒有動畫實際產生。儘管我盡了最大的努力和數月的努力。

我是新來的編碼,並沒有註冊任何編碼。我想要做的就是學習如何建模。不過,我的導師是我傳球的關鍵。

在這個時候,我準備好「瘋狂退出」,並且只是從我的礦井出去。任何幫助將不勝感激。

這是迄今爲止我已經寫劇本......

-- Empty varables to be called in or adjusted by spinners 

numOfSpheres = 0 --number of exploding spheres 
sphereRadius = 0 
creationBoxSize = 0 -- spawn radius in what box size? 
objs = #() -- objs created go to empty array! 
maxHeight = 0 
startTime = 0 



dropping = false --boolean flag to trigger the falling sphere stage 

animate on 
(
    for i = 1 to numOfSpheres by 1 do 
    (
     at time (startTime + 50.000) (meshop.bevelFaces objs[i] #{1..objs[i].numFaces} 0.0000001 0) 
     at time (startTime + 50.001) (meshop.bevelFaces objs[i] #{1..objs[i].numFaces} 0.0000001 0) 
     at time (startTime + 100) (meshop.bevelFaces objs[i] #{1..objs[i].numFaces} 100 0) 

     at time (startTime) (objs[i].pos = objs[i].pos) 

     local height = maxHeight 

     for t = 5 to 100 by 5 do 
     (
      height = height - 2 
      at time (startTime + t) (objs[i].pos = objs[i].pos + [ 0, 0, height]) 
     ) 
    ) 
) 

rollout FireWorks "FireWorks" 
(-- button ui code starts here 
    label lbl1 "By Luke Fahy" style_sunkenedge:true width:67 height:17 
    spinner count "FireWorks: " type:#integer range:[1,100,10] -- 1 to a 100: default value of 10: integer = whole number not fraction! 
    spinner size "Size: " type:#float range:[0.1,30,1] 
    spinner sPlane "Spawn Plane: " type:#integer range:[1,200,30] 
    spinner maxHeightSpinner "Max Height: " type:#float range:[1,100,14] 
    spinner startTimeSpinner "Start Time: " type:#float range:[1,100,1] 
    button create "Create Fireworks" 

    on create pressed do -- Event handler code start 
    (
     numOfSpheres = count.value 
     sphereRadius = size.value 
     creationBoxSize = sPlane.value 
     maxHeight = maxHeightSpinner.value 
     startTime = startTimeSpinner.value 

     dropping = false 

     --create spheres 
     for i = 1 to numOfSpheres by 1 do 
     (
      objs[i] = sphere radius:sphereRadius 
      local r = random 0 255 
      local g = random 0 255 
      local b = random 0 255 
      objs[i] .wirecolor = (color r g b) 
      objs[i] .pos = [random creationBoxSize -creationBoxSize, random creationBoxSize -creationBoxSize, 0] -- random possative and negative x/y values to create spawn box. 

      convertToMesh objs[i] 
      meshOp.explodeAllFaces objs[i] 0 
     ) 
    ) 
) -- button ui code end 

createDialog FireWorks width:200 

而且,我的意見和縮進任何建議,將不勝感激。 (格式化似乎已經扔出去後切和過去的窗口,我的道歉,我新來這個論壇的文件將作爲附件。)

親切的問候, ShineSmith :)

附加信息:

此外,這是我的導師給我的基礎工作的腳本。

(這裏需要對象數組或單一對象的名字,其他人使用的單球的$名稱和它的實例複製多個「煙花」)

convertToMesh $ 

meshop.explodeAllFaces $ 0 

update $ 

v = 20 

animate on 
(
    at time (sliderTime+50.000) (meshop.bevelFaces $ #{1..$.numFaces} 0.0000001 0) 
    at time (sliderTime+50.001) (meshop.bevelFaces $ #{1..$.numFaces} 0.0000001 0) 
    at time (sliderTime+100) (meshop.bevelFaces $ #{1..$.numFaces} 100 0) 

    at time (sliderTime) ($.pos = $.pos) 
    for t = 5 to 100 by 5 do 
    (
     v = v - 2 
     at time (sliderTime+t) ($.pos = $.pos + [0,0,v]) 
    ) 
) 

回答

0

您正在運行的動畫在任何領域創建之前,甚至在您創建Rollout之前的代碼。將animate on (...)塊移動到您的on create處理程序中,或將其作爲單獨的函數。

0

移動antimation碼成一個函數:

fn doanimate = 
(
    animate on 
    (
     for i = 1 to numOfSpheres by 1 do 
     (
      at time (startTime + 50.000) (meshop.bevelFaces objs[i] #{1..objs[i].numFaces} 0.0000001 0) 
      at time (startTime + 50.001) (meshop.bevelFaces objs[i] #{1..objs[i].numFaces} 0.0000001 0) 
      at time (startTime + 100) (meshop.bevelFaces objs[i] #{1..objs[i].numFaces} 100 0) 

      at time (startTime) (objs[i].pos = objs[i].pos) 

      local height = maxHeight 

      for t = 5 to 100 by 5 do 
      (
       height = height - 2 
       at time (startTime + t) (objs[i].pos = objs[i].pos + [ 0, 0, height]) 
      ) 
     ) 
    ) 
) 

呼叫末功能,你按下按鈕:

on create pressed do -- Event handler code start 
    (
     numOfSpheres = count.value 
     sphereRadius = size.value 
     creationBoxSize = sPlane.value 
     maxHeight = maxHeightSpinner.value 
     startTime = startTimeSpinner.value 

     dropping = false 

     --create spheres 
     for i = 1 to numOfSpheres by 1 do 
     (
      objs[i] = sphere radius:sphereRadius 
      local r = random 0 255 
      local g = random 0 255 
      local b = random 0 255 
      objs[i] .wirecolor = (color r g b) 
      objs[i] .pos = [random creationBoxSize -creationBoxSize, random creationBoxSize -creationBoxSize, 0] -- random possative and negative x/y values to create spawn box. 

      convertToMesh objs[i] 
      meshOp.explodeAllFaces objs[i] 0 
     ) 
     doanimate() 
    ) 

完整的劇本,現在應該是這樣的:

-- Empty varables to be called in or adjusted by spinners 

numOfSpheres = 0 --number of exploding spheres 
sphereRadius = 0 
creationBoxSize = 0 -- spawn radius in what box size? 
objs = #() -- objs created go to empty array! 
maxHeight = 0 
startTime = 0 



dropping = false --boolean flag to trigger the falling sphere stage 
fn doanimate = 
(
    animate on 
    (
     for i = 1 to numOfSpheres by 1 do 
     (
      at time (startTime + 50.000) (meshop.bevelFaces objs[i] #{1..objs[i].numFaces} 0.0000001 0) 
      at time (startTime + 50.001) (meshop.bevelFaces objs[i] #{1..objs[i].numFaces} 0.0000001 0) 
      at time (startTime + 100) (meshop.bevelFaces objs[i] #{1..objs[i].numFaces} 100 0) 

      at time (startTime) (objs[i].pos = objs[i].pos) 

      local height = maxHeight 

      for t = 5 to 100 by 5 do 
      (
       height = height - 2 
       at time (startTime + t) (objs[i].pos = objs[i].pos + [ 0, 0, height]) 
      ) 
     ) 
    ) 
) 
rollout FireWorks "FireWorks" 
(-- button ui code starts here 
    label lbl1 "By Luke Fahy" style_sunkenedge:true width:67 height:17 
    spinner count "FireWorks: " type:#integer range:[1,100,10] -- 1 to a 100: default value of 10: integer = whole number not fraction! 
    spinner size "Size: " type:#float range:[0.1,30,1] 
    spinner sPlane "Spawn Plane: " type:#integer range:[1,200,30] 
    spinner maxHeightSpinner "Max Height: " type:#float range:[1,100,14] 
    spinner startTimeSpinner "Start Time: " type:#float range:[1,100,1] 
    button create "Create Fireworks" 

    on create pressed do -- Event handler code start 
    (
     numOfSpheres = count.value 
     sphereRadius = size.value 
     creationBoxSize = sPlane.value 
     maxHeight = maxHeightSpinner.value 
     startTime = startTimeSpinner.value 

     dropping = false 

     --create spheres 
     for i = 1 to numOfSpheres by 1 do 
     (
      objs[i] = sphere radius:sphereRadius 
      local r = random 0 255 
      local g = random 0 255 
      local b = random 0 255 
      objs[i] .wirecolor = (color r g b) 
      objs[i] .pos = [random creationBoxSize -creationBoxSize, random creationBoxSize -creationBoxSize, 0] -- random possative and negative x/y values to create spawn box. 

      convertToMesh objs[i] 
      meshOp.explodeAllFaces objs[i] 0 
     ) 
     doanimate() 
    ) 
) -- button ui code end 

createDialog FireWorks width:200