Jump to content
Unity Insider Forum

Licht in unity


Sir_Mathew

Recommended Posts

Hallo,

hab da irgendwo 2 komische Fragen. Dazu 2 Bilder mit hochgeladen.

Im ersten Bild hab ich einen Spot Light mit Standard werten außer Range 1000 und Intensity 100 in einen dunklen raum. Hab einen normalen Cube mal als Zwischenwand eingefügt. Aber das licht leuchtet da einfach durch die Wand durch, was mach ich da denn falsch?

 

Im Zweiten Bild hab ich mir eine Leuchtstofflampe Modelliert und dieser die Komponente Light im Point Modus laufen.

 Diese soll halt wie eine Normale Leuchtstofflampe nun leuchten. Also die Leuchtstoffröhre soll komplett leuchten und vom Gehäuse reflektiert werden und so ein Schönes licht zu Boden Werfen und nicht nach oben und Seite etc... Dazu muss ich sicherlich 2 Modelle nutzen, 1 führ die Röhre und 2 für das Gehäuse. Aber wie bkomme ich die Gesamte Röhre zum leuchten und nicht nur einen Punkt in der Röhre?

Ja ansonsten bleibt bei beiden das gleiche, das licht leuchtet durch Gegenstände.

Ah und wenn ich mich davor stelle, wird auch kein Schatten geworfen.

Hoffe ihr kennt diese Licht Probleme.

Licht.thumb.jpg.0a7852a89b29ce8f2f5b4163d8a5bf5c.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 21 Stunden schrieb Sir_Mathew:

Hab einen normalen Cube mal als Zwischenwand eingefügt. Aber das licht leuchtet da einfach durch die Wand durch, was mach ich da denn falsch?

Du hast vermutlich Schatten gar nicht angestellt? Schatten berechnen ist nicht immer nötig und kostet Performance, darum muss man es bei der Lichtquelle anschalten.

vor 21 Stunden schrieb Sir_Mathew:

Dazu muss ich sicherlich 2 Modelle nutzen, 1 führ die Röhre und 2 für das Gehäuse.

Nö. Du kannst mit Texturen ganz viel machen. Schau mal hier: https://docs.unity3d.com/Manual/StandardShaderMaterialParameterMetallic.html

Wenn du auf der Seite die beiden Bilder mit dem Koffer vergleichst, siehst du, dass im oberen überall gleich viel Glanz ist und im unteren mit einer Textur die "Smoothness" pixelweise definiert ist. So glänzen im unteren Bild nur noch die Metallteile und das Leder glänzt nicht mehr so. Ist aber nach wie vor nur ein Modell. Und mit Emission, also selbstleuchtender Oberfläche, geht das genauso. Einfach eine Textur, wo die Röhre weiß und der Rest schwarz ist als Emission-Textur und fertig. Dann leuchtet auch gleich die ganze Röhre. Überall da, wo die Textur weiß ist halt.

Allerdings kann "leuchten" natürlich auch heißen, dass andere Objekte angestrahlt werden. Hier brauchst du für dynamisches Licht eine Lichtquelle, und die kann dann nur von einem Punkt ausgehen. Da muss man ein bisschen tricksen, damit das gut aussieht. Wenn du aber statisches Licht hast, deine Lampe sich also niemals bewegen soll, kannst du die Lichtquelle weglassen und das Modell mit der Emission einfach machen lassen, während du die Lightmap backst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ist ganz schön Kompliziert.

Also meine Lampe sieht schon einigermaßen gut aus.

Habe ein Licht die nach oben Strahlt und so die Lampe etwas zum Leuchten bringt und ein Licht das nach unten Strahlt. 

Schatten Funktioniert auch.

Aber das Licht scheint immer noch durch Wände. Hab die Wand Static gemacht etc... aber das licht scheint einfach durch, als ob da keine Wand wäre.

Das ausgewählte Licht im Bild scheint nach unten und durch Wände.

Muss ich die Wand, also Cube irgendwie umstellen oder so?

Licht.thumb.jpg.f1a2567e903cd8c49beb1e4b4eaf017d.jpg

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also Static bringt da nix. Es gibt zwar den Unterpunkt Lightmap Static, aber das bedeutet, dass er nur mit static Lichtern für das Berechnen einer Lightmap genutzt würde.
Nicht statische Lichter beleuchten das Objekt dann nicht mehr. Deine Lampe ist auf baked gestellt. Sie ist also nur dann wirksam, wenn du die Szene auch backst. So

