SingleSurface

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Fuchsi

Betreff: SingleSurface

BeitragSo, Okt 15, 2006 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,

Nachdem man mir geraten hat SingleSurface Techniken anzuwenden hab ich mich voller Elan auf die Suchfunktion gestürzt,... und leider nichts gefunden. Ich will euch gar nicht um Code bitten, nur vielleicht einen Denkanstoß oder eine Erklärung.

MfG Fuchsi

Mr.Keks

BeitragSo, Okt 15, 2006 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
blubber... alle nehmen singlesurface immer so schnell in den mund. ich kann dir jetzt erstmal kaum weiterhelfen, da singlesurface ansich nur bedeutet, dass man statt mehrere entities und somit surfaces mit derselben textur zu benutzen, halt die objekte zu einem entity verschmilzt und nur ein surface benutzt, was besonders bei hohen objektzahlen einen enormen geschwindigkeitsschub bringt.

... hierfür benutzt man meistens surfacebefehle, wie du sie auf blitzbase.de in der befehlsreferenz findest.

wenn du speziellere hilfe benötigst, musst du wohl auch spezieller angeben, was du machen möchtest Smile
MrKeks.net

Fuchsi

BeitragSo, Okt 15, 2006 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab angefangen mich dafür zu interessieren, als ich zum Test 200 Cubes
erstellt hab, und die Framerate total eingebrochen ist.
Mit Surface-Befehlen kann ich umgehen. (zB.: aus Vertexpunktien und
Triangles ein Mesh erstellen, falls du das meinst.)

Mr.Keks

BeitragSo, Okt 15, 2006 14:11
Antworten mit Zitat
Benutzer-Profile anzeigen
tjo, aber was willst du mit den cubes machen? das ist doch die frage Smile
MrKeks.net

Fuchsi

BeitragSo, Okt 15, 2006 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich versuche, alle Cubes in einem Surface unterzubringen.

PowerProgrammer

BeitragSo, Okt 15, 2006 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, das ist klar Laughing Laughing Laughing
Aber was soll mit den Cubes geschehen? Soll sich jeder einzelne drehen?

DAS meint Mr.Keks.
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!

Goodjee

BeitragSo, Okt 15, 2006 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab mich auch ein bischen damit beschäftigt, ich versuche es dir mal zu erklären:
Du erstellst am anfang ein mesh mit einem surface.

Wenn du jetzt single surface objecte dazuerstellen willst ließst du alle vertices deines meshes aus und tust sie mit addvertex und add triangle auf dein surface.

wenn du ein einzelnes löschen willst musst du mit clearsurface alle vertices deines großen surfaces löschen und alle noch existierenden neu draufschreiben. alternativ aknnst du auch immer eine bestimmte zahl "auf Vorrat" haben und die anderen wenn sie nicht ebraucht wrden mit VertexAlpha unsichtbar machen.
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Fuchsi

BeitragSo, Okt 15, 2006 14:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Thx Godjee, hast mir sehr geholfen.

Mr.Keks

BeitragSo, Okt 15, 2006 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2
SetBuffer BackBuffer()

cam=CreateCamera()

cube1 = CreatePivot() ; parent für all die multisurfacecubes
cube2 = CreateMesh() ; mesh für das einzelne cube-surface
surf = CreateSurface(cube2) ; surface für all die cubes

; ganz viele zufällig positionierte und gedrehte cubes erstellen
For i = 0 To 1200
   x = Rand(-20,20)
   y = Rand(-20,20)
   z = Rand(-20,20)
   
   c = CreateCube(cube1)
   PositionEntity c,x,y,z
   EntityColor c,255,200,200
   
   RotateEntity c,Rand(360),Rand(360),Rand(360)
   
   ;cube in das singlesurfacemesh reinkopieren
   AddToSurface(c,  surf,cube2)
   
Next


While Not KeyDown(1)
   
   If KeyDown(57) ; wenn leertaste gedrückt wird, wird das singlesurfacemesh gerendert, sonst werden viele surfaces gerendert
      HideEntity cube1
      ShowEntity cube2
   Else
      ShowEntity cube1
      HideEntity cube2
   EndIf
   
   TurnEntity cam,0,.1,0
   
   ms = MilliSecs()
   RenderWorld
   Text 0,0,"RenderTime: "+(MilliSecs()-ms)
   Flip
   
