Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 13, 2025 16:30

Foren-Übersicht » DGL » Feedback
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 61 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 10, 2005 21:37 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Zitat:
ich würde mich für die einfachste aller lösungen entscheiden und die Polygone mit Hilfe ihrer Bounding Box checken und falls diese in mehreren Nodes ist einfach öfter zeichenen, denke, dass der Verlust, des 2 oder 3 mal zeichen, locker durch die Vorteile des Octrees aufgeholt wird und dass dieser Fall sowieso nicht für so viele Polygone zu trifft.


Angenommen, das sind große Polgone, sonst wären sie ja nicht in mehreren Nodes, und sie belegen je nach Situation einen großen Teil des Bildschirms, dann kann einfach 3x zeichnen in einem ungünstigen Fall, wie oben beschrieben, durchaus einen Unterschied zwischen 20fps und 60fps ausmachen. Beispiel man steht in einem langen Gang. Alle Polygone sind in zwei oder mehr Knoten und werden daher alle mehrfach gezeichnet. Da ist es egal, ob man an die Decke, den Boden, oder die Wänder schaut. Wenn die Fläch auch nur ein ganz klein wenig in einen der Nachbarknoten reinragt, passiert das schon. Und jeder Knoten hat ja 26 Nachbarknoten, wenn man die Diagonalen mitzählt. Das kann also schnell ganz schön viel werden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 11, 2005 10:56 
Offline
DGL Member

Registriert: Fr Jan 10, 2003 20:18
Beiträge: 88
hmmmm dannn würde ich enfach, wie lars gesagt hat, zu jedem polygon abspeichern ob es bereits gezeichent wurde, und das dann überprüfen und somit nur einmal zeichnen...

zu meineren neuen Octree version die ihr unter http://shadow3d.delphigl.com findet ist zu sagen, dass ich Polygone nur einem Node hinzufüge, bei meinem Terrain gibt es damit keine probleme, allerdings denke ich, dass das bei anderen Maps nicht der Fall sein dürfte. ALso Polygone verschwiden....


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 11, 2005 12:40 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Was spricht eigentlich gegen das speichern in Elternknoten?

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 11, 2005 12:59 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
Spricht eigentlich was dagegen eine Feste unterteilung der( bei mir Quads ) zu machen, wenn man weiss wieviele Flächen dieser Bereich hat?

_________________
Shareholder und Leitender Entwickler bei Pipedream-Games.

Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 11, 2005 13:17 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Natürlich nicht. Wenn du einen Quadtree und ein Terrain mit fester Seitenlänge hast, dann kann man da doch einiges vereinfachen und die Struktur sinnvoll ausnutzen. Das Problem mit den Flächen in mehreren Knoten hast du dann auch nicht mehr.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 11, 2005 16:35 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Shadow hat geschrieben:
hmmmm dannn würde ich enfach, wie lars gesagt hat, zu jedem polygon abspeichern ob es bereits gezeichent wurde, und das dann überprüfen und somit nur einmal zeichnen...

zu meineren neuen Octree version die ihr unter http://shadow3d.delphigl.com findet ist zu sagen, dass ich Polygone nur einem Node hinzufüge, bei meinem Terrain gibt es damit keine probleme, allerdings denke ich, dass das bei anderen Maps nicht der Fall sein dürfte. ALso Polygone verschwiden....

Bei dem Terrain gibt es, jedenfalls bei mir, Probleme. Es geschieht zwar nur recht selten, aber ab und zu verschwinden Polygone am linken, oberen und rechten Rand. Man sieht es auf den ersten Blick nicht, aber wenn man es erst einmal gesehen hat, dann ist es ein Anblick, der einen nicht loslässt... ;)

Bin gerade dabei, die zwei Octree-Versionen zu vergleichen... Mir gefällt die neuere Version vom Aufbau her besser, aber die Änderung der ganzen Struktur und der Variablennamen erschwert es doch ein bisschen. Werd mich dann mal durchbeisen.

Ansonsten bezüglich verschwindende Polygone: Ich fände es auch eleganter, die Polygone in den Eltern-Nodes zu speichern, wenn sie zu groß sind. Kein Overhead und nicht so schwer zu implementieren, wie das Splitting.
Ist das Splitting eigentlich langsamer als das Ablegen der Polygone in den darüberliegenden Nodes?

EDIT:
Hab jetzt die Prüfung auskommentiert, die dafür gesorgt hat, dass ein Polygon immer nur einmal in den Octree aufgenommen wird:
Code:
  1. mother^.polygons[i].v[0]:=nil;

Und der Performanceverlust war wider Erwarten nicht spürbar. Erst der direkte Vergleich zeigte einen sehr leichten Performanceverlust. Also mit dem bisschen Overdraw kann man leben. ;)

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 11, 2005 20:26 
Offline
DGL Member

Registriert: Fr Jan 10, 2003 20:18
Beiträge: 88
jau...das sagte ich bereits...deswegen meinte ich auch anhande der bounding box eines polygons auf kollision der nodes zu überprüfen, damit , das verschwinden der polygone nicht mehr vorkommt...

Peace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 11, 2005 20:36 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Hab gerade meine eigene Octree-Klasse gebastelt, weil ich da später noch viel mehr Sachen reinpacken möchte, als "nur" die Anzeige per OpenGL. Da kommt dann noch Lightmap-Berechnung (Jaja, ich weiß, dass Lightmaps nicht der letzte Schrei sind, aber in der Unreal2-Engine werden auch noch welche verwendet und sie schauen gut aus... Auserdem hab ich mich mit den Dingern schon viel zu sehr beschäftigt ;) mit Schatten usw...
Und, siehe da, das Ding hat auf Anhieb funktioniert, was wohl mit unter auch daran lag, dass ich ja eine wunderschöne Octree-Klasse von Shadow zur Orientierung hatte. Nochmal Thx wegen dem Octree-Tut. ;) Is ja echt wahnsinn, was man da für Geschwindigkeiten erreicht... Von 30 fps auf 600 fps...

EDIT: Nur die Texturwechsel wollen noch nicht so richtig, aber das ist ja auch das erste Mal, dass ich VBOs verwende...

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 13, 2005 12:08 
Offline
DGL Member

Registriert: Fr Jan 10, 2003 20:18
Beiträge: 88
freut mich dass es dir geholfen hat. is der erste feedback, den ich nach graumer zeit bekomme...finde das generell schade dass man so wenig lob(natürlich auch kritik) zu seienr arbeit bekommt...alle downloaden nur und das wars :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 26, 2005 10:24 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
Um eine Antwort auf deine ursprüngliche frege zu kriegen, nämlich wie man die Funktion "PolygonIn" perfekt machen kann, such mal im OpenGL forum nach dem Artikel Frustum und lies die meine letzte Antwort durch.
Ich hoffe, das hilft.
Hab ich aus nem Computergrafik Buch und dann von 2D nach 3D portiert.
Zu dem Mehrfachzeichen: Der Oktree hat doch eh ne globale Liste auf die Polys. Wenn jetzt jeder Knoten bei allen seinen Polygonen ein 'Zeichne mich' Flag setzt wenn er sichtbar ist, und das eigentliche Zeichen nach der Sichtbarkeitsprüfung vom Octree übernommen wird und nicht von den einzelnen Knoten, dann zeichnet der Octree einfach nur die mit dem 'Zeichne mich' flag und das Problem mit dem Mehrfachzeichnen ist gegessen.

_________________
Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 26, 2005 11:17 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Statt dem Flag kann man auch die Nummer den letzten sichtbaren Frames bei den Polygonen abspeichern. Dann muß man das Flag bei den nicht sichtbaren Polygonen nicht zurücksetzen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 30, 2005 15:18 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Hi,

bin aus dem Urlaub zurück und hab schon wieder eine Liste mit Fragen ;)
Als ich die Erkenntniss gewonnen habe, dass Texturwechsel bei einem VBO nicht drin ist, stellte sich das Problem, wie organisier ich den Octree, damit die Polygone mit der gleichen Textur in einem eigenen VBO stehen, der Octree aber dennoch sehr performant bleibt.

red hat geschrieben:
Ich hätte da auch noch eine frage bezüglich Octrees :)

Ich habe Vertex-Daten aus einer 3d-File geladen, da diese mehrere texturen haben, kommen alle Vertices mit gleicher Textur in eine Parent-Node, die dann später unterteilt werden, um so wenig texturwechsel wie möglich zu haben - klappt auch wunderbar soweit.


Da ich da nicht ganz durchblick, was du damit meinst, stell ich einfach mal ein paar Theorien auf ;):
  • Du hast für alle Polys mit der gleichen Textur einen eigenen Octree und zeichnest dann halt nicht mehr nur einen Octree, sondern so viele Octrees, wie du Texturen hast. Geht wahrscheinlich leicht zu implementieren, frisst aber vielleicht auch zu viel Performance, denn es müssen ja jedesmal die ganzen Nodes auf Sichtbarkeit getestet werden
  • Du unterteilst deine Nodes solange, bis du in den Kinder-Nodes der aktuellen Parent-Node nur noch eine einzige Textur drin hast... <---- ist mir gerade erst eingefallen und kann auch totaler Schmarrn sein ;) Nicht geprüft
  • Du hast einen Octree ohne Texturen, der nur die reinen Polygondaten enthält und nur für die Sichtbarkeitsprüfung zuständig ist. Du renderst also zuerst diesen Octree und dann für alle Texturen jeweils einen Octree, wobei du dir dann das nochmalige Überprüfen der Nodes sparen kannst, weil du ja vom Texturlosen Octree schon weist, welche Nodes sichtbar sind
Ist da deine Methode dabei?

Gruß, Frase

P.S.: Das ganze sollte auch noch mit Lightmaps kompatibel sein, also noch nach Lightmaps irgendwie sortiert werden, da ich die über Multitexturing binden möchte und mir ja beim VBO kein Texturwechsel möglich ist.

EDIT:
Shadow hat geschrieben:
freut mich dass es dir geholfen hat. is der erste feedback, den ich nach graumer zeit bekomme...finde das generell schade dass man so wenig lob(natürlich auch kritik) zu seienr arbeit bekommt...alle downloaden nur und das wars :(

Freut mich auch, dass es mir geholfen hat :D . Und Feedback scheint sich meistens nur dann einzustellen, wenn man Fragen hat, oder wenn es Probleme gibt. Ich führe das mal spontan darauf zurück, wie der Mensch generell mit Problemen oder Aufgaben umgeht. Wenn etwas reibungslos klappt, kann ein Danke im Forum auch warten, wenn es wichtigeres gibt.
Im Real Life dagegen bekommt man öfter mal Feedback zu hören, wenn man jemandem etwas erklärt. Wahrscheinlich, weil da dann der Kontakt persönlicher ist als im relativ anonymen Internet. Der durchschnittliche Tutorial-Leser denkt sich im Unterbewusstsein vielleicht, dass der Autor es nicht mitkriegt, wenn man das Tutorial liest und dass er deshalb auch keinen Dank erwartet. Gemäß dem Motto: "Was ich nicht weiß, macht mich nicht heiß"

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 30, 2005 16:33 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
Zitat:
Im Real Life dagegen bekommt man öfter mal Feedback zu hören, wenn man jemandem etwas erklärt. Wahrscheinlich, weil da dann der Kontakt persönlicher ist als im relativ anonymen Internet. Der durchschnittliche Tutorial-Leser denkt sich im Unterbewusstsein vielleicht, dass der Autor es nicht mitkriegt, wenn man das Tutorial liest und dass er deshalb auch keinen Dank erwartet. Gemäß dem Motto: "Was ich nicht weiß, macht mich nicht heiß"


ich glaub ja noch, dass das eher mit der allgemeinen Faulheit des Menschen zu tun hat. es ist nun mal mehr Aufwand im forum nach dem entsprechenden threat zu suchen (sich vll. sogar erst noch zu registrieren) und was zu schreiben als im reallife jemandem das direkt zu sagen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 30, 2005 16:45 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Grizzly hat geschrieben:
ich glaub ja noch, dass das eher mit der allgemeinen Faulheit des Menschen zu tun hat. es ist nun mal mehr Aufwand im forum nach dem entsprechenden threat zu suchen (sich vll. sogar erst noch zu registrieren) und was zu schreiben als im reallife jemandem das direkt zu sagen.

Stimmt. Das erschwert das Ganze natürlich ungemein ;)

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 31, 2005 00:58 
Offline
DGL Member

Registriert: Fr Jan 10, 2003 20:18
Beiträge: 88
ich schließ mich der Faulheits-Theorie an ;)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 61 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5  Nächste
Foren-Übersicht » DGL » Feedback


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.011s | 15 Queries | GZIP : On ]