Advertisement
jordan83221

3D multiple Bezier

Sep 29th, 2015
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.34 KB | None | 0 0
  1. script.Name="eungorb"
  2. color="Really black" -- Feel free to change the color to whatever you'd like.
  3. local pointsz={}
  4. local function newPoint(cframe)
  5.     table.insert(pointsz,cframe)
  6. end
  7. for i=1,100000 do
  8.     local x=math.random(-50,50)
  9.     local y=math.random(2,50)
  10.     local z=math.random(-50,50)
  11.     newPoint(CFrame.new(x,y,z))
  12. end
  13. local t=0
  14. local leader=Instance.new("Part",workspace)
  15. leader.Anchored=true
  16. leader.Material=Enum.Material.Neon
  17. leader.BrickColor=BrickColor.new(color)
  18. leader.Size=Vector3.new(2,2,2)
  19. leader.Shape="Ball"
  20. local function quadCurve(p0,p1,p2,t)
  21.     if t<=1 then
  22.         local part=Instance.new("Part",workspace)
  23.         part.Anchored=true
  24.         part.Material=Enum.Material.Neon
  25.         part.BrickColor=BrickColor.new(color)
  26.         part.Size=Vector3.new(0.5,0.5,0.5)
  27.         part.Shape="Block"
  28.         part.Transparency=0.5
  29.         local box=Instance.new("SelectionBox",part)
  30.         box.Adornee=part
  31.         box.Color3=Color3.new(0,255,0)
  32.         box.LineThickness=0.01
  33.         local pFinalX=math.pow(1-t,2)*p0.x+(1-t)*2*t*p1.x+t*t*p2.x;
  34.         local pFinalY=math.pow(1-t,2)*p0.y+(1-t)*2*t*p1.y+t*t*p2.y;
  35.         local pFinalZ=math.pow(1-t,2)*p0.z+(1-t)*2*t*p1.z+t*t*p2.z;
  36.         leader.CFrame=CFrame.new(pFinalX,pFinalY,pFinalZ)
  37.         part.CFrame=CFrame.new(pFinalX,pFinalY,pFinalZ)
  38.         coroutine.resume(coroutine.create(function()
  39.             wait(0.05)
  40.             part.CFrame=CFrame.new(part.Position, Vector3.new(leader.CFrame.X,leader.CFrame.Y,leader.CFrame.Z))
  41.         end))
  42.         coroutine.resume(coroutine.create(function()
  43.             wait(0.15)
  44.             for i=0.5,1,0.01 do wait(0.01)
  45.                 part.Transparency=i
  46.             end
  47.             part:Destroy()
  48.         end))
  49.     end
  50. end
  51. local function multiCurve(beginning,points)
  52.     local p0z,p1z,p2z,midx,midy,midz,part
  53.     p0z=beginning
  54.     for i=1,#points-2 do
  55.         p1z = points[i+1];
  56.         p2z = points[i+2];
  57.         midx=(p1z.x+p2z.x)/2;
  58.         midy=(p1z.y+p2z.y)/2;
  59.         midz=(p1z.z+p2z.z)/2;
  60.         if p0z==beginning then
  61.             p1z = points[i+1];
  62.             p2z = points[i+2];
  63.             midx=(p1z.x+p2z.x)/2;
  64.             midy=(p1z.y+p2z.y)/2;
  65.             midz=(p1z.z+p2z.z)/2;
  66.             part=CFrame.new(midx,midy,midz)
  67.             while wait() do
  68.                 if t<=1 then
  69.                     quadCurve(p0z,p1z,part,t)
  70.                     t=t+0.03
  71.                 else
  72.                     break
  73.                 end
  74.             end
  75.             p0z=part
  76.         else
  77.             part=CFrame.new(midx,midy,midz)
  78.             while wait() do
  79.                 if t<=1 then
  80.                     quadCurve(p0z,p1z,part,t)
  81.                     t=t+0.03
  82.                 else
  83.                     p0z=part
  84.                     break
  85.                 end
  86.             end
  87.         end
  88.         t=0
  89.     end
  90. end
  91.  
  92. multiCurve(pointsz[1],pointsz)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement