Skip to main content
gamedev.net
🔒 Locked

Sphere Generation

Started by REF_Cracker Mar 6, 2000 at 5:17 PM 0 replies 500+ views
Original Post
REF_Cracker
REF_Cracker
Does anyone know how to generate a spheres verticies and faces with a LOD? Or have a good link on doing so? Thanks!
Check out my project @ www.exitearth.com
nes8bit
nes8bit
It is very interesting how you asked my exact question in an older post. Hope you understand Visual Basic.

If you don''t know Visual Basic, here is the function for a sphere coordinates from two angles. AA is X and AB is Y.
.X = Radius * Cos(AA) * Cos(AB)
.Y = Radius * Sin(AB)
.Z = Radius * Sin(AA) * Cos(AB)

Sub CreateSkyGod(Radius As Single)
Dim AngleA As Single
Dim AngleB As Single
Dim CurVert As Long
Dim CurTex As Single
Dim CurrentTexVert As Single
Dim TexVertInc As Single
Const StepLoop As Single = 30
ReDim DomeVerts((360 / StepLoop) * (360 / StepLoop) * 6)
TexVertInc = StepLoop / (180 - StepLoop)
For AngleB = 0 To 180 - StepLoop Step StepLoop
For AngleA = 0 To 360 - StepLoop Step StepLoop
DomeVerts(CurVert) = Circle3D(Radius, AngleA, AngleB + StepLoop)
DomeVerts(CurVert + 1) = Circle3D(Radius, AngleA + StepLoop, AngleB + StepLoop)
DomeVerts(CurVert + 2) = Circle3D(Radius, AngleA + StepLoop, AngleB)

DomeVerts(CurVert + 3) = Circle3D(Radius, AngleA, AngleB + StepLoop)
DomeVerts(CurVert + 4) = Circle3D(Radius, AngleA + StepLoop, AngleB)
DomeVerts(CurVert + 5) = Circle3D(Radius, AngleA, AngleB)

''Horizontal
''DomeVerts(CurVert + 0).tu = 0
''DomeVerts(CurVert + 1).tu = 1
''DomeVerts(CurVert + 2).tu = 1
''DomeVerts(CurVert + 3).tu = 0
''DomeVerts(CurVert + 4).tu = 1
''DomeVerts(CurVert + 5).tu = 0

''Vertical
''DomeVerts(CurVert + 0).tv = 1
''DomeVerts(CurVert + 1).tv = 1
''DomeVerts(CurVert + 2).tv = 0
''DomeVerts(CurVert + 3).tv = 1
''DomeVerts(CurVert + 4).tv = 0
''DomeVerts(CurVert + 5).tv = 0

DomeVerts(CurVert + 0).tu = (AngleA + StepLoop) / (360)
DomeVerts(CurVert + 1).tu = (AngleA) / (360)
DomeVerts(CurVert + 2).tu = (AngleA) / (360)
DomeVerts(CurVert + 3).tu = (AngleA + StepLoop) / (360)
DomeVerts(CurVert + 4).tu = (AngleA) / (360)
DomeVerts(CurVert + 5).tu = (AngleA + StepLoop) / (360)

DomeVerts(CurVert + 0).tv = CurrentTexVert + TexVertInc
DomeVerts(CurVert + 1).tv = CurrentTexVert + TexVertInc
DomeVerts(CurVert + 2).tv = CurrentTexVert
DomeVerts(CurVert + 3).tv = CurrentTexVert + TexVertInc
DomeVerts(CurVert + 4).tv = CurrentTexVert
DomeVerts(CurVert + 5).tv = CurrentTexVert

CurVert = CurVert + 6
Next
CurrentTexVert = CurrentTexVert + TexVertInc
Next
DomeVertCount = UBound(DomeVerts)
End Sub

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.