SingleSurface Cubes - Anordnung stimmt nicht

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

faeX

Betreff: SingleSurface Cubes - Anordnung stimmt nicht

BeitragFr, Jun 05, 2009 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe hier einen Code für SingleSurface Cubes. Allerdings funktioniert da was mit dem Rendern nicht ganz:

Code: [AUSKLAPPEN]
; CubeRunner Reloaded

Graphics3D 800, 600, 32, 2
SetBuffer BackBuffer()

Global Camera = CreateCamera()
PositionEntity Camera, 0, 0, -5

Global CubeMesh = CreateMesh()
Global CubeSurface = CreateSurface(CubeMesh)

EntityFX CubeMesh, 34

CreateMap(10, 10, 500, 1)

; Für die frameunabhängige Programmierung
Global LastUpdate%, Difference%
Global MS%
Global FElapsed#, F%
Global TimeShift# = 1
LastUpdate = MilliSecs()

While Not KeyHit(1)
   
   UpdateGame()
   RenderWorld
   Flip
   
Wend

Function UpdateGame()
   
   ; Zeitrechnungen
   Difference = MilliSecs() - LastUpdate
   LastUpdate = MilliSecs()
   FElapsed = FElapsed + Difference * TimeShift
   MS = MS + (Difference * TimeShift)
   F = FElapsed
   FElapsed = FElapsed - F
   
   MoveEntity Camera, F*.01*(KeyDown(205)-KeyDown(203)), F*.01*(KeyDown(200)-KeyDown(208)), F*(.005 + KeyDown(57)*.01)
   
End Function

Function CreateCubeFast(X#, Y#, Z#, ScaleX#, ScaleY#, ScaleZ#)
   
   V1% = AddVertex(CubeSurface, X - ScaleX, Y + ScaleY, Z - ScaleZ)
   V2% = AddVertex(CubeSurface, X + ScaleX, Y + ScaleY, Z - ScaleZ)
   V3% = AddVertex(CubeSurface, X + ScaleX, Y - ScaleY, Z - ScaleZ)
   V4% = AddVertex(CubeSurface, X - ScaleX, Y - ScaleY, Z - ScaleZ)
   V5% = AddVertex(CubeSurface, X - ScaleX, Y + ScaleY, Z + ScaleZ)
   V6% = AddVertex(CubeSurface, X + ScaleX, Y + ScaleY, Z + ScaleZ)
   V7% = AddVertex(CubeSurface, X + ScaleX, Y - ScaleY, Z + ScaleZ)
   V8% = AddVertex(CubeSurface, X - ScaleX, Y - ScaleY, Z + ScaleZ)
   
   VertexColor CubeSurface, V1, Rand(0, 255), Rand(0, 255), Rand(0, 255)
   VertexColor CubeSurface, V2, Rand(0, 255), Rand(0, 255), Rand(0, 255)
   VertexColor CubeSurface, V3, Rand(0, 255), Rand(0, 255), Rand(0, 255)
   VertexColor CubeSurface, V4, Rand(0, 255), Rand(0, 255), Rand(0, 255)
   VertexColor CubeSurface, V5, Rand(0, 255), Rand(0, 255), Rand(0, 255)
   VertexColor CubeSurface, V6, Rand(0, 255), Rand(0, 255), Rand(0, 255)
   VertexColor CubeSurface, V7, Rand(0, 255), Rand(0, 255), Rand(0, 255)
   VertexColor CubeSurface, V8, Rand(0, 255), Rand(0, 255), Rand(0, 255)
   
   AddTriangle(CubeSurface, V1, V2, V3)
   AddTriangle(CubeSurface, V1, V3, V4)
   AddTriangle(CubeSurface, V2, V7, V3)
   AddTriangle(CubeSurface, V6, V7, V2)
   AddTriangle(CubeSurface, V1, V4, V8)
   AddTriangle(CubeSurface, V5, V1, V8)
   AddTriangle(CubeSurface, V5, V2, V1)
   AddTriangle(CubeSurface, V5, V6, V2)
   AddTriangle(CubeSurface, V4, V3, V7)
   AddTriangle(CubeSurface, V7, V8, V4)
   
End Function

Function CreateMap(Width%, Height%, Length%, Percent#)
   
   For X% = -Width To Width
      
      For Y% = -Height To Height
         
         For Z% = 0 To Length
            
            If Rnd(100) < Percent Then
               
               CreateCubeFast (X, Y, Z, 1, 1, 1)
               
            EndIf
            
         Next
         
      Next
      
   Next
   
End Function


Kurze Erläuterung: Pfeiltasten steuern die Camera. Mit Leertaste bewegt sie sich noch schneller vorwärts. Es ist zwingend, dass die Cubes in SingleSurface sind, da immer so viele im Bild sein werden.

Was ist da mit der Anordnung? Lösung wäre der Z-Buffer, aber der bleibt einem in B3D leider verwehrt.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jun 05, 2009 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
EntityFX CubeMesh,2

machen
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

faeX

BeitragFr, Jun 05, 2009 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Funktioniert einwandfrei Wink

EDIT: Na klar, durch das Aktivieren von Alpha werden die Cubes in einer anderen Reihenfolge gerendert Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group