added new screenshot, also update code

This commit is contained in:
FelixBrendel
2018-01-14 23:47:47 +01:00
parent 2e63190d35
commit b1405f44ac
4 changed files with 19 additions and 14 deletions
+18 -14
View File
@@ -86,10 +86,14 @@ def subdivide(verts, faces, iteration):
vec[2] * desiredLength / vecLen_now vec[2] * desiredLength / vecLen_now
) )
def getCenterPoint(p1, p2): def getCenterPoint(p1, p2, q1):
vecLen_p1 = vecLen(verts[p1]) vecLen_p1 = vecLen(verts[p1])
vecLen_p2 = vecLen(verts[p2]) 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)) heightDelta = random.gauss(0,.01*(.6**iteration))
return scaleVecToLen (( return scaleVecToLen ((
@@ -98,14 +102,14 @@ def subdivide(verts, faces, iteration):
(verts[p1][2] + verts[p2][2]) * .5 (verts[p1][2] + verts[p2][2]) * .5
), vecLen_new + heightDelta) ), vecLen_new + heightDelta)
def divideEdge(edge): def divideEdge(edge, q1):
try: try:
normalizedEdge = list(edge) normalizedEdge = list(edge)
normalizedEdge.sort() normalizedEdge.sort()
normalizedEdge = tuple(normalizedEdge) normalizedEdge = tuple(normalizedEdge)
return dividedEdges[tuple(normalizedEdge)] return dividedEdges[tuple(normalizedEdge)]
except Exception as e: except Exception as e:
newVert = getCenterPoint(*edge) newVert = getCenterPoint(*edge, q1)
newIndex = len(verts) newIndex = len(verts)
normalizedEdge = list(edge) normalizedEdge = list(edge)
normalizedEdge.sort() normalizedEdge.sort()
@@ -121,26 +125,26 @@ def subdivide(verts, faces, iteration):
newFaces.append(( newFaces.append((
face[0], face[0],
divideEdge(edge1), divideEdge(edge1, face[2]),
divideEdge(edge3) divideEdge(edge3, face[1])
)) ))
newFaces.append(( newFaces.append((
face[1], face[1],
divideEdge(edge2), divideEdge(edge2, face[0]),
divideEdge(edge1) divideEdge(edge1, face[2])
)) ))
newFaces.append(( newFaces.append((
face[2], face[2],
divideEdge(edge3), divideEdge(edge3, face[1]),
divideEdge(edge2) divideEdge(edge2, face[0])
)) ))
newFaces.append(( newFaces.append((
divideEdge(edge1), divideEdge(edge1, face[2]),
divideEdge(edge2), divideEdge(edge2, face[0]),
divideEdge(edge3) divideEdge(edge3, face[1])
)) ))
@@ -148,7 +152,7 @@ def subdivide(verts, faces, iteration):
verts, faces = generateIcoSphere() verts, faces = generateIcoSphere()
for i in range(10): for i in range(6):
verts, faces = subdivide(verts, faces, i+1) verts, faces = subdivide(verts, faces, i+1)
+1
View File
@@ -1,5 +1,6 @@
# Procedurally generate planets # Procedurally generate planets
![planet](screenshots/planet.png)
The curent version works with a modiefied midpoint-displacement method on a sphere. The curent version works with a modiefied midpoint-displacement method on a sphere.
It can generate different levels of detail on demand. It can generate different levels of detail on demand.
Binary file not shown.

After

Width:  |  Height:  |  Size: 926 KiB

BIN
View File
Binary file not shown.