terrain.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import math
  2. NUM_VERTS_X = 30
  3. NUM_VERTS_Y = 30
  4. totalVerts = NUM_VERTS_X*NUM_VERTS_Y
  5. totalTriangles = 2*(NUM_VERTS_X-1)*(NUM_VERTS_Y-1)
  6. offset = -50.0
  7. TRIANGLE_SIZE = 1.
  8. waveheight=0.1
  9. gGroundVertices = [None] * totalVerts*3
  10. gGroundIndices = [None] * totalTriangles*3
  11. i=0
  12. for i in range (NUM_VERTS_X):
  13. for j in range (NUM_VERTS_Y):
  14. gGroundVertices[(i+j*NUM_VERTS_X)*3+0] = (i-NUM_VERTS_X*0.5)*TRIANGLE_SIZE
  15. gGroundVertices[(i+j*NUM_VERTS_X)*3+1] = (j-NUM_VERTS_Y*0.5)*TRIANGLE_SIZE
  16. gGroundVertices[(i+j*NUM_VERTS_X)*3+2] = waveheight*math.sin(float(i))*math.cos(float(j)+offset)
  17. index=0
  18. for i in range (NUM_VERTS_X-1):
  19. for j in range (NUM_VERTS_Y-1):
  20. gGroundIndices[index] = 1+j*NUM_VERTS_X+i
  21. index+=1
  22. gGroundIndices[index] = 1+j*NUM_VERTS_X+i+1
  23. index+=1
  24. gGroundIndices[index] = 1+(j+1)*NUM_VERTS_X+i+1
  25. index+=1
  26. gGroundIndices[index] = 1+j*NUM_VERTS_X+i
  27. index+=1
  28. gGroundIndices[index] = 1+(j+1)*NUM_VERTS_X+i+1
  29. index+=1
  30. gGroundIndices[index] = 1+(j+1)*NUM_VERTS_X+i
  31. index+=1
  32. #print(gGroundVertices)
  33. #print(gGroundIndices)
  34. print("o Terrain")
  35. for i in range (totalVerts):
  36. print("v "),
  37. print(gGroundVertices[i*3+0]),
  38. print(" "),
  39. print(gGroundVertices[i*3+1]),
  40. print(" "),
  41. print(gGroundVertices[i*3+2])
  42. for i in range (totalTriangles):
  43. print("f "),
  44. print(gGroundIndices[i*3+0]),
  45. print(" "),
  46. print(gGroundIndices[i*3+1]),
  47. print(" "),
  48. print(gGroundIndices[i*3+2]),
  49. print(" ")