Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

1

23.03.2007, 19:30

Matrix zum Spieglen an einer Ebene

Hi.
Weiß jemand wie man eine Matrix erstellt, welche es ermöglicht an einer Ebene zu spiegeln? In meinen konkreten Fall würde ich gerne an der ebene y=10 spiegeln.
Sry wenn ich mich irgendwo falsch oder missverständlich ausgedrückt hab.

Phili

unregistriert

2

23.03.2007, 19:51

also ich wüsst wie du eine machen kannst:
1. Umrechnen ins Lokale Koordinatensystem der Ebene
2. Skalierung der y-Achse mit -1
3. Zurückrechen aus dem Lokalen Koordiantensystem

Mit umrechnen in das lokale Koord. der Ebene mein ich natürlich XAchse=Stützvektor1 YAchse =Normalenvektor ZAchse=Stützvektor2

geht aber warscheinlich auch einfacher

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

3

23.03.2007, 20:07

Re: Matrix zum Spieglen an einer Ebene

Zitat von »"Wümpftlbrümpftl"«

In meinen konkreten Fall würde ich gerne an der ebene y=10 spiegeln.

y' = 20 - y ?
[size=7]Wahrscheinlich kapier ich garnicht um was es hier eigentlich geht, hehe[/size]
"Have you tried turning it off and on again?"

  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

4

23.03.2007, 20:23

@ Phil
hmm ja du hast recht so funktionierts.... aber es kommt nicht raus was ich haben will...
Ich wollt mich jetzt doch mal an Spieglungen für mein Wasser heranwagen. Nunja und dazu dacht ich mir ich spiegle die Landschaft einfach an der Wasserebene, rendere es auf eine Textur und babs per Eye-Linear-Texturemapping aufs Wasser.

Phili

unregistriert

5

24.03.2007, 13:23

naja, wenn dus wirklich nur dafür brauchst kannst du natürlich super die Methode von Chase anwenden...
was funktioniert denn ncith?

  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

6

25.03.2007, 09:00

Also wenn ichs mach wie du es gesagt hast, dann kann ich in meine Landschaft von oben reinschaun..... aber ich glaub ich mach da grundsätzlich was verkehrt. Zerbrecht euch jetzt lieber doch nicht den Kopf über meine Unfähigkeit :D ... ich schau mir das jetzt mal lieber nochmal von grundauf an.
Trotzdem danke für die Infos :)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

25.03.2007, 09:30

btw, es gibt auch ne funktion D3DXMatrixReflect() ;)
und ein sample im dxsdk das wasser mit dem stencil buffer macht. den teil mit terrain an ebene spiegeln kannst du evtl. dort abschauen. was das "von oben reinschauen" angeht...hast du vielleicht vergessen beim verkehrten terrain den cullmode auf die entgegengesetzte richtung zu stellen?

Phili

unregistriert

8

25.03.2007, 13:23

Außerdem sollte nur der teil der Landschaft gespiegelt werden, der auch wirklich über dem Wasser liegt...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

25.03.2007, 13:32

ja, das macht man mit ner clipplane (Device->SetClipPlane() etc)

  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

10

25.03.2007, 16:29

Danke! :)

Mit der D3DX Funktion spiegelts jetzt richtig.
Nur beim Clipping mach ich wohl noch was falsch. Ich hab das jetzt so geschrieben:

C-/C++-Quelltext

1
2
D3D->SetClipPlane(0, gve::Plane(gve::Vector3(0.0f, -1.0f, 0.0f), 10.0f));
D3D.SetRS(D3DRS_CLIPPLANEENABLE, D3DCLIPPLANE0);

Werbeanzeige