Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- The below only works for meshes on Roblox.
- ----------------------------------------------------------
- 1) Find the mesh you want,
- 2) Copy the meshId and put it into a script's LinkedSource (Yes really!).
- 3) Then look in the scripts source (double-click).
- 4) Now copy all those numbers and brackets at the bottom of the script's source.
- 5) Then reaplce the ones in my meshizer with the vertices you copied.
- -- MrNicNac
- ]]
- local MeshVertices = ""
- local Size = 15
- TB = {}
- tmodel = Instance.new("Model", workspace)
- for vertex in string.gmatch(MeshVertices, "%[.-%]",1,true) do
- local v3, n = vertex:gsub("%[",""):gsub("%]","")
- table.insert(TB, loadstring("return Vector3.new("..v3..")")())
- end
- local ply = Instance.new("WedgePart")
- ply.formFactor = "Custom"
- ply.TopSurface = 0
- ply.BottomSurface = 0
- ply.Anchored = true
- ply.Size = Vector3.new(0.2,7,7)
- local msh = Instance.new("SpecialMesh")
- msh.MeshType = 2
- msh.Parent = ply
- function ParaD(a, b, c)
- local dot = (b-a).x*(c-a).x + (b-a).y*(c-a).y + (b-a).z*(c-a).z
- return dot / (a-b).magnitude
- end
- function PerpD(a, b, c)
- local par = ParaD(a, b, c)
- return math.sqrt((c-a).magnitude^2 - par^2)
- end
- local _P0, _P1 = nil, nil
- function DrawTriangle(vec1, vec2, vec3)
- local A, B, C = nil, nil, nil
- local p0, p1 = ply:clone(), ply:clone()
- _P0 = p0
- _P1 = p1
- local s1 = (vec1 - vec2).magnitude
- s2 = (vec2 - vec3).magnitude
- s3 = (vec3 - vec1).magnitude
- local smax = math.max(s1, s2, s3)
- if (vec1 - vec2).magnitude == smax then
- A = vec1
- B = vec2
- C = vec3
- elseif (vec2 - vec3).magnitude == smax then
- A = vec2
- B = vec3
- C = vec1
- elseif (vec3 - vec1).magnitude == smax then
- A = vec3
- B = vec1
- C = vec2
- end
- local perp = PerpD(A, B, C)
- local para = ParaD(A, B, C)
- local dif_para = (A-B).magnitude - para
- local ambig = false
- p0.Mesh.Scale = Vector3.new(0.1, 1,1)
- p0.Size = Vector3.new(.2, perp, para)
- p0.CFrame = CFrame.new(B, A)
- local Top_Look = (p0.CFrame * CFrame.fromEulerAnglesXYZ(math.pi/2, 0, 0)).lookVector
- local Mid_Point = A + CFrame.new(A, B).lookVector * para
- local Needed_Look = CFrame.new(Mid_Point, C).lookVector
- local dot = Top_Look.x*Needed_Look.x + Top_Look.y*Needed_Look.y + Top_Look.z*Needed_Look.z
- p0.CFrame = p0.CFrame * CFrame.fromEulerAnglesXYZ(0, 0, math.acos(dot))
- if ((p0.CFrame * CFrame.fromEulerAnglesXYZ(math.pi/2, 0, 0)).lookVector - Needed_Look).magnitude > 0.01 then
- p0.CFrame = p0.CFrame * CFrame.fromEulerAnglesXYZ(0, 0, -2*math.acos(dot))
- ambig = true
- end
- p0.CFrame = p0.CFrame * CFrame.new(0, perp/2, -(dif_para + para/2))
- p0.Parent = tmodel
- p0.Name = "P0"
- p1.Mesh.Scale = Vector3.new(0, 1,1)
- p1.Size = Vector3.new(.2, perp, dif_para)
- p1.CFrame = CFrame.new(B, A) * CFrame.fromEulerAnglesXYZ(0, 0, math.acos(dot)) * CFrame.fromEulerAnglesXYZ(0, math.pi, 0)
- if ((p1.CFrame * CFrame.fromEulerAnglesXYZ(math.pi/2, 0, 0)).lookVector - Needed_Look).magnitude > 0.01 then
- p1.CFrame = p1.CFrame * CFrame.fromEulerAnglesXYZ(0, 0, 2*math.acos(dot))
- ambig = true
- end
- p1.CFrame = p1.CFrame * CFrame.new(0, perp/2, dif_para/2)
- p1.Parent = tmodel
- p1.Name = "P1"
- end
- local cIndex = 1
- while TB[cIndex] do
- if TB[cIndex] and TB[cIndex+3] and TB[cIndex+6] then
- DrawTriangle(TB[cIndex]*Size, TB[cIndex + 3]*Size, TB[cIndex + 6]*Size)
- end
- cIndex = cIndex + 9
- if math.random(1,5) == 1 then
- wait()
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment