Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
25.06.2002, 12:48
Helgi Sigmundson



Da das Thema häufiger auftaucht dachte ich mir, vor allem da ich selbst schon damit gekämpft habe, meine Erfahrungen bereitzustellen, in der Hoffnung daß es jemandem nützt.
Zuerst einmal zum Verständnis für diejenigen die's es nicht wissen, hier eine kurze Erklärung von BSP-Bäumen.
BSP (Binary Space Partition) Bäume sind eine Methode um Ebenen (hier faces) in einer baumartigen Struktur zu ordnen um beispielsweise das HSR-System zu beschleuningen oder für Kollisionstests. Dabei wird ausgehend von einer Wurzelebene (sprich Root) der gesamte Raum in zwei Teile geteilt. Alle Ebenen im Raum die sich zur Linken der Wurzel befinden werden im Strukturbaum in die linke Seite eingetragen, und die zur Rechten in die rechte. Wenn eine Ebene durch beide Hälften verläuft, wird sie aufgeteilt und beiden Seiten zugeordnet. Nun wird in jeder Hälfte wieder eine Unterwurzelebene bestimmt und das ganze Verfahren wird wieder auf diese beiden Wurzeln angewendet. Dies passiert so lange bis ein bestimmtes Kriterium erfüllt ist (maximale Verästelung, maximale Anzahl von Ebenen).
Nun zum eigentlichen Thema. Die Fehlermeldung MAX_LEAF_FACES bedeutet daß die maximale Anzahl von Ebenen (Faces) überschritten wurde. Dies liegt nicht (immer) daran daß zu vielen Ebenen in der Map sind, sondern in der Regel daran, daß der BSP-Baum schlecht optimiert wurde und es zu häufig zu Ebenen-Splittings gekommen ist. Das ist in der Auswahl der Wurzel begründet und kann nicht auf direkte Weise behoben werden, da die Entscheidung der Auswahl ja vom Compiler übernommen wird. Man kann jedoch dem Compiler eine Wurzel anbieten, indem man z.B. in einer Map mit großen Leerräumen einen unsichtbaren, nicht-clippenden, dünnen und langen Brush in die Mitte eines Leerraumes setzt so daß dieser "Ebenen"-Brush den Raum in zwei gleiche Hälften teilt. Damit ist es zum Beispiel möglich riesige Räume zu machen. Also wenn MAX_LEAF_FACES kommt, nicht gleich wie 'n Irrer Brushes löschen, sondern erstmal gucken ob ihr den BSP-Baum optimieren könnt. Ich hoffe ihr könnt diesen Vorschlag verwerten. Mir hat's jedenfalls schon oft geholfen.

--

zum Seitenanfang zum Seitenende Profil || Suche
001
26.06.2002, 16:26
Tubgirl



Das steht sehr viel einfacher auch im Kompilierfehler-Artikel erklärt...

Wir wollen den Fehler doch nur lösen/verhindern und nicht wissenschaftlich analysieren ;)

--

zum Seitenanfang zum Seitenende Profil || Suche
002
26.06.2002, 18:04
Helgi Sigmundson



Der lange Text war nötig um die Lösung - welche ein gewisses Wissen erfordert - verständlich zu machen. Außerdem wird im Kompilierfehler-Artikel die Gruppe der Maps angesprochen, die wirklich zu viele Details haben. Meine Lösung bezieht sich auf die andere Gruppe.

--

zum Seitenanfang zum Seitenende Profil || Suche
003
26.06.2002, 20:20
Megge



zum beispiel rat maps :)

--

zum Seitenanfang zum Seitenende Profil || Suche
004
26.06.2002, 21:16
KhanRKerensky



Zum BSP Aufbau kann man auch mal den Thread hier durchlesen...
http://www.thewall.de/forum/showtopic.php?threadid=489
Wobei (nochmal) nen Helper/Admin darum bitte den Thread leserlicher zu gestalten...

--

"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book

zum Seitenanfang zum Seitenende Profil || Suche