aboutsummaryrefslogtreecommitdiffstats
path: root/bin/height2cyl.py
blob: 37eef4911033e8451cb0d26b597b71297f7fa792 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/env python3
import random
import math
import sys
from PIL import Image
#we're going to make triangles. lots of triangles.
#since the heightmap is in a square pattern
#we're going to have a point that is the average
#of between the 4 around it.
#subpixel[x,y] = pixel[x,y] pixel[x+1,y] pixel[x,y+1] pixel[x+1,y+1]
#we can do this first.
#then we draw 4 triangles that go around subpixel[x,y]
#triangle pixel[x,y]     pixel[x+1,y]   subpixel[x,y]
#triagnle pixel[x+1,y]   pixel[x+1,y+1] subpixel[x,y]
#triagnle pixel[x+1,y+1] pixel[x,y+1]   subpixel[x,y]
#triagnle pixel[x,y+1]   pixel[x,y]     subpixel[x,y]

width=32
height=16

im=Image.open(sys.argv[1]).convert('L').resize((width,height)) #load image as greyscale
#im=Image.open(sys.argv[1]).convert('L') #load image as greyscale
width=im.width
height=im.height
pixel_derp=im.load()
#print(dir(im))
#print(dir(im.getdata().getpixel(0,0)))
#quit()
#width=6
#height=6

def trianglize(x1,y1,x2,y2,xs,ys):
  x1%=width
  y1%=height
  x2%=width
  y2%=height
  xs%=width
  ys%=height

  yscale= 32 / height

  tx1=math.sin(x1 / (width / (2 * math.pi)) ) * (pixel[x1][y1] / (127 / math.pi))
  tz1=math.cos(x1 / (width / (2 * math.pi)) ) * (pixel[x1][y1] / (127 / math.pi))
  ty1=-((y1 * yscale) / 5) + 15

  tx2=math.sin(x2 / (width / (2 * math.pi)) ) * (pixel[x2][y2] / (127 / math.pi))
  tz2=math.cos(x2 / (width / (2 * math.pi)) ) * (pixel[x2][y2] / (127 / math.pi))
  ty2=-((y2 * yscale) / 5) + 15

#  xs=(xs * 2) + 1
  tx3=math.sin(xs / (width / (2 * math.pi)) ) * (subpixel[xs][ys] / (127 / math.pi))
  tz3=math.cos(xs / (width / (2 * math.pi)) ) * (subpixel[xs][ys] / (127 / math.pi))
  ty3=-(((ys * yscale) + 1) / 5) + 15
  print("test addshape 3 3 {} {} {}   {} {} {}   {} {} {}".format(tx1,ty1,tz1,tx2,ty2,tz2,tx3,ty3,tz3))


#width=16
#height=16
pixel=[[0]*height for i in range(width)]
subpixel=[[0]*height for i in range(width)]
## initialize for testing:
for y in range(0,height):
  for x in range(0,width):
#    pixel[x][y]=random.randint(1,255)
#    pixel[x][y]=im.tobytes()[y * width + x]
    pixel[x][y]=pixel_derp[x,y]
#    pixel[x][y]=y * 20
#subpixel=pixel
#im.show()

for y in range(0,height-1):
  for x in range(0,width):
    subpixel[x][y] = ( pixel[x][y] + pixel[(x+1)%width][y] + pixel[x][(y+1)%height] + pixel[(x+1)%width][(y+1)%height] ) / 4
    trianglize(x,y,     x+1,y,   x,y)
    trianglize(x+1,y,   x+1,y+1, x,y)
    trianglize(x+1,y+1, x,y+1,   x,y)
    trianglize(x,y+1,   x,y,     x,y)