Wend

Function AddToSurface(mesh, surf,singlesurfaceentity)
   Local vert[2]
   For s = 1 To CountSurfaces(mesh)
      surface = GetSurface(mesh,s)      
      For i = 0 To  CountTriangles(surface)-1
         For i2 = 0 To 2
            oldvert = TriangleVertex(surface,i,i2)
            TFormPoint VertexX(surface,oldvert),VertexY(surface,oldvert),VertexZ(surface,oldvert), mesh,singlesurfaceentity
            vert[i2] = AddVertex(surf,TFormedX(),TFormedY(),TFormedZ(),VertexU(surface,oldvert),VertexV(surface,oldvert))
         Next
         AddTriangle(surf, vert[0], vert[1], vert[2])
      Next
   Next
End Function
MrKeks.net

PowerProgrammer

BeitragSo, Okt 15, 2006 14:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ja wirklich cool. Das hilft auch mir Smile
Und besonders cool ist es, wenn man aus der 1200 eine 10.000 macht und dann die Leertaste drückt...
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!

Mr.Keks

BeitragSo, Okt 15, 2006 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
es gibt ja leider ein maximum an vertices und triangles pro surface...
MrKeks.net

5k41

BeitragSo, Okt 15, 2006 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
was ein maximum? weisst du zufällig auch wo das liegt?
MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

Matthias

BeitragSo, Okt 15, 2006 15:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Das liegt bei 16384 Vertexpunkte Oder 16384 Triangles
 

Dreamora

BeitragSo, Okt 15, 2006 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
64*1024 Vertices
Und je nach Grafikkarte
32*1024 Polygone oder 64*1024 Polygone
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

5k41

BeitragSo, Okt 15, 2006 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
mh, gut zu wissen, da die entwicklung meiner SingleSurface Engine abgeschlossen ist und ich mich bald ans PartikelSystem machen wollte... also nicht zusehr übertreiben Wink

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

Dreamora

BeitragSo, Okt 15, 2006 17:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Partikelsysteme werden damit keine Probleme haben. Bei 20000 Partikeln geht eh so langsam der Saft ganz übel aus, weil du bei partikelsystemen die ganzen 40000 polygone jedes Frame neu an die Grafikkarte senden musst (bzw. die Vertices davon da sich ja nur deren Position ändern) und da kommen dann andere Faktoren rein die viel einschränkender sind als "maximalzahlen" ^^ Mag usern von 6800 nicht auffallen, aber der durchschnittliche user hat 200er karten und deren Bandbreite ist dann doch um einiges niedriger weswegen die bedeutend schneller abröcheln bei Partikelsystemen etc.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
  • Zuletzt bearbeitet von Dreamora am So, Okt 15, 2006 17:48, insgesamt einmal bearbeitet

5k41

BeitragSo, Okt 15, 2006 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, da könntest du recht haben, naja, nach dem ich For a better World beendet hab werd ich mich mal an nem Partikelsystem versuchen und dann einfach sehen, was bei rauskommt Wink
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Black Spider

BeitragSo, Okt 15, 2006 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
bei mir kommt schon "memory acces violation" wenn ich nur 1900 cubes erstelle...
gibt es ne möglichkeit zu checken, ob es noch gehen würde?
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif
 

Dreamora

BeitragSo, Okt 15, 2006 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Leider nicht.

Das einzige was du machen kannst, ist sinnvoll mit Polygonen umzugehen und Surfaces sinnvoll aufzuteilen. (denn alles auf einer ist auch nicht immer sinnvoll, da zb Alpha dann wegfällt und auch immer die gesamte Surface als "gerendert" markiert ist wenn nur ein teil davon im sichtbaren bereich ist. (bzw. bei mehreren surfaces auf dem gleichen mesh wirds noch schlimmer, da eigentlich das mesh bestimmt ob es gerendert wird oder nicht, nicht die surface)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

5k41

BeitragSo, Okt 15, 2006 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn die Surface über den Bildschirm hinaus geht, wird jene dann trozdem ganz gerendert? Ich dachte immer die überflüssigen Polys werden "weggeklippt"
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group