Sfoglia il codice sorgente

added new screenshot, also update code

master
FelixBrendel 8 anni fa
parent
commit
b1405f44ac
4 ha cambiato i file con 19 aggiunte e 14 eliminazioni
  1. +18
    -14
      genSphere.py
  2. +1
    -0
      readme.md
  3. BIN
     
  4. BIN
     

+ 18
- 14
genSphere.py Vedi File

@@ -86,10 +86,14 @@ def subdivide(verts, faces, iteration):
vec[2] * desiredLength / vecLen_now
)

def getCenterPoint(p1, p2):
def getCenterPoint(p1, p2, q1):
vecLen_p1 = vecLen(verts[p1])
vecLen_p2 = vecLen(verts[p2])
vecLen_new = (vecLen_p1 + vecLen_p2)*.5

vecLen_q1 = vecLen(verts[q1])

vecLen_new = (vecLen_p1 + vecLen_p2) + (3**.5)*vecLen_q1
vecLen_new /= 2 + (3**.5)
heightDelta = random.gauss(0,.01*(.6**iteration))

return scaleVecToLen ((
@@ -98,14 +102,14 @@ def subdivide(verts, faces, iteration):
(verts[p1][2] + verts[p2][2]) * .5
), vecLen_new + heightDelta)

def divideEdge(edge):
def divideEdge(edge, q1):
try:
normalizedEdge = list(edge)
normalizedEdge.sort()
normalizedEdge = tuple(normalizedEdge)
return dividedEdges[tuple(normalizedEdge)]
except Exception as e:
newVert = getCenterPoint(*edge)
newVert = getCenterPoint(*edge, q1)
newIndex = len(verts)
normalizedEdge = list(edge)
normalizedEdge.sort()
@@ -121,26 +125,26 @@ def subdivide(verts, faces, iteration):

newFaces.append((
face[0],
divideEdge(edge1),
divideEdge(edge3)
divideEdge(edge1, face[2]),
divideEdge(edge3, face[1])
))

newFaces.append((
face[1],
divideEdge(edge2),
divideEdge(edge1)
divideEdge(edge2, face[0]),
divideEdge(edge1, face[2])
))

newFaces.append((
face[2],
divideEdge(edge3),
divideEdge(edge2)
divideEdge(edge3, face[1]),
divideEdge(edge2, face[0])
))

newFaces.append((
divideEdge(edge1),
divideEdge(edge2),
divideEdge(edge3)
divideEdge(edge1, face[2]),
divideEdge(edge2, face[0]),
divideEdge(edge3, face[1])
))


@@ -148,7 +152,7 @@ def subdivide(verts, faces, iteration):


verts, faces = generateIcoSphere()
for i in range(10):
for i in range(6):
verts, faces = subdivide(verts, faces, i+1)




+ 1
- 0
readme.md Vedi File

@@ -1,5 +1,6 @@
# Procedurally generate planets

![planet](screenshots/planet.png)

The curent version works with a modiefied midpoint-displacement method on a sphere.
It can generate different levels of detail on demand.


BIN
Vedi File


BIN
Vedi File


Caricamento…
Annulla
Salva