Polygone zähln / Singlesurface

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

AMD

Betreff: Polygone zähln / Singlesurface

BeitragDi, Sep 04, 2007 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
heute hab ich zwei fragen
und zwar:
1. wie kann ich in BlitzBasic die Polygone von z.b. mehreren Bäumen zählen?
hat des was mit dem Begriff "Countsurface" zu tun? ich hab damit schon etwas rum probiert aber ohne erfolg...
2. was is Singlesurface genau? hat des was damit zu tun das des Game schneller geht? denk ich zumindest so viel wie ich jetzt davon gefunden habe und wenn ja wie macht man so etwas?

ach ja ich hab zzu beidem schon die forensuche benutzt und auch gegoogelt aber i-wie nix hilfreiches gefunden

danke jetzt schon mal...

MfG
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Sep 04, 2007 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu 1: ql:CountTriangles

Zu 2: Singlesurface ist, wenn zur Darstellung einer Sache nur ein Surface verwendet wird. Ein Surface ist dabei eine ''Oberfläche'' die zu einem Mesh gehört. Ein Mesh kann allerdings auch mehrere Oberflächen haben, nämlich dann, wenn zB mehrere Texturen auf diesem geladen werden. Daher wird empfohlen, beim modellieren alle Struckturen (zB Mauerstein, Gras, Haut etc. je nachdem was für ein Modell grade benutzt wird) auf nur einer Textur zu packen, da wenige Surfaces auch nur wenig zur Grafikkarte gesendet werden müssen.

Fazit:

- Ein menschliches Model, wo für jedes Körperteil (Augen, Kopf, Hose, Haare etc..) eine eigene Textur abgespeichert wird, ist schlecht.

- Ein menschliches Model, wo alle Körperteile auf einer Textur abgelegt sind und per UV-Mapping ausgelesen werden, ist gut.

Unter bestimmten Umständen ist aber auch nicht Sinnvoll immer alles zwangsweise in ein Surface zu packen. zB dann, wenn ein winziges Objekt gerendert werden muss, und dann der ganze Rattenschwanz mit von der Grafikkarte berücksichtigt werden muss. Ist aber erstmal eine andere Geschichte.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Markus2

BeitragMi, Sep 05, 2007 12:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Für Bäume eignet sich CopyEntity ganz gut .
 

AMD

BeitragMi, Sep 05, 2007 12:32
Antworten mit Zitat
Benutzer-Profile anzeigen
ok ok also ich hab jetzt gestern abend die ganze zeit probiert und auch heute aber ich schafs einfach net

also ich lade meine Bäume so
Code: [AUSKLAPPEN]

For a = 1 To 3000
Baum=LoadMesh("Baum.3ds")
EntityAutoFade Baum,100,600
ScaleEntity Baum,Rnd(1,2),Rnd(0.5,2),Rnd(1,2)
PositionEntity Baum,Rnd (0,2200),0,Rnd (0,2200)
PositionEntity Baum,EntityX(baum),TerrainY(mesh,EntityX(baum)-2,EntityY(baum)-2,EntityZ(baum)),EntityZ(baum)
Next


und dann will ich die Polygone so rausfinden:

Code: [AUSKLAPPEN]
For a=1 To CountSurfaces(Baum)
Text 0,a*20,"Dreiecke in Surface: "+CountTriangles(GetSurface(Baum,a))
Next


so und jetzt wennn ich z.b. einen Baum in B3D lade dann zeigt es an das der Baum 5250 Triangles hat.
und der oben gepostete code für die Polygone zeigt mir zwei werte an wenn ich die zusammen zähle komm ich auch auf den Wert. aber ich will das des gleich zusammen gezählt da steht(falls ich des jetzt alles richtig kapiert hab....)

MfG

ach ja ich will die ganzen polygone angezeigt haben von allen bäumen ich kanns mir zwar ganz einfach ausrechnen aber ich will das mit des BB gleich anzeigt
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Sep 05, 2007 12:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein großer Fehler ist schonmal:

Code: [AUSKLAPPEN]
For a = 1 To 3000
Baum=LoadMesh("Baum.3ds")
...
Next


Du verteilst 3000 Bäume auf ein und die selbe Variable. Dabei kann die Variable nur den einen Wert - und zwar den letzten - speichern, der Rest geht ins Nirvana. Wenn du also alle Bäume einzelnd ansprechen willst, musst du sie in ein Array oder noch besser in Types packen.

Übrigens, wenn ein Baum schon 5250 Triangles hat, dann hast du bereits bei 3000 Bäumen 15'750'000 Triangles, die nur für Bäume vergeben sind! Wenn diese nicht gerade kilimeterweit auseinander stehen, wirst du ganz schnell Probleme bekommen. Nicht alle haben ein High-End-System bei sich zuhause stehen, von den leistungsschwachen Notebooks mal ganz abgesehen.

Meine Tipps:

- Besorge dir ein Baum mit ~100 Triangles. Das was du da hast ist sicherlich nicht für Games als eher für Renderprogramme-Hintergrund gedacht. Ein Baum mit nur 100 Triangles kann, wenn er gut gemacht ist, sehr gut aussehen.

- Benutze ql:AddMesh um mehrere Baumgruppen die dicht beieinander liegen zusammen zu fügen. Die Gruppen sollten dabei nicht zu groß werden, so 10 - 30 Bäume vielleicht als eine Gruppe. edit1: Die Gruppen dann einzelnd in Variablen/Array/Types packen. Diese lassen sich dann zB mit ql:EntityAutoFade automatisch ausblenden, die weit genug von der Kamera entfernt sind.

Markus2

BeitragMi, Sep 05, 2007 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Das kombiniert mit den Baumgruppen wie hectic meint sollte dein Promlem lösen ...

Code: [AUSKLAPPEN]

Baum=LoadMesh("Baum.3ds")
EntityAutoFade Baum,100,600
HideEntity Baum

For a = 1 To 3000
Baum(a)=CopyEntity(Baum)
ScaleEntity Baum(a),Rnd(1,2),Rnd(0.5,2),Rnd(1,2)
PositionEntity Baum(a),Rnd (0,2200),0,Rnd (0,2200)
PositionEntity Baum(a),EntityX(baum(a)),TerrainY(mesh,EntityX(baum(a))-2,EntityY(baum(a))-2,EntityZ(baum(a))),EntityZ(baum(a))
Next
 

AMD

BeitragMi, Sep 05, 2007 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
boa alter scheiße wie geil is das den Smile

die 3000Bäume werden in einer rießén geschwindigkeit geladen davor hab ich 1.20min zum laden gebraucht alter danke ach ja
ich musste den code so verändern:

Code: [AUSKLAPPEN]
Baum=LoadMesh("Baum.3ds")
EntityAutoFade Baum,100,600
HideEntity Baum

For a = 1 To 3000
Baum=CopyEntity(Baum)
ScaleEntity Baum,Rnd(1,2),Rnd(0.5,2),Rnd(1,2)
PositionEntity Baum,Rnd (0,2200),0,Rnd (0,2200)
PositionEntity Baum,EntityX(baum),TerrainY(mesh,EntityX(baum)-2,EntityY(baum)-2,EntityZ(baum)),EntityZ(baum)
Next


weil sonst wurde angezeigt "Function does not exist"

und danke ich werd des mit den Polys auch noch etwas rum probieren!
MfG

und nochmal danke an euch zwei Smile

ach ja
@ hectic es soll ja auch kein Spiel werden sondern ich versuch so vieles in kuzer zeit zu laden und das sowas auch auf schwächern PCs zum laufen zu bringen (falls sowas geht)

MfG
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group