leuchtende Kugeloberfläche



  • Hallo,

    ich will erreichen, dass eine Kugel eine Lichtquelle darstellt, wobei das Licht in alle Richtungen abgestrahlt wird. Wenn ich in die Kugel eine Punktlichtquelle rein setze, dann kommt (fast) kein Licht aus der Kugel. Die Kugel an sich will ich aber nicht transparent machen, da die Kugel auch Licht von anderen Lichtquellen absorbieren soll / Schatten werfen soll.

    Habt ihr eine Idee, wie ich das machen kann?



  • Es wäre ganz interessant, welchen Renderer du benutzt.
    So spontan würde ich sagen, dass du die Kugeln beim Shading mit der Lichtquelle (in der Kugel) auslässt.

    Die Kugel stellt doch sicherlich eine Lichtquelle dar. Warum soll eine Lichtquelle einen Schatten werfen?



  • welchen Renderer ich benutze? Ich programmiere Standard-OGL, welche Renderer gibt es da?

    Stellt euch ein Sonnensystem vor, alle Planeten leuchten in gewisser Weise (Schwarzkörperstrahlung). Die Sonne stellt sicherlich die Hauptstrahlungsquelle dar. Wenn aber der Mond vor die Sonne läuft, sollte es auf der Erde dunkel werden. Der Mond darf also nicht transparent sein (höchstens für seine eigene Strahlung (Reflexion, Schwarzkörperstrahlung, der Mann im Mond der seine Kippe an macht,...))

    Wenn ich dem Renderer sagen könnte, dass die "eigene Kugel" ignoriert werden soll, dann wäre das natürlich klasse. Habe aber keinen Schimmer, wie ich das anstellen könnte.

    Hat OGL denn nur Punktlichtquellen? (wenn die Lichtquellen im Endlichen sitzen)



  • Klingt als moechtest Du Glow.



  • Ich danke euch,

    habe es mal kurz überflogen, es handelt sich dabei doch nicht darum, die Oberflächen zum leuchten zu bringen, sondern diese wird nur vestärkt/verwaschen.. Oder habe ich da was falsch verstanden.

    Achso, vielleicht noch Folgendes: die Lösung zum Problem sollte dann auch kompatibel mit Texturen sein.

    Edit: warum wird eigentlich in meinem vorherigen Post "S t a n d a r d -OGL" ge-piep-st ?



  • Ulf schrieb:

    [...]
    Edit: warum wird eigentlich in meinem vorherigen Post "S t a n d a r t -OGL" ge-piep-st ?

    Weil man den Standard, den du meinst, am Ende mit "D" schreibt.



  • omg, das ist mir jetzt ganz schön peinlich.. kann ein Admin die Beiträge mal bitte löschen?

    Es hat doch nahezu jede 3D-Anwendung irgendwelche Lichtquellen, die nicht nur aus einem Punkt bestehen?! Ich dachte, das Problem ist mit einem 3-Zeiler gelöst 😃



  • Zeichne doch erst alles andere (außer die Sonne) mit der Lichtquelle der Sonne. Und erst danach die Sonne selbst. fertig. Licht und Schatten sind eh beim Rendern riesige Hacks da wirds nicht verwundern dass das alles etwas schwieriger ist.



  • Und wenn du die Sonne leuchten lassen willst, verleih ihr "Emissive Farbe".



  • das mit dieser "emittierenden Farbe" klingt gut.

    ich habe mal die Oberfläche wie folgt "eingefärbt":

    glColorMaterial(GL_FRONT, GL_AMBIENT);
    glColor4f(1.0, 1.0, 1.0, 1.0);
    glColorMaterial(GL_FRONT, GL_EMISSION);
    glColor4f(1.0, 1.0, 1.0, 1.0);
    glColorMaterial(GL_FRONT, GL_SPECULAR);
    glColor4f(1.0, 1.0, 1.0, 1.0);
    glColorMaterial(GL_FRONT, GL_DIFFUSE);
    glColor4f(1.0, 1.0, 1.0, 1.0);
    

    und alles erstrahlt im hellen Glanze. Das Problem: es scheint, als ob lediglich das ambiente Licht dafür zuständig ist, und es daher keinerlei Schatten gibt. Schalte ich dieses aus, ist alles dunkel...



  • Ulf schrieb:

    Es hat doch nahezu jede 3D-Anwendung irgendwelche Lichtquellen, die nicht nur aus einem Punkt bestehen?! Ich dachte, das Problem ist mit einem 3-Zeiler gelöst 😃

    Bist Du Dir da ganz sicher? Vielleicht machen die auch nur in die Mitte der Glühbirne eine Punktlichtquelle und dann malen sie einfach ne Glühbirne mit ner hellen gelben Textur hin. 💡



  • Ulf schrieb:

    glColorMaterial(GL_FRONT, GL_AMBIENT);
    glColor4f(1.0, 1.0, 1.0, 1.0);
    glColorMaterial(GL_FRONT, GL_EMISSION);
    glColor4f(1.0, 1.0, 1.0, 1.0);
    glColorMaterial(GL_FRONT, GL_SPECULAR);
    glColor4f(1.0, 1.0, 1.0, 1.0);
    glColorMaterial(GL_FRONT, GL_DIFFUSE);
    glColor4f(1.0, 1.0, 1.0, 1.0);
    

    Schau besser mal in die Spezifikation von glColorMaterial.



  • hmm, kann da nichts für mich erschließen. Kannst du mir auf die Sprünge helfen?



  • glColorMaterial sorgt dafuer dass die Vertexfarbe *einen* der Parameter ersetzt die per glMaterial definiert wurden.
    Du kannst glColorMaterial weder auf mehrere Parameter anwenden noch per glColor dafuer unterschiedliche Farben definieren.


Anmelden zum Antworten