Singlesurface - geht nicht

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ToeB

Betreff: Singlesurface - geht nicht

BeitragSa, Okt 18, 2008 13:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich wollte mir eine "Schnee"-Engine basteln mit SingleSurface. Das klappt auch alles, bis auf das, das die schnee flocken nicht angezeigt werden (Nur das Plot von CameraProject)

Was mache ich falsch ?

Code: [AUSKLAPPEN]
Graphics3D 800,600,16,1
SetBuffer BackBuffer()

Global CAM = CreateCamera()
CameraRange CAM,0.1,1000
PositionEntity CAM,0,1,0

Global SnowMesh = CreateMesh(CAM)
Global SnowSurf = CreateSurface(SnowMesh)
EntityFX(SnowMesh,3)
EntityColor SnowMesh,255,0,0
Global SnowText = CreateSnowTex()
EntityTexture SnowMesh,SnowText
Const MaxSnow = 10000
Const XSnowSize = 10
Const YSnowSize = 5
Const ZSnowSize = 10
Dim Snow#(MaxSnow,6)

;CameraClsColor CAM,0,100,200

Global plane = CreatePlane()
   PositionEntity plane,0,-10,0



Repeat
   TurnEntity CAM,MouseYSpeed()/3,0,0
   TurnEntity CAM,0,-MouseXSpeed()/3,0,1
   MoveMouse 400,300
   If KeyDown(57) Then CreateSnow()
   UpdateSnow()
   UpdateWorld()
   RenderWorld()
   Text 1,1,"Schnee gesammt : "+CountTriangles(SnowSurf)+" | "+CountSnow()
   For i = 0 To MaxSnow
      If snow(i,0) = 1
         CameraProject(CAM,snow(i,1),snow(i,2),snow(i,3))
         Plot ProjectedX(),ProjectedY()
      EndIf
   Next
   Flip
Until KeyHit(1)
End



Function CreateSnow(anz=1)
   For i = 1 To anz
      For sn = 0 To MaxSnow
         If Snow(sn,0) = 0 akt = sn : Exit
      Next
      Snow(akt,0) = 1 ;ON
      Snow(akt,1) = Rand(-XSnowSize,XSnowSize) ; X
      Snow(akt,2) = YSnowSize ; Y
      Snow(akt,3) = Rand(-ZSnowSize,ZSnowSize)      ; Z
      Snow(akt,4) = Rnd(-0.1,-0.01) ;SY
      Snow(akt,5) = Rand(0,0) ;Bild
      Snow(akt,6) = Rnd(0.101,0.501) ; Scale
      Next
End Function

Function CountSnow()
   Local SnowAnz = 0
   For i = 0 To MaxSnow
      If Snow(i,0) = 1 SnowAnz = SnowAnz + 1
   Next
   Return SnowAnz
End Function 

Function CreateSnowTex()
   Local SnowTex = CreateTexture(64,64)
   Local TexBuff = TextureBuffer(SnowTex)
   Color 255,255,255
   LockBuffer TexBuff
   For i = 0 To 32 Step 1
      For j = 0 To 360
         WritePixel(32-Cos(j)*i,32-Sin(j)*i,$FFFFFFFF,TexBuff)
      Next
   Next
   UnlockBuffer TexBuff
   Return SnowTex
End Function

Function UpdateSnow()
   ClearSurface SnowSurf
   For i = 0 To MaxSnow
      If Snow(i,0) = 1
         XX# = Snow(i,1)
         YY# = Snow(i,2)
         ZZ# = Snow(i,3)
         SY# = Snow(i,4)
         Bild= Snow(i,5)
         SC# = Snow(i,6)
         XX# = XX# + Rnd(-0.01,0.01)
         YY# = YY# + -0.01;SY#
         ZZ# = ZZ# + Rnd(-0.01,0.01)   
         Snow(i,1) = XX#
         Snow(i,2) = YY#
         Snow(i,3) = ZZ#      
         TFormPoint(XX,YY,ZZ,0,CAM)
         ZZ# = TFormedZ()
         If ZZ > 0
            XX# = TFormedX()
            If XX# < ZZ*2 And XX > -ZZ*2            
               YY# = TFormedY()
               If YY < ZZ*2 And YY > -ZZ*2         
                  ;If Bild = 0 Then
                  ;uv_U1# = 0:uv_V1# = 0:uv_U2# = 0.5:uv_V2# = 0.5
                  SC = 1
                  AddSnow(XX,YY,ZZ,SC)
               EndIf
            EndIf
         EndIf
         If Snow(i,2) < 0 Snow(i,0) = 0
      EndIf
   Next
End Function

Function AddSnow(xx#,yy#,zz#,sc#)   
   v0 = AddVertex(SnowSurf,XX-SC,YY-SC,ZZ,0,0)
   v1 = AddVertex(SnowSurf,XX+SC,YY-SC,ZZ,1,0)
   v2 = AddVertex(SnowSurf,XX-SC,YY+SC,ZZ,0,1)
   v3 = AddVertex(SnowSurf,XX+SC,YY+SC,ZZ,1,1)
   AddTriangle(SnowSurf,v2,v1,v1)
   AddTriangle(SnowSurf,v2,v1,v3)
End Function


Positionen und so funzten, nur halt das mit Vertex und so net ...

lg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Tankbuster

BeitragSa, Okt 18, 2008 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
fixed Wink

Neue Funktion AddSnow(xx#,yy#,zz#,sc#):

Zitat:

Function AddSnow(xx#,yy#,zz#,sc#)
v0 = AddVertex(SnowSurf,XX-SC,YY-SC,ZZ,0,0)
v1 = AddVertex(SnowSurf,XX+SC,YY-SC,ZZ,1,0)
v2 = AddVertex(SnowSurf,XX-SC,YY+SC,ZZ,0,1)
v3 = AddVertex(SnowSurf,XX+SC,YY+SC,ZZ,1,1)
AddTriangle(SnowSurf,v3,v1,v0)
AddTriangle(SnowSurf,v0,v2,v3)
End Function


Du hast dich nur mit AddTriangle vertan Wink
Twitter
Download Jewel Snake!
Windows|Android

ToeB

BeitragSa, Okt 18, 2008 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
oh... Embarassed

Peinlich ^^

na egal, danke dir !

lg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group