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

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

11

15.07.2004, 08:27

Du musst ihn noch sagen woher das licht kommt:
DWORD dwFactor = VectortoRGBA( &m_vLight, 0.0f );
m_pd3dDevice->SetRenderState( D3DRS_TEXTUREFACTOR, dwFactor );
Das problem dabei ist, dass dadurch immer nur ein licht berechnet werden kann. Auch ist die Farbe unveränderbar.

Anonymous

unregistriert

12

15.07.2004, 12:41

Zitat


Das problem dabei ist, dass dadurch immer nur ein licht berechnet werden kann. Auch ist die Farbe unveränderbar.


Das ist mir sowas von egal, wenn es denn nur einmal gehen würde :D :D
Also wo muss ich denn diesen dwFactor verwenden? Ich muss den ja irgendwie als Operand in ein Texture Stage State packen, aber ich weiß leider nicht wo :( Wie würde denn die States für die Stage 1 in meinem Beispiel nun aussehen?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

13

15.07.2004, 13:05

Quellcode

1
2
3
        m_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_CURRENT);
        m_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLOROP,   D3DTOP_DOTPRODUCT3 );
        m_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG2, D3DTA_TFACTOR );

Anonymous

unregistriert

14

15.07.2004, 17:32

Das habe ich jetzt so, und das kommt dabei heraus:


(Link)


Oben, wo der Würfel etwas dunkler ist, ist das licht - also das Licht verdunkelt den Würfel. Und von Bumpmapping ist da leider keine Spur :( Das sieht auch irgendwie so aus, als würden die Farben da invertiert. Jedenfalls verdunkelt das Licht die Bereiche.

Mein aktueller Code sieht so aus:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Texturen setzen
m_pD3DDevice->SetTexture(0, pRenderset->getTextureDiffuse());
m_pD3DDevice->SetTexture(1, pRenderset->getTextureBump());

DWORD dwFactor = VectortoRGBA( pLight1->vPos , 0.0f );
m_pD3DDevice->SetRenderState( D3DRS_TEXTUREFACTOR, dwFactor );

// Set the color operations and arguments to prepare for bump mapping.
// Stage 0: The base texture
m_pD3DDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
m_pD3DDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
m_pD3DDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );

// Stage 1: The bump map - Use luminance for this example.
m_pD3DDevice->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_DOTPRODUCT3);
m_pD3DDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_CURRENT );
m_pD3DDevice->SetTextureStageState( 1, D3DTSS_COLORARG2, D3DTA_TFACTOR );



Ich hab keine Ahnung wo der Fehler liegt... hat vielleicht noch jemand eine Idee?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

15

15.07.2004, 18:59

Das ist in dem Moveframe sowas mit normalisieren Des Vektor, aber mein Magen ist leer und so kann ich nicht richtig denken ;D .

Anonymous

unregistriert

16

15.07.2004, 22:34

Hm, ja das stimmt der Vektor, der in dem SDK Beispiel dem VectortoRGBA übergeben wird, muss normalisiert sein. Wenn ich die Lichtposition meines Lichtes normalisiere und dann verwende, is der Würfel so gut wie schwarz :(

Langsam glaube ich, es liegt an der Positoin. Diese ist nämlich ist Welt-Koordinaten angegeben, muss ich sie etwa noch umrechnen? Falls ich also den normalisierten Vektor (die Position) des Lichtes im Weltkoordinatensystem nicht verwenden kann, wie und was muss ich dann verwenden?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

17

15.07.2004, 22:45

absolut to relativ......

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

18

16.07.2004, 02:39

rein von der logik her würd ich sagen:

der will den richtungsvektor vom licht haben.
und zwar normalisiert und im model space, wenn nicht in diesem komischen tangent space...

kann auch sein, dass deine vertices noch einen tangent vektor speichern müssen.
wundern würds mich nicht, aber in dem sdk bsp isses glaub ich nicht der fall...

Anonymous

unregistriert

19

16.07.2004, 11:53

Um den Richtungsvektor im Model space zu bekommen, habe ich die Welt-Position des Lichts mit der Invertierten Transformationsmatrix des Models multipliziert, das ganze dann noch normalisiert.

Leider, ratet mal, ohne Erfolg :( Also ich bin mit meinem Latein am Ende, ich weiß nicht mehr was ich sonst noch ausprobieren soll. Also falls nicht jemand noch einen ausschlaggebenden Rat hat, dann werd ich das Bumpmapping Thema jetzt erstmal sein lassen...

adapto

Treue Seele

Beiträge: 147

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

20

16.07.2004, 15:10

also ich versuche auch bumpmapping zu integrieren, aber über vertex shader und ich habe da auch meine schwierigkeiten. das thema ist nicht so ganz einfach.

schau dir mal die seite hier an: http://www.pvrdev.com/pub/PC/doc/f/Bump%…0Comparison.htm

gruss adapto

Werbeanzeige