Ich habe mir die Beleuchtung von Scenekit angeschaut, und während ich jetzt einen Lichtknoten anwenden kann, um etwas anzuzünden, suche ich nach einer Möglichkeit, aus einem Objekt heraus zu leuchten.
Stellen Sie sich als Beispiel ein Neonlicht oder eine Glühbirne vor, die andere Objekte beleuchtet.
Irgendwelche Ideen wie man das erreicht?
Vielen Dank.
Wie @ DavidRönnqvist Hinweise in Kommentaren gibt, gibt es mehrere Möglichkeiten, ein Objekt zum Leuchten zu bringen. Sie können dies zusammen oder einzeln tun - Sie müssen wahrscheinlich optimieren, wie Sie sie kombinieren, um den gewünschten Effekt zu erzielen.
Für ein Objekt, das Licht ausstrahlt, möchten Sie wahrscheinlich keine Schattierungen von anderen Lichtquellen in der Szene. Arbeiten Sie mit der emission
zusammen. Kanal Ihres Materials, um dem Objekt eine Farbe oder Textur zu geben, die die Schattierung anderer Lichtquellen außer Kraft setzt. (Wenn Sie eine Textur verwenden, scheinen die helleren Teile zu leuchten, wie im Beispiel aus der oben genannten Dokumentation zu sehen ist.)
Sie möchten möglicherweise, dass andere Elemente in Ihrer Szene vom leuchtenden Objekt beleuchtet werden. Die Materialeigenschaft emission
verhindert, dass das Objekt durch Beleuchtung / Schattierung abgedunkelt wird, es macht es nicht zu einer Lichtquelle. Um eine Lichtquelle zu erhalten, müssen Sie mindestens ein SCNLight
zum Knotenbaum hinzufügen, der Ihr Objekt enthält.
Abhängig von Ihrer Szene können Sie möglicherweise mit nur einer Lichtquelle davonkommen; z.B. Wenn das Objekt eine Glühbirne ist, können Sie ein Licht in seiner Mitte platzieren und damit fertig sein. (Nun, Sie müssen vielleicht auch mit den Kategorie-Bitmasken des Knotens und des Lichts spielen, um sicherzustellen, dass das Licht durch die Glühbirne hindurch scheint, statt von ihm verdeckt zu werden.) Wenn Sie eine große, komplizierte Leuchtreklame haben Möglicherweise müssen mehrere Lichtquellen erstellt werden - andernfalls wird die Beleuchtung von Objekten in der Nähe des Schildes verraten, dass es sich um ein einzelnes Punktlicht handelt. (Wenn sich nicht in der Nähe des Schildes etwas befindet, das beleuchtet wird, kann ein Punktlicht gut genug sein.)
Wenn Sie nach einem leuchtenden Halo um die Lichtquelle suchen, wird es etwas schwieriger. Das ist eine volumetrische Beleuchtung, und das ist nichts, was SceneKit für Sie aus der Box machen kann. Aber es gibt ein paar Möglichkeiten, wie Sie es fälschen könnten:
SCNParticleSystem
, da dadurch Partikel entlang der Oberfläche einer Geometrie generiert werden können. emission
zur Rettung.) EDIT: Whoops, ich mag die Frage falsch verstanden haben ... Ricksters Antwort ist mehr an Ihre Bedürfnisse angepasst.
Glowy 3D ist meine Domäne!
Es gibt einige Möglichkeiten, wie Sie ein Objekt in Scenekit leuchten lassen können.
Am einfachsten ist es, es in GLSL mit SCNTechnique
einzurichten. Sie benötigen mehrere Durchgänge, um die Beleuchtung zu rendern und dann nacheinander X und Y (schneller als beide gleichzeitig) zu verwischen. Es gibt einen tollen Artikel darüber auf GPU Gems . Allerdings ist das hier ziemlich schwer, wenn Sie es zu oft benutzen, und ich bin mir nicht ganz sicher, ob Sie die Beleuchtung nur in SCNTechnique
ausrichten können.
Der zweite Weg besteht in der Verwendung von CI-Filtern. Fügen Sie einfach einen Gaußschen Weichzeichner hinzu und fügen Sie ihn oben zusammen. Sie benötigen möglicherweise zusätzliche Effekte, um die leuchtenden Elemente auszuwählen / zu verstärken. Wenn Sie nach einem Schein um das Objekt suchen diese Frage könnte Ihnen ebenfalls helfen.
Der dritte Weg besteht darin, das Glühen mithilfe von Werbetafeln zu fälschen. Erstellen Sie eine Schablone in Photoshop oder Ihrer 3D-Software und legen Sie sie auf ein Flugzeug, das immer zur Kamera zeigt. Ändern Sie den Mischmodus auf Bildschirm und Sie haben einen sehr günstigen Schein!
Schließlich sollten Sie für Ihren Licht-Glanz-Effekt in Patenschaften schauen. Sie sind auch mit GLSL ziemlich einfach einzurichten, also sollte SCNTechnique
den Trick machen. Hier ist ein Artikel dazu.