Realistisches Licht



  • das könnte ich nicht wirklich, weil ja nur da etwas heller ist, wo durch die tür etwas durchscheint. und das wo das draufscheint erhellt andere sachen wieder (natürlich wieder schwächer)...



  • Dann setz doch einfach in den Durchgan einen ganz schwachen Spot...
    Wenn Licht in Zimmer1 an, dann Spot im Durchgang zu Zimmer2 aktivieren.



  • Es ist doch eigentlich realistisch das der Raum2 auch ein ganz klein wenig beleutet wird, warum also nicht einfach so lassen ?



  • Sowas könnte man durch Rekursion in den "ZweiD" Renderer einbauen. 😉



  • hmm.. setz' nen Spiegel an die Wand und nimm den dann einfach als diffuse Lichtquelle.



  • Da es nicht so aussieht als ob sich das Licht bewegen würde, berechne es einfach statisch vor (static Lightmapping) und benutze es dann in Texturen mit MultiTexturing. Dann kannst du dein Licht auch von der Wand abprallen (Raytracing) lassen ...


  • Mod

    das was du suchst nennt man radiosity, dabei berechnet man die energie die von flächen wieder abgegeben wird.

    die berechnung davon ist recht simpel, aber aufwändig, deswegen wird sie (wie schon erwähnt wurde) in lightmaps gerechnet.

    das berechnen auf die simpelste weise geht folgender massen.

    1. du berechnest für jedes polygon die farbe (alle textur-pixel die drauf liegen zusammen addieren und den durchschnitt bildern)
    2. du berechnest die direckte beleuchtung, dazu raytraced du von der lichtquelle zum poly, wenn du nix triffst dann rechnest du richtungzumlicht(dot)polygonnormal (für alle lichtquellen addieren sich die werte auf)
    3. nun raytraced du von jedem polygon zu jedem polygon, falls nichts dazwischen liegt, dann rechnest du die energie aus, die das eine polygon auf das andere überträgt
    dazu wird das dot der beiden normalen gebildet * colorpoly1 * colorpoly1 *flächepoly1 * flächepoly2

    je nachdem wie gut du die energie verteilt haben möchtest gehst du schritt 3 durch
    das dauernt natürlich lange bei entsprechenden scenen.

    die normalen der polys müssen normiert sein
    colorpoly hat farbwerte von 0.f bis 1.f (für r g b)
    die flächepoly erhällst du durch die länge der normale eines polys, wenn du die normalen nicht normierst, dann hast du beides in einem
    du mußt dahinter eventuell noch nen facktor setzen, denn es hängt natürlich von der scalierung deiner scene ab, wie gross die flächen sind.

    4. alles in texturen einzeichnen oder per vertex in die colors einrechnen (wenn geometrie hoch genug tesseliert ist)

    rapso->greets();


  • Mod

    http://www.geocities.com/lifebloodsstudios/Dionysos.html

    ein paar alte screens meiner ebenfalls alten engine die das so macht wie ich das beschrieben habe blos in der grafikkarte 😃

    rapso->greets();



  • Such mal in den IOTDs von www.flipcode.com. Dort gibt es ziemlich oft Radiosity renderer, sicherlich wirst du ein paar Autoren auch dazu überreden können dir den Source zu geben 🙂




Anmelden zum Antworten