2016-07-22 11 views
0

So scheint die Standardfarbe für SpriteMaterial ist 0xFFFFFF. Das scheint zu bedeuten, dass der Sprite keine Farbe hat. Wenn ich die Farbeigenschaft des Materials ändere, um 0xFF0000 zu sagen, wird das Sprite mit einem roten Farbton erscheinen.Weißes Sprite-Material?

Was ist, wenn ich eine weiße Tönung möchte? Wie würdest du das erreichen?

+0

'0xFFFFFF' ist genau" weiß "und' 0xFF0000' ist genau "rot" - mit "keine Farbe" meinst du "transparent"? Ein "weißer Farbton" macht keinen Sinn. – Krease

+0

Okay, also was ich meine, ist eine Art Aufhellungseffekt. Die Idee ist wie folgt: Nehmen wir an, Sie haben ein Sprite, das aus einer Reihe von Farben besteht. Sie haben dieses Sprite auf eine neue Ebene in Photoshop kopiert, es dann zu einem weißen Fleck gemacht und es dann auf das ursprüngliche Sprite gelegt die Opazität auf 0,8. Dann hättest du grundsätzlich einen "weißen Farbton". Dies ist die Art von Effekt, den ich im Sprite-Material machen möchte. –

+0

Es klingt wie Sie die Alpha oder Deckkraft Ihrer Farbe ändern möchten. Einige nützliche [empfohlene Lektüre] (http://www.w3schools.com/cssref/css_colors_legal.asp), um Sie mit einem klareren Verständnis von Farbcodes und der Angabe von Alpha/Opazität zu beginnen. – Krease

Antwort

1

Wenn Sie Ihre Sprite-Textur heller (weißer) machen möchten, können Sie dies tun, indem Sie die Farbe über 1,0 erhöhen. Sie können dies nicht mit Hex-Werte, stattdessen verwenden:

obj.material.color = new THREE.Color(2, 2, 2);//or higher 

zur Kenntnis, dass 1,1,1 reines Weiß ist (grau ist 0.5,0.5,0.5), so dass Sie gehen in Farbwerte, die mehr von dem Bildschirm angezeigt werden kann nicht, so ist es gerade abgeschnitten weiß

reference

ähnlich wie Photoshop, gibt es auch verschiedene Möglichkeiten, um Ihre Objekte zu mischen a haben schauen Sie sich dieses Beispiel: http://threejs.org/examples/?q=blend#webgl_materials_blending

additive Mischung der beste Weg für Licht von Fackeln zu gehen usw.

Sie den Code in dem Boden überprüfen kann links zu sehen, wie Sie es zu Ihrem Fall anwenden können. beachten Sie, dass Transparenz auf Ihrem Material aktiviert werden muss, damit diese funktionieren

+0

Hallo, danke für die Antwort. Okay, die Farbdokumente sagen, dass es Werte zwischen 0 und 1 akzeptiert, sagst du, wenn ich sage, vielleicht den Wert "1.5, 1.5, 1.5", wird es dies als Aufhellen interpretieren? Auch hinsichtlich der Mischung habe ich 'THREE.AdditiveBlending' ausprobiert, aber es macht die Sprite-Textur transparent, was nicht das ist, wonach ich suche. –

+0

wie webGL Farben als Floats behandelt werden, können Sie so hoch gehen, wie Sie wollen, auch negative – Thomasn

+0

Das ist toll zu wissen, ich werde es ausprobieren und sofort zurück. Die drei Dokumente sollten wahrscheinlich darauf hinweisen, wenn es tbh funktioniert, ziemlich irreführend zu sagen, der Konstruktor akzeptiert nur einen bestimmten Bereich, wenn diese Anweisung falsch ist. –

0

ich nicht Code in Ihrer Umgebung und ohne das Blending Mathe wissen noch kodieren Sie verwenden, ist schwer zu helfen, aber Opazität/Transparenz in Sprites ist in der Regel wie folgt definiert:

  1. Nach Farbe mit Alpha Kanal

    In diesem Fall wird das Farbformat hat 0xAARRGGBB so, wenn die höchste 8 Bit Farb verwerfen Alpha auf Null setzen, die je nach Mischung verwendeten Gleichung volle Transparenz oder vollständig festes Material sein könnte. In diesem Fall fügen Sie einfach den Alpha-Wert hinzu.

    Manchmal hat Sprite eine separate Bildmaske, die stattdessen den Alphakanal oder die Bitmaske enthält.

  2. von Farbe in bestimmten Pixelposition

    Es ist in der Regel Ecke von Sprite. Wenn dein Sprite also vollständig mit einer einzelnen Farbe gefüllt ist, bedeutet das, dass es vollständig transparent ist. Diese Art der Transparenzkodierung kennt keine Alphakanäle, daher können Sie Farben nicht mit anderen Sprites kombinieren. Diese Art von Sprites hat nur Löcher (wo ist die gleiche Farbe wie in der spezifischen Pixelposition). Zum Beispiel verwenden Icons dies.

    In diesem Fall identifizieren Sie die Pixelposition zum Beispiel ein Sprite in 4 Quadrate mit jeweils unterschiedlicher Farbe unterteilt. Welches ist nicht gerendert ist die Ecke für Transparenz Farbe verwendet ...

  3. Durch spezifische Farbe

    In diesem Fall einer bestimmten Farbe als transparent verwendet. Diese Farbe wird normalerweise gewählt, damit sie nicht zu sehr in der Palette fehlt. Normalerweise hängt Schwarz oder Weiß vom Hintergrund oder Inhalt ab. In tis Fall, wenn 0x00FFFFFF bedeutet transparent, dann können Sie versuchen 0x00FEFEFE stattdessen zu verwenden

So identifizieren, welches ist es (das ist die zweithöchste Intensität weiß/graysh Schatten verfügbar ist) und Ihre Sprites entsprechend reparieren.

+0

Danke für diese Antwort. Es scheint, als hätten drei die dritte Methode gewählt, um Sprite-Materialien korrekt darzustellen. Ich werde diese Lösung ausprobieren und sehen, wie es geht. –