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

1

09.05.2010, 19:13

Environment Mapping

Hallo zusammen,
Ich versuche momentan ein Model eines Flugzeuges mit einer Environment Map zu texturieren aber wie bewerkstellige ich das?
Ich hab schon hier im Forum gefunden, dass man es mit Effekten schaffen kann. Das habe ich versucht aber erfolglos.
Könnte mir das jemand bitte genauer erklären.
Und so einfach wie im Beispiel aus dem Buch ist es ja nicht:
Einfach die Textur einsetzten und Texturschichtstates setzten und fertig.
Oder ich mach da etwas falsch.
Ich habe auch schon versucht auf den Effekt des Models zuzugreifen und die Textur zu verändern aber er nimmt keine CubeMaps an.

Also nochmal alles auf den Punkt gebracht:
Ich habe ein Model, das ich mit einer Environment Map überziehen möchte.

mfg

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

2

09.05.2010, 19:29

Auf der CD im Buch ist doch ein Beispiel wo es gemacht wird. Außerdem stehts ja auch im Buch genau drin was für Renderstates du setzen musst usw. Wo ist also genau das Problem?

3

09.05.2010, 19:39

Ich habe es genau wie es im Buch steht versucht aber in diesem Teil des Buches wurde noch nicht mit der Engine gearbeitet.
Und wenn man mit der Engine arbeitet, wird für das Model immer eine Effekt Datei generiert.
Die könnte vielleicht verhindern, dass man eine Textur benutzt.
(Auf dem ganzen Model ist keine Textur)
Mein Problem ist, dass ich so gut wie keinen Ansatz weiß wie ich weiter daran gehen soll.
Das mit den Effektdateien schaff ich nicht. Scheiben verspiegeln

Kennt ihr eine Möglichkeit einfach auf ein Model eine Environment Map zu machen?

mfg

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

4

09.05.2010, 23:18

Ich habe auch eine Weile gebraucht, um das hinzubekommen, habe es dann aber geschafft: Du kannst in eine Effektdatei das schreiben, um Environment-Mapping zu erzeugen:

C-/C++-Quelltext

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
DWORD NumTextures = 1;
STRING  Texture1Filename    = "UserDefined";
DWORD   Texture1Type        = 2; // 1: 2D-Textur; 2: Würfel; 3: Volumen
DWORD   Texture1ColorKey    = 0x00000000;
TEXTURE Texture1;
float4x4    MatrixTransform = {1.0f, 0.0f, 0.0f, 0.0f,
                                0.0f, 1.0f, 0.0f, 0.0f,
                                0.0f, 0.0f, 1.0f, 0.0f,
                                0.0f, 0.0f, 0.0f, 1.0f};


TECHNIQUE T1
{
    PASS P1
    {
        Texture[0]          = <Texture1>;

        // Es gibt keine Textur - Farbe kommt aus der Streufarbe!
        // Wenn Sie doch eine benutzen, ändern Sie "SelectArg2" in "Modulate" um!
        ZWriteEnable        = False;
        AlphaBlendEnable    = True;
        SrcBlend            = SrcAlpha;
        DestBlend           = InvSrcAlpha;
        BlendFactor         = 150;
        BlendOp             = Add;
        
        ColorOp[1]          = Modulate;
        ColorArg1[1]        = Diffuse;
        ColorArg2[1]        = Current;
        TexCoordIndex[1]    = 0;
        TexCoordIndex[0]    = CameraSpaceReflectionVector;
        TextureTransformFlags[0]    = Count3;
        TextureTransform[0] = <MatrixTransform>;

        // Es scheint keine Opazitätstextur zu geben!
        // Wenn Sie doch eine benutzen, ändern Sie "SelectArg2" in "Modulate" um!
        AlphaOp[0]          = SelectArg2;
        AlphaArg1[0]        = Texture;
        AlphaArg2[0]        = Current;

        // Materialeinstellungen
        MaterialDiffuse     = {1.000f, 1.000f, 1.000f, 0.25f};
        MaterialAmbient     = {0.898f, 0.898f, 0.898f, 0.000f};
        MaterialEmissive    = {0.000f, 0.000f, 0.000f, 0.000f};
        MaterialSpecular    = {0.016f, 0.016f, 0.016f, 0.000f};
        MaterialPower       = 11.000f;

        SpecularEnable      = True;
    }
}

Das ist eine Effekt-Datei, die ich in meinem Spiel Breakanoid 2 (siehe meine Website) verwende, um das Spielfeld mit Environment-Mapping (und auch mit Alpha-Blending) zu erzeugen. Ich habe einfach ein Modell mit dem Tribase-Hilfsprogram eingelesen und den Effekt entsprechend verändert. Texture[0] ist dabei die Environment-Textur und MatrixTransform muss im Programm auf die Transformationsmatrix gesetzt werden.

5

10.05.2010, 15:58

Vielen Danke.
Das sieht sehr viel versprechend aus.
Ich werd es nachher direkt einmal aus probieren.

mfg

//Edit: Hat alles super geklappt. Danke ;)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ahhhilfe« (10.05.2010, 16:22)


Werbeanzeige