AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DirectX + Licht

Offene Frage von "Florian H"
Ein Thema von Florian H · begonnen am 7. Jun 2003 · letzter Beitrag vom 18. Jul 2003
Antwort Antwort
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#1

DirectX + Licht

  Alt 7. Jun 2003, 18:13
Hi!

Ich habe mich mit Hilfe des Tutorials von http://www.ieap.uni-kiel.de/surface/...i-directx.html in DirectX 8.1 eingearbeitet...

Leider wird in diesem Tut ja nicht die Verwendung von Licht beschrieben, drum habe ich versucht, das ganze mit dem SelfDX-Tutorial von http://www.minfos.de/SelfDXD/index.html "nachzurüsten"!

Ich habe ewig rumprobiert aber es geht nicht: ich sehe kein Licht!

Anbei der Code - villeicht findet ja einer gleich einen typischen Fehler oder so...ich bin echt verzweifelt, seit 2 Tagen mach ich da dranrum :-/


Viele Grüße
Florian
Angehängte Dateien
Dateityp: pas d3dform.pas (16,0 KB, 16x aufgerufen)
Florian Heft
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#2
  Alt 8. Jun 2003, 14:59
Ich hatte jetzt ganz ehrlich keine Lust, diesen ellenlangen Code durchzuarbeiten, aber wenn ich mich nicht irre, müsste der Fehler hier liegen:
Delphi-Quellcode:
SetTextureStageState(0, D3DTSS_ColorOP, D3DTop_Selectarg1); // Wie wird die Farbe verarbeitet
SetTextureStageState(0, D3DTSS_ColorArg1, D3DTA_Texture); // Farbe nur von der Textur nehmen
Denn wenn die Farbe nur von der Textur kommt, wo bleibt dann das Licht?
Also:
Delphi-Quellcode:
SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE); // Modulieren = multiplizieren
SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); // Farbe von der Textur nehmen
SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE); // Farbe aus dem Diffuse nehmen, bei automatischer Beleuchtung fließt hier außerdem nämlich das Licht ein.
Ich würde dir jetzt empfehlen, den Vertices die Diffuse-Farbe weiß zu geben, also $ffffff. Ansonsten scheint dein Code alles zu enthalten, was für Beleuchtung notwendig ist.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#3
  Alt 13. Jun 2003, 10:26
Hi!

Jetzt ist die Textur meines Würfels immerhin lila (kA wieso...)

Hm, aber das licht oder die MAterialeigenschaften wirklen sich da net drauf aus...und wie ich das lila ändere weiß ich auch nicht - hab nirgendwo was mit Diffuse-Licht-Farbe gefunden...
Florian Heft
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#4
  Alt 13. Jun 2003, 11:02
Na, uns fehlen doch nicht etwa ein paar Grundlagen?

