Im Raum: Quadrat verdeckt teilweise Quadrat?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Im Raum: Quadrat verdeckt teilweise Quadrat?

Beitrag von CSHW89 »

Hi Leute,
ich hab mal wieder ein kleines problem. ich programmiere grad ein kleines programm, in dem ich 3D -> 2D projektionen benutze, um einen würfel zu zeichnen. nun bin ich auf folgendes problem gestoßen:

Bild
wie man sieht, werden zwei schwarze flächen nach der weißen bzw. gelben fläche gezeichnet, was natürlich falsch ist.

so ich werd hier jetzt kein code posten, da er erstens viel zu groß ist, und zweitens in java geschrieben ist.
ich möchte eigentlich nur eine antwort auf folgende frage:

Wie findet man heraus, ob eine fläche (in meinem fall nur ein quadrat), eine andere fläche teilweise verdeckt?
Gegeben ist dabei die Position der Kamera (die Richtung zeigt immer auf den Nullpunkt (0,0,0)), und die Positionen der beiden Quadrate im Raum.

ich benutze grad die methode: zeichne quadrat zuerst, welches eine ecke besitzt, die am weitesten von der kamera entfernt ist. aber das scheint ja nicht so hundertprozentig zu funktioneren.

Hat da jemand ne idee, oder vielleicht i-was im internet entdeckt. hab schon verzweifelt gesucht.
danke schon mal

lg kevin
Zuletzt geändert von CSHW89 am 07.04.2012 15:53, insgesamt 1-mal geändert.
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Re: Im Raum: Quadrat verdeckt teilweise Quadrat?

Beitrag von DrShrek »

Hier ein Zauüerwürfel mit PureBasic und er MP3D entwickelt.
Sourcen liegen dabei.

http://www.morty-productions.de/gamedev ... php?tid=12
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Im Raum: Quadrat verdeckt teilweise Quadrat?

Beitrag von CSHW89 »

mit entity ist das ja auch nicht schwer :mrgreen:
nein quatsch, habs auch schon mal programmiert. ich wollt aber jetzt ein applet entwickeln (deshalb java), und hab dazu grob die include von stargate genutzt:
http://www.purebasic.fr/german/viewtopi ... 10&t=22128

ich zeichne also alles selber mit polygonen auf einer 2d grafik.

jetzt hab ich halt nur das problem mit den überschneidenen flächen

lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Im Raum: Quadrat verdeckt teilweise Quadrat?

Beitrag von STARGÅTE »

Also vorab mal:
echtes Schneiden zweier Flächen kannst du vermutlich per Hand eh nicht realisieren, weil sich ja dann beide Flächen druchdringen und die 4 neue Flächen errechnen musst.

Meine Idee zum Thema:

Du könntest für jeden Eckpunkt Prüfen, an welchen Koordinaten seine verlängerte Sichtlinie (von Camera zum Punkt) die jeweils andere Fläche durchdringt.

Wenn sich die beiden Flächen wirklich nicht durchdringen, reicht die Prüfung eines Eckpunkts mit der anderen Fläche, weil dann ja auch alle andere vor bzw hinter der Fläche liegen, und wenn nicht, dann könntest du eh nichts dagegen mache^^

Wäre dann der Schnittpunkt hinter dem Eckpunkt liegt, dann wird die andere Fläche zuerst gezeichnet, liegt er davor wird die Fläche mit dem Eckpuntk zuerst gezeichnet.

Das ganze ist also ähnlich deiner Methode, jedoch nicht mit zwei Eckpunkten, sonden nur einem, und der entsprechender Flächen-Sichtlinien-Punkt...

ich hoffe du verstehst was ich meine ^^
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Im Raum: Quadrat verdeckt teilweise Quadrat?

Beitrag von CSHW89 »

so hab mal endlich auch was gefunden. stichwort: Sichtbarkeitsalgorithmus
ist wir aber alles viel zu komplex für so ein simples problem.

