Polligone reduzieren?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

tft

Betreff: Polligone reduzieren?

BeitragFr, Mai 04, 2007 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo...

Seit Tagen grübel ich darüber nach wie ich Sichtbare Triangels eines Mesh von nicht sichtbaren trennen kann, oder Löschen. Das Problem ist folgendes.
Ich habe einen Editor der mir aus GrundKörpern ein Object erzeugt. Dieses Object wird dann in ein Mesh verwandelt und gespeichert.
Die erste Optimierung war das Weglassen aller Grundkörper die überhauptnicht zu sehen sind. Aber das reicht bei weitem nicht aus. Ich muss nun alle Dreiecke der Grundkörper Löschen, die aus allen Blickwinkeln nicht zu sehen sind.
Mein einzieger Lösungs ansatzt wäre das Mesh zu rotieren und mittels sichtstrahl (EntityPick) alle Dreiecke die zu sehen sind so rauszufiltern.
Gibts fieleicht auch eine andere lösung?
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

StepTiger

BeitragFr, Mai 04, 2007 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du sinnvoll Polygone reduzieren willst, solltest du eventuell die Winkel zwischen den Vertices abfragen. Bei Winkeln nahe 180° wird es gelöscht, da es kaum eine Veränderung auf dem Objekt bewirkt. Das sinnvoll umzusetzen, habe ich auch noch nicht geschafft.

Wenn du es sinnvoll machen willst, dann erstell erst gar keine auf jeden Fall unsichtbaren Polygone.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

NightPhoenix

BeitragFr, Mai 04, 2007 14:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum willst du einen realtime polyreducer? Da kann man doch gleich tausende polys mehr benutzen, als seine cpu damit zu belasten...
Ansonsten könntest du halt von jedem Objekt, 4 Objekte machen, bei denen jeweils die nicht sichtbare Hälfte in einem Modeller abgeflacht wurde und dort die Polygone aufgelöst. Dann kannst du Ingame jeweils das Objekt laden, bei welchem die flache, reduzierte Seite vom Spieler weg zeigt.
Nur son Vorschlag =)
MfG.

tft

BeitragFr, Mai 04, 2007 15:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ...

nein ... das ist nicht was ich suche. Ich muss alle Triangel die man pracktisch nicht sehen kann einmal löschen. Dabei kommt es mir nur auf die Sichtbarkeit von aussen an. Ein Beispile.
Ein Object besteht aus Zwei Quadern. Der eine Steckt im anderen drinn.
Nun möchte ich die Poligone die man von aussen sehen kann behalten und alle anderen löschen. Wobei bei der Berechnung alle blickwinkel 360*360*360 Grad berücksicht werden sollen.
Das Object wird von allen Seiten einmal betrachtet und nur die Polis die man dann sehen kann werden in einem Neuen Mesh zusammengefast.

@NightPhoenix deine Idee werde ich an anderer Stelle aufgreifen.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!
 

Dreamora

BeitragFr, Mai 04, 2007 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
das geht nicht in echtzeit

das ist der grund warum man stundenlang den PC laufen lässt um BSP Level zu kompilieren zb.

Constructive Solid Geometry ist leider nicht echtzeittauglich. (mindestens jetzt noch net und wenn dann primär mit tricks die auf höherer shadertechnologie *GF6 ++* basieren)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

tft

BeitragFr, Mai 04, 2007 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ...

ich brauche es auch nicht in Echtzeit... wenns 20 Minuten für 5000 Polis benötigt ist das schon OK.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!
 

Dreamora

BeitragFr, Mai 04, 2007 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun wenn du Zeit hast, dann wären da verschiedene Möglichkeiten, ich würde die möglichkeit von EntityVisible nutzen.

ansonsten könntest du auch linepicks nutzen
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

tft

BeitragFr, Mai 04, 2007 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ...

die Variante mit entityPick habe ich bereits. Das ist aber doch sehr langsam. Ausserdem hängt die abarbeitungs Zeit auch noch von Winkel der Objecte ab. Ich suche halt einen Schnelleren weg. Ist LinePick schneller als Entitypick() ?
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

Mr.Keks

BeitragSa, Mai 05, 2007 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
linepick udn entitypick verwenden denselben algorithmus...
MrKeks.net

Vertex

BeitragSa, Mai 05, 2007 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde keinen anderen Weg kennen, als über einen BSP Baum das ganze zu handeln.

http://wiki.delphigl.com/index...B.C3.A4ume
Die beiden Tutorials von Gerald Filimonov sind die Besten. Im ersten wird beschrieben, wie du einen BSP Baum aufbaust und im zweiten wie du illegale Geometrie entfernst.

Ersteres war die Grundlage meines Leaf BSP Compilers in BMax. https://www.blitzforum.de/foru...hp?t=18693

Aber ich kann dir versprechen, wenn du nicht in linearer Algebra fit bist, bekommst du das nicht auf die Reihe.

mfg olli
vertex.dreamfall.at | GitHub

tft

BeitragSa, Mai 05, 2007 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ...

danke für die Infos.... und dein Versprechen hat sich eingelöst. Smile
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

Vertex

BeitragSo, Mai 06, 2007 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, um so etwas zu programmieren braucht man auch die nötigen Kenntnisse, ganz klar. Aber vllt. suchst du mal nach fertigen CSG Bibliotheken. Da müsste es 1-2 geben im englischen Forum. In wie weit man damit die überflüssigen Dreiecke entfernt, weiß ich nicht. Ich würde versuchen, um das Objekt einen Quader zu erstellen, die Vertexreihenfolge mit FlipMesh ändern und dann mit CSG(Mesh, Quader, CSG_SUBSTRACT) Quader und Mesh zu "subtrahieren". Dabei könnten redundante Dreiecke entfernt werden.

Ansonsten funktioniert die aufwändige LinePick Variante nur mit konvexer Geometrie und die bekommst du nur mit einem BSP Compiler ^^

mfg olli
vertex.dreamfall.at | GitHub

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group