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

Aktuelle Zeit: Sa Jul 05, 2025 22:14

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Octree Problem...
BeitragVerfasst: Di Jan 21, 2003 00:03 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Huhu,

ich äh.. steh grad vor einem riesen Problem... eines an das ich nie gedacht hab... :)

Also... ihr wisst ja wie ein Octree aufgebaut ist, ja?? (zummindest ungefähr... alle Triangles der Scene werden verschiedenen Würfeln zugeteilt etc.)

funktioniert auch alles wunderbar einwandfrei... bis auf eine sache...
Stellt euch mal nen Octree mit einer Unterteilung vor... also 8 Würfel...

Wenn ich jetzt z.B. ne Sphere habe ist es einfach die aufzuteilen auf die 8 Würfel. ABER... wenn ich ein Flaches Polygon habe (z.B. nen Quad) welches genau gerade zwischen den Octree Unterteilungen verläuft... es ist also nicht IN einer unterteilung, sondern direkt auf der Linie wo sich die unterteilungen berühren...

Kann mir mal wer verraten was ich da machen soll...? Mein Octree funktioniert wunderbar einwandfrei... alles wird irgendwo zugeordnet, nur in so einem fall wird das Quad "vergessen"... *schaut verzweifelt*

Hilfe~~

Au'revoir,
Aya~

PS: Ich hoffe irgendwer hat kapiert was ich hier schreibe... ^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 08:46 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 12, 2002 07:15
Beiträge: 916
Wohnort: Dietzhölztal / Hessen
Programmiersprache: C/C++, Obj-C
Hmm.. ich hab' noch keine Erfahrung mit Octrees (kommt noch. Bin Froh dass ich mich dann an jemanden wenden kann, der sich damit auskennt ;)), aber ich vermute, es ist das gleiche wie irgendwie bei jedem Algorythmus. Es gibt immer sonderfälle die dann von "Hand" abgefragt werden müssen.

Also in Deinem Fall würd ich irgendwie nachschauen, ob es noch Polygone gibt, die keinem Node zugeordnet wurden. Wenn solch ein Polygon gefunden wird, wird dieses an den naheliegensten Node zugewiesen und fertig. Ob das 'ne gute Lösung ist, weiss ich nicht, aber laute dem ersten groben Durchdenken müsste das eingentlich funktionieren. Geschwindigkeitsverluste gibt's dabei auch nicht, da der Octree ja nicht in realtime berechnet wird. (obwohl, wäre mal was neues... :lol: ).

Andere Möglichkeit wäre, die Level-Daten entsprechend anzupassen...

_________________
Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 13:27 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
huhu,

mein Hauptproblem besteht aber darin das irgendwo zuzuordnen... :)

Denn es befindet sich ja nicht IN einer unterteilung des Octrees... = Kein IntersectionTest merkt das das ding da ist...

z.Z. hab ich 2 IntersectionTests eingebaut..

1.) Liegt IRGENDEIN Vertex des 3-Ecks in der Unterteilung??
2.) Wenn nein, dann werden alle Kanten des Würfels, sowie des Dreieckes überprüft ob sie die fläche durchstoßen.

Allerdings bekommt keinder der beiden mit, wenn der würfel gerade flach auf dem Dreieck liegt... :(

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 18:51 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
also wenn ich das alles richtig verstanden habe, würde ich folgendes machen:

pseudocode:

Code:
  1.  
  2.  
  3. IF KannQuadNichtEindeutigEinordnen THEN
  4.  
  5. BEGIN
  6.  
  7.          QuadInNode1();
  8.  
  9.          QuadInNode2();
  10.  
  11. END;
  12.  
  13.  


Ist zwar nicht grad die eleganteste lösung und das quad wird 2mal gespeicher/gezeichnet, aber heutzutage ist das eigentlich kein ernsthaftes problem mehr.
also ich denke zur not und für den anfang reicht sowas eigentlich völlig aus. Und wenn nicht, dann musste halt per zufall bestimmen, in welche Node du das quad neischmeist (auf deutsch: reintust).

Bis dann ma irgendwann.

RSWM

_________________
Aktuelles Projekt :
www.PicPlace.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 18:55 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
ich würde auch sagen, in alle zur wahl stehenden nodes einsortieren, denn wenn es ein großes poly ist und kleine octree-leafes und du machst einen sichtbarkeitstest, dann könntest du z.b. das problem bekommen, das so ein großes poly plötzlcih hereinpopt, wenn dus nicht mehreren zugeordnet hast.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 18:58 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
huhu,

die gefahr das es reinpopt besteht eigentlich nicht, da ich die Polygone welche in mehrere Gruppen reinragen Splitten werde.. :)

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 19:38 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
hopla, ich hab nicht genau genug gelesen.... du meisnt also den sonderbaren fall, wenn ein poly genau auf einer trennwand der octrees steht? dann ordne es doch einfach dem leaf zu, das weiter vorne rechts ist. du wirst wahrscheinlich irgendwo mit > und < arbeiten, da musst du dich dann irgendwo entschließen ein geschicktes = zu verteilen und dann sollte sich das problem lösen, oder sehe ich das jetzt falsch


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 19:40 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
mhh... ein geschicktes "="... daran dachte ich auch schon... *g*

Irgendwelche freiwilligen die den Code von JanHorn (Line und Poly intersection) für mich in die richtung umbasteln? =)

Denn z.Z. liefert die funktion "false" zurück, wenn eine Linie direkt auf dem Polygon endet... denn sie durchdringt das Polygon ja nicht...:)

Freiwillige? *grinst fies und schaut sich um*


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 20:38 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
EDIT: ähm.. das hier (Was jetzt weg is) sollte in ein anderes Post :oops:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 22, 2003 10:21 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 12, 2002 07:15
Beiträge: 916
Wohnort: Dietzhölztal / Hessen
Programmiersprache: C/C++, Obj-C
Ok, auf die Gefahr hin, dass Du wieder Sagst "Ich kann kein C und bitte nicht Zerbst", aber man muss ja alles ausprobieren.

Bei der Erstellung eines BPS-Baumes gibt es auch das Problem, dass ein Polygon mal genau auf der "Split-Linie" liegt. Also wäre es doch evtl. mal 'ne Idee, zu schan was Steffan Zerbst gemacht hat und dann das ganze in ein OcTree-Adequat zu konvertieren. Die Theorie wäre u.U. die gleiche...

(Nur so ne idee...)

_________________
Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 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.008s | 14 Queries | GZIP : On ]