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

Anonymous

unregistriert

1

29.04.2004, 19:50

Bump Mapping:Änderung der Flussrichtung

Ich hab da ein Problem. Ich würde gerne einen Fluss simulieren. Jetzt hab ich mir die DXSDK 9.0 angeschaut und bin dann auf das Programm BumpWaves gestoßen und ich finde, dass sich dies am besten (und einfachsten) eignet. Jetzt weiß ich aber nicht, wie man aus der kreisförmigen Wasserbewegung eine Flussrichtung hinbekommt. Die Berechnung steht (glaube ich zumindest) in diesem Codeabschnitt. (aus dxsdk):

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HRESULT CMyD3DApplication::FrameMove()
{
    // Setup the bump matrix
    // Min r is 0.04 if amplitude is 32 to miss temporal aliasing
    // Max r is 0.16 for amplitude is 8 to miss spatial aliasing
    FLOAT r = 0.04f;

    m_matBumpMat._11 =  r * cosf( m_fTime * 9.0f );
    m_matBumpMat._12 = -r * sinf( m_fTime * 9.0f );
    m_matBumpMat._21 =  r * sinf( m_fTime * 9.0f );
    m_matBumpMat._22 =  r * cosf( m_fTime * 9.0f );

    
    return S_OK;
}


Es wäre net, wenn mir jemand weiterhelfen könnte.
Jo

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

29.04.2004, 20:19

Nee, das hat damit nix zu tun.
Schau mal unter IDirect3DDevice9::SetTransform und dann D3DTS_TEXTURE0 bis D3DTS_TEXTURE7.

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

3

30.04.2004, 17:26

Was für ein Zufall!!!!!!!!

Das gleiche hatte ich auch vor (nur mit einem See) und bin vor ca. 2 Tagen auf das BumpWaves Sample gestossen ;D

Allerdings ist der für dich relevante Abschnitt dieser hier:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Lock the surface and write in some bumps for the waves
    D3DLOCKED_RECT d3dlr;
    psBumpMap->LockRect( 0, &d3dlr, 0, 0 );
    CHAR* pDst = (CHAR*)d3dlr.pBits;
    CHAR  iDu, iDv;

    for( DWORD y=0; y<dwHeight; y++ )
    {
        CHAR* pPixel = pDst;

        for( DWORD x=0; x<dwWidth; x++ )
        {
            FLOAT fx = x/(FLOAT)dwWidth - 0.5f;
            FLOAT fy = y/(FLOAT)dwHeight - 0.2f;

            FLOAT r = sqrtf( fx*fx + fy*fy );

            iDu  = (CHAR)( 64 * cosf( 300.0f * r ) * expf( -r * 5.0f ) );
            iDu += (CHAR)( 32 * cosf( 150.0f * ( fx + fy ) ) );
            iDu += (CHAR)( 16 * cosf( 140.0f * ( fx * 0.85f - fy ) ) );

            iDv  = (CHAR)( 64 * sinf( 300.0f * r ) * expf( -r * 5.0f ) );
            iDv += (CHAR)( 32 * sinf( 150.0f * ( fx + fy ) ) );
            iDv += (CHAR)( 16 * sinf( 140.0f * ( fx * 0.85f - fy ) ) );

            *pPixel++ = iDu;
            *pPixel++ = iDv;
        }
        pDst += d3dlr.Pitch;
    }
    psBumpMap->UnlockRect(0);


Aus der Funktion:

Quellcode

1
LPDIRECT3DTEXTURE9 CMyD3DApplication::CreateBumpMap( DWORD dwWidth, DWORD dwHeight, D3DFORMAT d3dBumpFormat)



Ich denke daraus sollte man mit ein bisschen Nachdenken auf die Lösung kommen (Oder du machst das ganze mit einer Bitmap, das ist wesentlich einfacher
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

Anonymous

unregistriert

4

30.04.2004, 19:48

Danke

Danke. Ich werds mal versuchen.

Werbeanzeige