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

big_muff

Alter Hase

  • »big_muff« ist der Autor dieses Themas

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

1

12.03.2004, 18:21

Materialien setzten: Was sind für Einstellungen nötig

Ich will in meinem ganzen Programm ein Material anwenden. Allerdings habe ich vorher noch nie mit Materialien gearbeitet. Also will ich wissen was für Einstellungen nötig sind, um das Material anzeigen zu lassen. Mein Würfel beleibt einfach weiss. Ich habe auch schon in der DirectX-Doku gesucht und habe folgende RenderStates gefunden die ich dann auch mal eingestellt habe:

Quellcode

1
2
3
4
D3DDevice->SetRS(D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_MATERIAL);
D3DDevice->SetRS(D3DRS_SPECULARMATERIALSOURCE, D3DMCS_MATERIAL);
D3DDevice->SetRS(D3DRS_AMBIENTMATERIALSOURCE, D3DMCS_MATERIAL);
D3DDevice->SetRS(D3DRS_EMISSIVEMATERIALSOURCE, D3DMCS_MATERIAL);


Der Würfel weigert sich jedoch weiterhin hartnäckig sein weiss abzugeben, ohne dabei auch nur ein bisschen zu erröten. :)

Gibt es noch andere RenderStates oder muss ich sonst was einstellen, damit das Material funktioniert?

PS: SetMaterial() habe ich natürlich gemacht, Lichter sind noch keine vorhanden, aber RenderState D3DRS_LIGHTING ist FALSE und die ambiente und diffuse Farbe sollte man doch auch so sehen. Keine der 4 Farben ist weiss. (Nur damit es keine Missverständnisse gibt ;) )
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.

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

2

12.03.2004, 18:39

Naja, normalerweise brauchst du viele der States gar nicht explizit einstellen...
Ähh...zeig mal dein Material (D3DMATERIAL9) her, wie es aussieht!
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

big_muff

Alter Hase

  • »big_muff« ist der Autor dieses Themas

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

3

12.03.2004, 19:19

Also jetzt sollte ich mal die Anwendung erklären.

Ich programmiere einen Modelleditor. In diesem gibt es einen Materialmanager. In diesem hat es ein Testfenster das das aktuelle Material auf einem Würfel zeigt.

Das heisst der Benutzer kann alle Eigenschaften des Materials selbst festlegen und es gibt kein bestimmtes Material.

Ich habe mal vor dem SetMaterial()-Aufruf alle Werte des Materials in eine Textdatei geschrieben:

Quellcode

1
2
3
4
5
Diffuse: RGBA(1.000000, 0.000000, 0.000000, 0.874510)
Ambient: RGBA(0.000000, 0.000000, 1.000000, 0.698039)
Specular: RGBA(0.000000, 0.501961, 0.501961, 0.909804)
Emissive: RGBA(0.000000, 0.250980, 0.501961, 0.588235)
Power: 0.341176


Aber eigentlich sollte das keine Relevanz für das Problem haben, denn das Material kann eigentlich beliebige Werte enthalten (natürlich nur zwischen 1 und 0 ;) )
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.

4

12.03.2004, 19:46

Das Material beschreibt die Reflexionseigenschaften des Objektes. Also was und wie das Objekt Licht reflektiert. Daher finde ich das diese Wortwahl nicht grad die beste ist. Aber egal.

Ohne eine vorhandene Lichtquelle wird D3D auch nicht das Material auf den Würfel anwenden. Wieso auch. Es ist ja keine Quelle dessen Licht man reflektieren könnte.

Das Ambiente Licht wird ebenfalls nicht ohne Aktives Licht benutzt.

Deine Renderstates brauchst du nicht setzen. Diese sind nur dafür da damit man trotz gesetzem Material sagen kann, das nächste Objekt soll nicht das Material verwenden sonden seine Vertexfarben und natürlich wieder andersrum ;)
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

12.03.2004, 20:59

Die "Emissive Farbe" wird auch ohne Lichter verwendet.
Aber viel Sinn macht das auch nicht.

big_muff

Alter Hase

  • »big_muff« ist der Autor dieses Themas

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

6

12.03.2004, 21:32

Freudennachricht: Juhu er ist nicht merh Weiss :hop:

Aber jetzt zeigt es nur die emissive Farbe an :hobbi:

Von den anderen Farbanteilen fehlt jede Spur. Vielleicht hat das was mit dem Licht zu tun. Ich poste das mal:

Quellcode

1
2
3
4
5
6
7
8
9
10
Light.Type=D3DLIGHT_POINT;
Light.Diffuse.r=Light.Diffuse.g=Light.Diffuse.b=1.0f;
Light.Specular.r=Light.Specular.g=Light.Specular.b=1.0f;
Light.Ambient.r=Light.Ambient.g=Light.Ambient.b=1.0f;
Light.Diffuse.a=Light.Specular.a=Light.Ambient.a=1.0f;
Light.Position=Vector3(1.0f, 2.0f, -2.0f);
Light.Range=10.0f;
Light.Attenuation0=0.0f;
Light.Attenuation1=0.5f;
Light.Attenuation2=0.0f;
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.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

7

12.03.2004, 22:46

Ambient ist viel zu hoch, setz das mal auf 0.3 (für r,g,b). Wie gross ist Dein Würfel? Wenn z.B. die Glühbrine im Würfel ist, nutzt Sie Dir (ausser dem Ambienten :/ ) nicht viel.

big_muff

Alter Hase

  • »big_muff« ist der Autor dieses Themas

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

8

13.03.2004, 13:00

Quellcode

1
2
3
4
5
6
7
8
Cube[0].Position=Vector3(1.0f, 1.0f, -1.0f);
Cube[1].Position=Vector3(-1.0f, 1.0f, -1.0f);
Cube[2].Position=Vector3(-1.0f, 1.0f, 1.0f);
Cube[3].Position=Vector3(1.0f, 1.0f, 1.0f);
Cube[4].Position=Vector3(1.0f, -1.0f, -1.0f);
Cube[5].Position=Vector3(-1.0f, -1.0f, -1.0f);
Cube[6].Position=Vector3(-1.0f, -1.0f, 1.0f);
Cube[7].Position=Vector3(1.0f, -1.0f, 1.0f);


Das sollte doweit OK sein, denke ich.

Mit Ambient r,g,b=0.3f ändert sich auch nichts.
Man sieht wirklich nur die emissive Farbe auf dem Würfel.

PS: Wie ich oben schon gesagt habe, arebeite ich hier zum ersten mal mit Materialien. Es könnte sich also um einen Anfängerfehler handeln. Etwas ganz grundsätzliches, das ich vergessen habe.
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.

big_muff

Alter Hase

  • »big_muff« ist der Autor dieses Themas

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

9

16.03.2004, 18:54

Hallo?

Bitte helft mir! Oder weis hier niemand an was das liegen könnte?
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.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

10

16.03.2004, 19:29

Die Koordinaten sing gut - die Glühbirne ist draussen. Du hast die Lampe enabled ? Die siehst auf die beschienene Seite des Würfels?

Werbeanzeige