Delphi-Quellcode:
    const
      D3D8T_CustomVertex = D3DFVF_XYZ or D3DFVF_Diffuse or D3DFVF_TEX1; // Vertextyp

   NormCube : TCube = (
    (x :-1.0; y :-1.0; z :-1.0; color : $0000FF00; tu : 0; tv : 1), // Vorn
    (x :-1.0; y : 1.0; z :-1.0; color : $000000FF; tu : 0; tv : 0),
    (x : 1.0; y : 1.0; z :-1.0; color : $000000FF; tu : 1; tv : 0),
D3D8T_CustomVertex ist die Vertexdeklaration, und die besagt, dass jeder Vertex eine Diffuse-Farbe enthält. In diesem Fall heißt sie color. Folglich sind diese Farben die, die du auf $ffffffff setzen solltest.

Delphi-Quellcode:
  SetPointLight(1.0, 0.0, 1.0,
                0.0, 1.0, 0.0,
                1.0, 0.0, 0.0,
                1 , 1 , 1 ,
                100, myVec, 1);
RGB(1.0, 0.0, 1.0) = Pink, abgedunkelt also lila. Vielleicht hier einfach mal weiß oder so einsetzen? Jedenfalls solltest du vielleicht besser mit etwas einfacherem Code anfangen. Zum Beispiel brauchst du kein Material, denn das Standardmaterial hat Diffuse weiß und alle anderen schwarz. Ich würde dir empfehlen, mal die Beispiele des DirectX SDK bzw. die dort enthaltenen Tutorials auszuprobieren. Sind zwar nicht in Delphi, aber vielleicht trotzdem etwas einfacher.

Da du allerdings ohnehin mit SelfDXD arbeitest, könntest du dir auch das dortige Beispielprogramm zum Thema Licht und Material näher anschauen. Da kannst du nämlich mit den einzelnen Werten experimentieren und folglich evtl. deinen Fehler finden.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#5
  Alt 13. Jun 2003, 11:10
Hi!

Die Werte von Color in der V.-Def. hab ich alle auf FFFFFF gesetzt!

Das bei SetPointlight hab ich auch schon probiert, ändert alles nix!

Und das mit dem Material ist nur drin weil ich geddachte habe das evtl. ohne Material kein Licht kommt (in der Verzweiflung kommt man auf sowas )

gruß und danke für deine Hilfe

f.h.
Florian Heft
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#6
  Alt 6. Jul 2003, 11:30
boah, jetzt hab ichs rausgefunden....es klingt unglaublich, aber es geht, sobald ich in der Zeichenroutine der Variable w_rotY (die keine funktion mehr hat) einen Wert zuweise, und sei es w_rotY := 1; - Dann geht es!!!

Ich versteh absolut nicht, wie das zusammenhängt...
Florian Heft
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#7
  Alt 6. Jul 2003, 14:13
Jetzt hab ich gleich wieder ein neues Problem: Sobald ich mit dem Mauszeiger ausserhalb der Form bin, wirkt mein (Point-) Light nimmer, die Textur erscheint wieder
Woran liegt das?
Florian Heft
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#8

Re: DirectX + Licht

  Alt 12. Jul 2003, 16:29
niemand weiß es?

ICh kann auch die Farbe des lichtes nicht ändern....irgendwie stimmt da was net...

----------------------------------
Hat sicher erledigt! arbeite jetzt ein anderes tut durch (selfDX)

WIE BEKOMME ICH DAS FRAGEZEICHEN WEG?!?
Florian Heft
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#9

Re: DirectX + Licht

  Alt 13. Jul 2003, 16:01
Sorry für das inzwischen 5. Post hintereinander von mir aber die Dinge haben sich wieder komplett geändert und ich hab ein völlig neues Problem!

Und zwar hab ich jetzt nochmal von Vorne angefangen mit nem 3D-Progjekt und zwar diesmal mit Hilfe des SelfDXD-tutorials!
Lief auch alles recht angenehm (für DX ) bis eben wieder zum Licht...ich hab alles probiert was mir eingefallen ist und was ich gefunden habe, aber es nützt nichts: Ich kann dem Licht keine Farbe geben bzw. es ändert nichts wenn ich eine Farbe zuweise!

Im anhang hab ich einmal das komplette Projekt inkl. der Headerdateien und einen Screenshot, der eine Kugel mit Schachbretttextur zeigt, bei der aber nur ein kleiner Teil beleuchtet ist, der ist schwarz/weiß (eben wie die textur) und den Rest sieht man nicht, der ist nicht angestrahlt!
Das Licht ist ganz deutlich gefärbt, trotzdem ist alles nur S/W!

was kann ich da tun??


viele grüße und danke für eure Gedult mit mir

florian
Miniaturansicht angehängter Grafiken
mist.jpg   mist.jpg  
Angehängte Dateien
Dateityp: zip projekt.zip (711,1 KB, 17x aufgerufen)
Florian Heft
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#10

Re: DirectX + Licht

  Alt 18. Jul 2003, 12:30
Mensch, gibts hier niemand der sich mit DX auskennt!?
Florian Heft
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz