Raum / Wand Beleuchtung

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Raum / Wand Beleuchtung

    Hallo,
    bitte um Hilfe bei GM8. Ich möchte gerne, dass meine Wände im Raum
    etwas Licht bekommen. Habe mit:

    Quellcode

    1. d3d_set_lighting(enable) d3d_light_define_point(obj_wall12,2,2,2,spr_wall12,col_white) d3d_light_enable(obj_wall12,enable)

    probiert. (Wobei obj_wall12 meine Wand ist, und spr_wall12 Sprite ist.)
    Leider funzt nicht. Habe Falschen Parameter? Bzw. weis ich nicht genau wohin mit dem Code
    Für Ihre Hilfe werde ich mich sehr freuen.
    Gruß
    Georg
  • Hallo,
    erstmal Danke für die rasche Antwort – wooow!
    Ehrlich gesagt, habe mir die 3D-Tutorials schon mal angeschaut („studiert“)
    Leider! – es hat mir nicht weiter geholfen; - weil ich dort keine Tipps herausfiltern könnte,
    welcher mir meine Wände (bzw. den Raum) mit licht versehen.
    „Hänge“ jetzt an (bestimmt bekannt) dem CaveBumpa – Beispiel.
    Nun auch dass hilft mir nicht; - meine Wände (aus GM Tutorial - First Person Shooter) mit Licht versehen.

    ?(

    Gruß
    Georg
  • Ich bin zwar kein experte mit d3d aber ich aus den ersten Zeilen von Moolt Tutorial mal das man erst die lichtberechnung mit:

    GML-Quellcode

    1. d3d_set_lighting(true);

    aktivieren muss und dann schaut man in der hilfe gm-d.de/help die ein paar netten Leute übersetzt haben und sucht nach zB. d3d
    Nun muss man nurnoch "Licht" auswählen und schon bekommt man unter anderen dashier:
    Um Licht nutzen zu können, musst du Lichter definieren. Es gibt zwei Arten von Lichtern: gerichtete Lichter (Lichter, die nur in eine Richtung strahlen, wie z.B. ein Scheinwerfer) und Punktlichter (wie eine Glühbirne). Lichter haben eine Farbe. (Es werden nur diffuse lichter unterstützt.) Die folgenden Funktionen existieren, um Lichter zu definieren und zu benutzen:
    d3d_light_define_direction(ind,dx,dy,dz,col) Definiert ein gerichtetes Licht. ind ist der Index des Lichtes (eine kleine positive Ganzzahl). (dx,dy,dz) ist die Richtung des Lichts, col die Farbe (oft c_white). Diese Funltion aktiviert das Licht nicht.
    d3d_light_define_point(ind,x,y,z,range,col) Definiert ein Punktlicht. ind ist der Indes des Lichtes (eine kleine positive Ganzzahl). (x,y,z) ist die Position des Lichtes. range gibt an, wie weit das Licht scheint. Die Intensität des Lichtes wird über diese Strecke abnehmen. col ist die Farbe des Lichtes. Diese Funktion aktiviert das Licht nicht.
    d3d_light_enable(ind,enable) Aktiviert oder deaktiviert das Licht mit dem Index ind.
    War das wirklich so schwer???
    EDIT:Oh entschuldige soweit warst du ja schon.

    GML-Quellcode

    1. d3d_set_lighting(true);
    2. d3d_light_define_point(1,2/*xpos/*,2/*ypos/*,2/*zpos/*,20/*Hier muss glaube ich ne zahl rein/*,col_white);
    3. d3d_light_enable(1,true)

    So sollte dein code funktionieren. Bei enable erwartet der gm immer ein klares ja(true) oder nein(false).
    Und mit index ist wie ich aus der hilfe schließe eine zahl gemeint mit der man das licht nachher ansprechen kann.
    Sry wenn fehler drinne sind.

    Edit2:Warum zeigt das Forum meine komentare in schwarz an????
    Ich will wie mein Opa im Schlaf sterben, nicht heulend und schreiend wie sein Beifahrer.





    I am a in the GM Quiz! :heul: :vogel:

    :gmlove:

    xD

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von miau ()

  • Hallo,
    ich habe es gerade ausprobiert. Es „funz“ noch nicht so wie ich es gerne haben möchte –
    ABER! :
    Vielen Dank an User miau.
    Du hast mir sehr geholfen die API (wenn man es so nennen darf) interpretieren zu können!
    Die Hilfe (?API) finde ich jedoch etwas bearbeitungsbedüftig.
    Z.B. im Kapitel Licht;
    d3d_set_shading(smooth)
    Was ist smooth? – ok – herausgefunden – ein boolean Wert also true oder false wird als Parameter erwartet. – Oder:
    d3d_light_define_point(ind,x,y,z,range,col)
    Der Min. / Max. Wert des „range“ Parameters ist nicht bekannt gemacht? – keine Angaben in der Hilfe.
    Also, - selber herausfinden. Oder habe ich was übersehen?
    Die Hilfe ist selbstverständlich SUPER!!!!! Jedoch etwas präzise Funktionsbeschreibung wäre meine Meinung nach etwas mehr Klarheit mit sich bringen.

    Erstmal jedoch DANKE für Ihre Antworten. :thumbsup:

    Gruß
    Georg
  • Dick-Software Studios schrieb:

    An die 3DExperten hier:
    Kann des vielleicht sein das der ne viel zu große Wand hat und des deswegen net gscheit beleuchtet is?

    Sogar höchstwahrscheinlich. Beleuchtet werden nur die Vertices (Punkte), nicht die Faces (Flächen). Zwischen diesen Punkten wird ein Verlauf der Helligkeit / Farbe erzeugt. D.h. wenn du eine lange Wand hast, deren Mitte beleuchtet wird, so wird sie maximal die Helligkeit erhalten, die bei den Eckpunkten ankommt.
  • Hi,
    nein – „der hat keine große Wände“
    bei:
    d3d_light_define_point(1,0,0,0,999999,c_white);
    Sieht mein Test wie unten abgebildet:


    Bei:
    d3d_light_define_point(1,0,0,0,500,c_white);
    Ist alles fast schwarz.
    Momentan teste ich jedoch ogre.
  • Naja, wenn du ein Pointlight auf die Position 0, 0, 0 setzt, ist es normal, dass bei weiter entfernten Wänden kein Licht mehr ankommt. Probier mal im Step Event die Koordinaten des Spielers auf die Lichtquelle zu übertragen, statt 999.999 px als Range zu nehmen. Abhängig ist das Ganze natürlich vom Größenverhältnis.
  • mauge schrieb:

    Dick-Software Studios schrieb:

    An die 3DExperten hier:
    Kann des vielleicht sein das der ne viel zu große Wand hat und des deswegen net gscheit beleuchtet is?

    Sogar höchstwahrscheinlich. Beleuchtet werden nur die Vertices (Punkte), nicht die Faces (Flächen). Zwischen diesen Punkten wird ein Verlauf der Helligkeit / Farbe erzeugt. D.h. wenn du eine lange Wand hast, deren Mitte beleuchtet wird, so wird sie maximal die Helligkeit erhalten, die bei den Eckpunkten ankommt.

    Kann es sein dass dies mit den Normals zutun hat?
    Hab gelesen das diese bei den GM primitives nicht ganz korrect sind.


    Vieleicht machen diese Skripte einen Unterschied:
    gmc.yoyogames.com/index.php?showtopic=401229

    Hab sie aber noch nie benutzt :/

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Nein, das hat nichts mit den Normalen zu tun. Die Berechnung kann nur an den Punkten stattfinden, weil nur diese Punkte die benötigten Informationen enthalten (Koordinaten, Farbwerte, ...). Die Flächen stellen nur optische Verbindungsstücke zwischen diesen Punkten dar existieren quasi nur in der gerenderten Szene. Somit können sie auch keine solchen Informationen transportieren. Allein die Vertices bestimmen, wo texturierte Flächen mit welchen UV-Koordinaten usw. gezeichnet werden.

    Die verlinkten Scripts helfen da auch nicht, weil sie damit schlichtweg nichts zu tun haben. Da hilft nur eine höhere Anzahl an Polygonen. Solange man es nicht total übertreibt und auch andere Aspekte beachtet (wie z.B. entferntere Objekte weniger detailreich darstellen und/oder deaktivieren usw.), packt der GM das schon. Aber das ist eine andere Geschichte. :)
  • Ich habe ein paar weitere Tests gemacht.
    Möchte mich nicht darüber äußern.
    Eine Frage habe ich jedoch:
    Wenn man den 3D Modus aktiviert, werden „irgendwo“ – logo – im GM Code die Lichtverhältnisse implementiert. Das Aussehen /Raum/Sprites/Wände…werden mit den default Werten beleuchtet.
    Sobald man die d3d_set_lighting(enable) Aktiviert (auf true setzt), ist es dem Programmierer überlassen – sich um alles selber zu kümmern. OK.
    Meine Frage:
    Wo finde ich den Code „Schnipsel“ für die (Licht) default Werte?
    (also bevor man die d3d_set_lighting(enable) Funktion aktiviert)

    Gerade in der Hilfe gelesen:
    Game Maker ist und bleibt ein Programm um 2-Dimensionale Spiele zu erstellen.
    Stimme zu.
  • mauge schrieb:

    Nein, das hat nichts mit den Normalen zu tun. Die Berechnung kann nur an den Punkten stattfinden, weil nur diese Punkte die benötigten Informationen enthalten (Koordinaten, Farbwerte, ...). Die Flächen stellen nur optische Verbindungsstücke zwischen diesen Punkten dar existieren quasi nur in der gerenderten Szene. Somit können sie auch keine solchen Informationen transportieren. Allein die Vertices bestimmen, wo texturierte Flächen mit welchen UV-Koordinaten usw. gezeichnet werden.

    Die verlinkten Scripts helfen da auch nicht, weil sie damit schlichtweg nichts zu tun haben. Da hilft nur eine höhere Anzahl an Polygonen. Solange man es nicht total übertreibt und auch andere Aspekte beachtet (wie z.B. entferntere Objekte weniger detailreich darstellen und/oder deaktivieren usw.), packt der GM das schon. Aber das ist eine andere Geschichte. :)
    Sowas dachte ich mir irgendwie schon. Aber was sind jetzt nun eigentlich die Normalen?
    Hab auf jedenfall gelesen dass sie was mit der Beleuchtung zutun haben sollen wenn ich mich recht erinnere.
    Oder ist das falsch?

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • @DragonGamer: Trifft sich gut... Da ich für ein kleines GMOgre Projekt momentan nach einer Möglichkeit suche, Models zu smoothen, bin ich auf ein tolles Video gestoßen. Das zeigt auch ganz gut, was die Normals sind. Ich weiß nicht genau, wie der Game Maker das standardmäßig handhabt (da gibt's ja irgendwelche Probleme), aber wenn man die Normals ordentlich ausrichtet, könnte man evtl. eine Aufhellung erzielen. Dennoch zieht sich dabei der Verlauf (Farbe oder Helligkeit) von einer Seite zur anderen. Für eine schöne Beleuchtung ist das also nicht wirklich zu gebrauchen.

    Ach so, das Video: guerrillacg.org/home/3d-polygon-modeling/smooth-shading
  • Ah, ok glaub ich habs jetzt verstanden.
    Danke Moolt Mauge (ups, wie hab ich dass den jetzt geschrieben, sorry) :)
    Denke der GM benutz dies dann auch wenn man smooth-shading aktiviert hat.

    Zum Smoothen von models, auf der GMC hab ich mindestens einmal ein Skript genau dafür gesehen.
    Vieleicht kannst du es wiederfinden, falls es dir was hilft.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von DragonGamer ()