Autor Beitrag
RedEagel
Hält's aus hier
Beiträge: 8

Win XP
C# und VB.Net (VS.Net 2005 Professional)
BeitragVerfasst: Di 25.07.06 18:48 
Hallo,
ich hab ein Problem mit der Beleuchtung von Texturierten Objekten. (sie werden zwar angezeigt aber so als wenn renderstate.lighting = false währe.
hier ein paar quellcode Ausschnitte:
Mein Objekt (mit Normalen)
ausblenden volle Höhe 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:
private void CreateBox()
        {
            //TOP
            g_v_Box[0].Position = new Vector3(-0.5f0.5f, -0.5f);
            g_v_Box[0].Normal = new Vector3(00, -1);
            g_v_Box[0].Tu = 0//x
            g_v_Box[0].Tv = 0//y

            g_v_Box[1].Position = new Vector3(0.5f0.5f, -0.5f);
            g_v_Box[1].Normal = new Vector3(00, -1);
            g_v_Box[1].Tu = 1;
            g_v_Box[1].Tv = 0;

            g_v_Box[2].Position = new Vector3(0.5f, -0.5f, -0.5f);
            g_v_Box[2].Normal = new Vector3(00, -1);
            g_v_Box[2].Tu = 1;
            g_v_Box[2].Tv = 1;

            g_v_Box[3] = g_v_Box[0];
            g_v_Box[4] = g_v_Box[2];

            g_v_Box[5].Position = new Vector3(-0.5f, -0.5f, -0.5f);
            g_v_Box[5].Normal = new Vector3(00, -1);
            g_v_Box[5].Tu = 0;
            g_v_Box[5].Tv = 1;
            //near
            g_v_Box[6] = g_v_Box[5];
            g_v_Box[6].Normal = new Vector3(0, -10);
            g_v_Box[6].Tu = 0;
            g_v_Box[6].Tv = 0;

            g_v_Box[7] = g_v_Box[4];
            g_v_Box[7].Normal = new Vector3(0, -10);
            g_v_Box[7].Tu = 1;
            g_v_Box[7].Tv = 0;

[......................]

            g_vb_Box = new VertexBuffer(typeof(CustomVertex.PositionNormalTextured), 36, g_device, Usage.WriteOnly, CustomVertex.PositionNormalTextured.Format, Pool.Managed);
            GraphicsStream t_stream = g_vb_Box.Lock(000);
            t_stream.Write(g_v_Box);
            g_vb_Box.Unlock();
        }

Meine Materialien:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
            g_Material.Diffuse = Color.White;
            g_Material.Specular = Color.White;
            g_Material.SpecularSharpness = 15.0f;

            g_device.Material = g_Material;

Mein Licht:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
            g_device.RenderState.Lighting = true;
            g_device.Lights[0].Type = LightType.Directional;
            g_device.Lights[0].Position = new Vector3(5f5f, -3.0f);
            g_device.Lights[0].Direction = new Vector3(0f0f0);
            g_device.Lights[0].Attenuation0 = 100f;
            g_device.Lights[0].Diffuse = Color.LightGray;
            g_device.Lights[0].Range = 0.0f;
            g_device.Lights[0].Update();

und das Rendern
(Texturen)
ausblenden C#-Quelltext
1:
2:
g_device.DrawPrimitives(PrimitiveType.TriangleList, 012);
            g_device.Lights[0].Enabled = true;


Was rauskommt ist im Anhang zu sehen.
Ich währe sehr froh,wenn mir jemand helfen könnte.

Moderiert von user profile iconraziel: C#-Tags hinzugefügt
Einloggen, um Attachments anzusehen!
RedEagel Threadstarter
Hält's aus hier
Beiträge: 8

Win XP
C# und VB.Net (VS.Net 2005 Professional)
BeitragVerfasst: So 30.07.06 18:16 
ok ich habe das problem selbst gelöst (für die dies interessiert:)
bei dem directional light habe ich folgendes geändert:
g_device.Lights[0].Direction = new Vector3(5f, 3f, 7); //(man sieht, dass das licht funktioniert hat nur nicht bemerkt wurde, da es direkt von oben kam.)

dafür habe ich ein weiteres Problem: leider werfen die Objekte keine Schatten ):
hat jemand einen Shader oder eine Idee zur Realisierung von Schatten?
bitte meldet euch dann.

Danke im Vorhinein.