Aber was du wissen solltest. Deine Wand, also der Cube hat Rendereigenschaften. Diese Eigenschaften geben an, ob er Schatten empfangen kann ( ja, Schatten nicht nur Licht) und ob er seber Schatten werfen soll. Nur wenn er das soll, entsteht auch ein Schatten hinter ihm.

Ich frage mich aber irgendwie, was du eigentlich erreichen willst. Soll diese Lampe wirklich komplett nur für eine Lightmap genutzt werden? Ist in der Szene nichts was sich bewegt und auch von der Lampe angestrahlt werden würde?

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aus deinem anderen Thread entnehme ich, dass du auf die LWRP umgestiegen bist. Hattest du das Problem schon vorher? Vergiss nicht, dass Schatten verdammt teuer sein können und LWRP die Performance-Pipeline ist. Die schränkt die Grafikpower teilweise ein.

Siere hier:

Zitat
Shadow Casting Lights Directional, Spot, Point

 

Multiple shadow light casters, one per-pass.

      Directional and Spot

 

      Single shadow light caster supported as main light.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ach!
Ja dann....

Also die LWRP ist ja echt sehr performant ( ich nutze sie für mein neues Spiel), aber Schatten ist halt so ne Sache.
Für ein Taschenlampen-Spiel, wo es auch noch andere Lichter gibt (die mal an und mal aus sind), ist das nicht zu gebrauchen.
Da muss man schon die große Pipeline nehmen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ei Ei Ei was für eine Diskussionsrunde.

@Sascha ich nutze LWRP garnicht, hab es nur in ein neues Projekt installiert zum testen.

@malzbiewas ist denn die eine große Pipeline? Unity Standard?

Also nochmal.

Licht hängt oben Links. Diese einfach mal vergessen. Als Child hängt ein ganz normaler Point Light.

Wie man unten am Boden sieht, ist der Lichtkegel sowohl links und rechts neben der Wand. Also die Wand wird einfach ignoriert.

Das Unity das nicht selbst schafft, versteh ich nicht. Wenn ich bei mir in Wohnzimmer das Licht an mache, leuchtet es ja nicht im Schlafzimmer.:D

 Irgendwie hab ich das Gefühl, ich bin der einzige der Räume macht und ihr alle Inseln, wo das Problem nicht .... ach keine Ahnung:(

 

Wand.thumb.jpg.803f10c196ddc57172d344d372de3171.jpg

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

So, hab mal rumprobiert. Kann es sein, dass du das Projekt als 2D gestartet hast, dann aber auf 3D umgestiegen bist?

So oder so wäre mein nächster Tipp, dass Schatten schlichtweg deaktiviert sind. Geh mal auf "Edit / Project Settings" und gehe da auf "Quality". Da wählst du ein Quality Level aus (im Zweifelsfall "Ultra") und schaust dir unter der Tabelle die Einstellungen des Levels an. Ich vermute, dass Schatten einfach gerade "disabled" sind.

grafik.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

War eine gute Idee aber ist Hard and Soft Shadows eingestellt.

Hab auch nie von 2D auf 3D umgeschaltet, weiß garn icht wie das geht und mit 2D hab ich nix am Hut.

Hab mal Screenshots gemacht.

Hab gerade noch ein Leeres Projekt Probiert, und ja da hat die Wand das Licht nicht durchgelassen, so wie es sein soll.

Muss ich mal suchen, woran das liegt. Eventuell alles in ein neues Projekt Kopieren. Aber wäre dennoch schön, wenn man wüsste was da falsch läuft.

Shadow einstellung.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja es ist etwas komplizierter geworden, seit dem Unity unterschiedliche Pipelines eingebaut hat.

LWRP, also LightweightRenderPipeline heisst jetzt URP, also UniversalRenderPipeline. Das ist eine schlanke Pipeline, die voll auf performance angelegt ist.

Dann gibt es noch die Built-InRenderpipeline, was die alte Art ist zu rendern. Die ist eigentlich nur dafür da um alte Projekte mit neuen Unityversionen weiter zu nutzen.

Ja und der Große Bruder ist HDRP, also HighDefinitionRenderPipeline. Da ist alles so eingestellt, dass du die maximale Grafikleistung bekommst, natürlich auch zu maximalen Leistungskosten. ;)

Das Entscheidende bei den Renderpipelines ist, dass du dir selber per Script eine Pipeline zusammenschustern kannst, die genau deinen Wünschen entspricht. Du kannst also selber skalieren, wie gut und teuer gerendert werden soll. Also was alles din ist und was nicht.
HDRP und URP sind zwei vorgefertigte Pipelines um den Leuten 2 Möglichkeiten zu bieten. URP ist für schwächere Systeme wie z.B. Mobiles gedacht und wirklich performant.
Dafür fehlen natürlich einige Dinge wie Echtzeitschatten von viele Lichtquellen.

Das dazu. Hier kannst du nachlesen, wenn du in die Materie einsteigen willst: https://docs.unity3d.com/Manual/render-pipelines.html

Jetzt zu deinen Schatten.

In jeder Gameengine wird versucht so performant wie möglich zu sein. Die Schattenberechnung gehört dazu. Licht und Schatten werden nicht wie in einer echten 3D Software gerendert sondern mehr oder weniger dahingelogen. Es muss ja schließlich schnell gehen.
Die Berechnungen sind nur so genau wie nötig um es glaubhaft zu machen. Du kannst und musst selber einige Parameter einstellen um die gewünschte Qualität zu erreichen. Wobei "gewünscht" natürlich trotzalledem nach oben hin begrenzt ist.

Wichtige Einstellungsmöglichkeiten sind am Objekt selbst welches beschattet werden soll. Dort definierst du, ob Schatten empfangen werden sollen und ob das Objekt sogar Schatten auf andere Objekte werfen kann. Jede Option, die aktiviert ist, kostet Leistung.

Andere Einstellungsmöglichkeiten sind bei der Lichtquelle zu finden. Dort definierst du, ob sie Schatten werfen soll oder nicht. Und wenn ja, welche Art von Schatten.
Weiche Schatten kosten mehr Leistung als Harte.
Außerdem stellst du dort noch weitere Dinge ein. Z.B. bis wohin ein Schatten überhaupt berechnet wird. Weit entfernte Dinge müssen meist nicht mehr beschattet werden, weil man es eh nicht sieht. Dinge die nah an der Lichtquelle sind werfen erst Schatten, wenn die nearPlane auch so eingestellt ist. Ein Bias gibt an, ab wann sich ein Objekt sogar selbst beschattet. Und und und.

Und dann gibt es natürlich noch Gurndeinstellungen die z.B. angeben, wieviele Lichtquellen gleichzeitig Schatten werfen dürfen und wie gut der Schatten aufgelöst ist.
Hier was zum Lesen: Shadows in the High Definition Render Pipeline | High Definition RP | 11.0.0 (unity3d.com)

Du musst jetzt also schauen was bei dir alles so eingestellt ist. Die Objekte müssen Schatten werfen und sie auch empfangen können. Die Lichtquelle muss die richtigen Biaswerte für deine Gegebenheiten haben. Bei der CullingMask nachgucken, ob die Lichtquelle auch den Layer beleuchten darf, den dein Objekt hat. Ist das Licht Realtime, mixed oder baked. Sind die Objekte static oder nicht. Ist deine Szene in einem vernünftigen Maßstab aufgebaut und ist sie evtl. so klein, dass du mit dem Bias nicht mehr weiter kommst. (Eine Unityeinheit ist ein Meter)
Objekte, die nur aus einer Plane bestehen können außerdem Schwierigkeiten verursachen, wenn sie andere Objekte beschatten sollen, genauso, wenn sie transparente Materialien haben.

Licht und Schatten ist eine Disziplin für sich!
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

So nachdem im leeren Projekt das mit dem Licht funktioniert, hab ich absolut jede einzelne Unity Einstellung mit einander verglichen.

Selbst die gleichen Pakete hab ich im neuen Projekt installiert. Aber ich kann beim besten will, nicht feststellen, warum es im in einen Projekt geht und im anderen nicht.

Auch die selbe Unity Version ist bei beiden identisch.

Da muss irgendwas im Projekt kaputt sein etc.... Werde nun alles neu machen im neuen Projekt. Mal sehen ob es dann auch noch funktioniert.

@malzbie ja eine Disziplin ohne Grenzen, wenn es wenigstens funktionieren würde. :( 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...