deshalb werd ich wohl stargates vorschlag nehmen. danke dafür :allright: . hatte nach längerem überlegen dieselbe idee :mrgreen:
erstmal, die flächen durchdringen sich nicht, deshalb is es schon mal viel leichter, da haste recht. nur das mit einer ecke versteh ich nicht. es kann doch sein, dass nur eine ecke von einem vorderen quadrat verdeckt wird (wie z.b. bei dem schwarzen quadrat oben: ok, da sind's zwei ecken). ich muss also alle vier ecken einen quadrats prüfen, oder vertuh ich mich da grad.



lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Im Raum: Quadrat verdeckt teilweise Quadrat?

Beitrag von STARGÅTE »

nur das mit einer ecke versteh ich nicht. es kann doch sein, dass nur eine ecke von einem vorderen quadrat verdeckt wird
Jo, klar, eine Ecke, wo dahinter oder Davor garnicht die Fläche ist, mit der Verglichen werden soll, dann kannst du diese natürlich nicht nutzen. Hast du aber erst mal eine gefunden, dann brauchst du keine weitere Testen.

Problem wäre dann auch wenn Zwei flächen genau übereinander liegen um 45° gedreht, dann würde keine Ecke die jeweils andere Fläche über die Sichtstrahlen Schneiden.

Dort müsste man u.u. auch noch das Zemtrom vergleichen.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Im Raum: Quadrat verdeckt teilweise Quadrat?

Beitrag von CSHW89 »

STARGÅTE hat geschrieben:Problem wäre dann auch wenn Zwei flächen genau übereinander liegen um 45° gedreht, dann würde keine Ecke die jeweils andere Fläche über die Sichtstrahlen Schneiden.

Dort müsste man u.u. auch noch das Zemtrom vergleichen.
ja stimmt, ich werd das, denk ich, aber so machen, dass wenn keine ecke unter den quadrat liegt, ich meine alte methode verwende. ich brauch nämlich eine reihenfolge, auch wenn sich die quadrate nicht überdecken. die ist ja soweit dann korrekt.

lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Im Raum: Quadrat verdeckt teilweise Quadrat?

Beitrag von DarkDragon »

Tiefenpuffer wär doch am besten und am einfachsten.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
D.J.Peters
Beiträge: 87
Registriert: 28.11.2010 13:07
Computerausstattung: P4 2x3.2GKz.1GB WIXP 32Bit NVIDEA GT240 1GB DDR3, AMD XP 1.8GHz Linux 32Bit NVIDEA GT240 TIi3200
Wohnort: Germany
Kontaktdaten:

Re: Im Raum: Quadrat verdeckt teilweise Quadrat?

Beitrag von D.J.Peters »

In Software 3D nimmt auch gerne die Flächennormale um zu bestimmen ob eine Fläche vom Betrachter/Kamera her weg zeigt.
Wenn man dann sowiso schon alle Flächennormalen hat dann kann man die verbleibenden sichtbaren Flächen auch an Hand
der Normalen der Tiefe nach sortieren und von hinten nach vorne Zeichnen.

Da das Dot Produkt zwischen Flächennormale und einer gedachten Lichtquelle dem Cosinus entspricht
kannst Du die Flächennormale auch prima zum Bestimmen der Helligkeit einer Fläche verwenden
das sieht dann noch plastischer im Raum aus.

Einen Z-Buffer bei Software Rendering braucht man eigentlich "nur" wenn es sich wirklich
um durchdringende Flächen handelt (welche sich nicht so einfach der Tiefe nach sotieren lassen)
aber das trifft ja bei dem Zauberwürfel eher nicht zu.

Aber wie immer; es führen viele Wege nach Rom.

Sollte etwas unklar sein dann Frage ruhig nach.
Ich habe den ganzen 3D Software Kram "noch" abrufbar im Kopf.
(Raytracer, Texturemapping, Stencilshadow, Radiosity, Photonmapping, Bumpmapping etc.)

Grüsse Joshy
PS. meine vielen Fehler der Rechtschreibung auf dem Forum könnt Ihr gerne ignorieren.
Riacon
Beiträge: 61
Registriert: 21.01.2008 09:40

Re: Im Raum: Quadrat verdeckt teilweise Quadrat?

Beitrag von Riacon »

die schwarzen flächen in einem zauberwürfel liegen doch immer im innern, egal wie der würfel verdreht ist und schauen immer höchstens teilweise nach draußen. also erst die schwarzen flächen zeichnen, dann den rest
pb 4.51 win7 64
Antworten