Advertisement
billysback

3D drawing stuff

Jun 18th, 2013
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.73 KB | None | 0 0
  1.             local verts = {}
  2.             for i,vert in ipairs(buffer) do
  3.                     if vert.x > 0 and vert.x < w and vert.y > 0 and vert.y < h then
  4.                             --drawAtPoint(vert, verts)
  5.                             verts[vert.nov] = vert
  6.                     end
  7.             end
  8.            
  9.            local sqrs = {}
  10.            
  11.             for i=1,#model.faces do
  12.                 local canDraw = true
  13.                 --list of vert ids and a color as the last index
  14.                 local sqtab = model.faces[i]
  15.                 --converted table of true vert coords compared to vert ids
  16.                 local ntab = {}
  17.                 local avgDist = 0
  18.                 local avgi = 0
  19.                 for i=1,(#sqtab - 1) do
  20.                     --ID for vert
  21.                     local id = sqtab[i]
  22.                     if verts[id] ~= nil then
  23.                         ntab[i] = {verts[id].x, verts[id].y}
  24.                         avgDist = avgDist + verts[id].dist
  25.                         avgi = avgi + 1
  26.                     else
  27.                         canDraw = false
  28.                         --break
  29.                     end
  30.                 end
  31.                 local square = triapi.fillSquare(ntab[1], ntab[2], ntab[3], ntab[4])
  32.                
  33.                 local avgDist = avgDist/avgi
  34.                
  35.                 square.dist = avgDist
  36.                 square.col = sqtab[5]
  37.                
  38.                 if canDraw then sqrs[#sqrs + 1] = square end
  39.                 --triapi.drawShape(square, sqtab[5], colors.black, " ")
  40.             end
  41.            
  42.             local sqrs_dists = {}
  43.             while #sqrs > 0 do
  44.                 local maxDepth = 1
  45.                 for i=2,#sqrs do
  46.                         if sqrs[i].dist > sqrs[maxDepth].dist then maxDepth = i end
  47.                 end
  48.                 table.insert(sqrs_dists, sqrs[maxDepth])
  49.                 table.remove(sqrs, maxDepth)
  50.             end
  51.            
  52.             if #sqrs_dists > 3 then
  53.                 for i=(#sqrs_dists - 3),#sqrs_dists do
  54.                     local sqr = sqrs_dists[i]
  55.                     triapi.drawShape(sqr, sqr.col, colors.black, " ")
  56.                 end
  57.             else
  58.                 for i=1,#sqrs_dists do
  59.                     local sqr = sqrs_dists[i]
  60.                     triapi.drawShape(sqr, sqr.col, colors.black, " ")
  61.                 end
  62.             end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement