Apakah putih warna dasar terbaik untuk memulai ketika merencanakan untuk meneduhkan sprite dalam Unity?

10

Saya sedang mencari prototipe game di Unity yang akan terdiri dari sprite persegi solid / ubin. Saya pikir saya bisa mewakili berbagai jenis objek dengan warna yang berbeda untuk setiap ubin dalam permainan.

Saya pikir saya dapat mengimpor satu sprite persegi dan menaunginya dengan tepat di Unity sebagai lawan dari kotak yang diimpor dari berbagai warna.

Pengalaman saya dengan menyesuaikan rona dan saturasi dalam Photoshop menunjukkan bahwa putih bukanlah warna yang mudah diubah karena hal-hal yang putih sering tetap putih. Pengujian saya di Unity menunjukkan bahwa saya dapat mengubah "warna" dari sprite menjadi apa pun selain putih dan sprite itu tampaknya diarsir dengan tepat, terlepas dari apa yang saya pikir diberikan pengalaman Photoshop saya.

Karena benda-benda putih tampaknya mengambil naungan warna yang sesuai ketika diubah dalam Unity, usus saya mengatakan kepada saya bahwa ini adalah warna dasar terbaik untuk memulai, yang berarti bahwa saya dapat mengimpor satu sprite kotak putih tunggal dan hanya menyesuaikan warna untuk mewakili objek yang berbeda. dan status objek.

Apakah sprite putih sebenarnya sprite warna terbaik untuk memulai dan mengapa sesuatu seperti ini bekerja di Unity sebagai lawan menyesuaikan rona dan saturasi dalam Photoshop?

masukkan deskripsi gambar di sini

Spartan Donut
sumber
Pertama, tentukan "terbaik".
Krythic

Jawaban:

13

Putih adalah warna dasar terbaik untuk representasi sejati. Juga menjaga skala abu-abu sprite Anda dapat membuat beberapa penyesuaian warna yang mudah untuk tim, dll.

Unity menerapkan Multiplymode campuran ke tekstur dan warna sprite.

Jenis warna Unity berkisar antara 0 hingga 1 inklusif.

Warna. Putih sama dengan (1, 1, 1, 1).

Mengetahui bahwa 1waktu adalah sesuatu itu sendiri.

Jika skala abu-abu texturedicampur dengan bidang Sprite Renderer Color, masing-masing piksel itu sendiri. Mengubah bidang ini hanya akan mengalikan setiap nilai skala abu-abu yang seragam dengan masing-masing komponen warna.

Mewarnai beberapa sprite


Anda dapat bermain dengan mode campuran Multiply di editor gambar favorit Anda seperti Photoshop atau GIMP.

Pengaturan Photoshop

MLM
sumber
4

Sprite-Additive.shader - GitHub Gist

Warna-warna kesatuan memiliki 4 nilai float yang tipikal dari banyak format warna RGBA, sesuai dengan nilai warna persentase individu Merah, Hijau, Biru dan saluran transparansi Alpha.

Juga seperti yang disebutkan di atas "Tint" default yang diterapkan oleh Unity adalah shader multiplikatif yang disebut Photoshop efek ini "Multiply" dan proses ini secara harfiah mengalikan nilai warna dalam piksel sprite Anda dengan nilai warna yang dipilih.

Masalah dengan ini adalah, shader matematika warna Multiplicative akan SELALU menghasilkan rona yang sama (jika Anda "mengalikan" dengan putih) atau warna lebih gelap jika Anda mengalikannya dengan hal lain. Saya menemukan situasi di mana saya ingin efek sebaliknya yang tepat dalam situasi tipe pandai besi. Logam yang dipanaskan tidak boleh dikalikan dengan Kuning untuk menghasilkan rona yang lebih gelap:

shader multiplikasi oleh Yellow

Sebagai gantinya, saya menulis ulang shader multiplikatif default Unity sebagai aditif. Hasilnya lebih sesuai dengan apa yang saya cari:

shader aditif

Saya akan memberikan inti untuk Sprite-Additive.shader yang ditulis ulang jika ada yang tertarik.

Berikut ini adalah referensi yang bagus tentang terminologi dan mode warna: http://www.northlite.net/ps/blend.htm

Joe
sumber
Seorang pengguna tanpa reputasi yang cukup untuk berkomentar telah menyatakan minatnya untuk melihat kode shader untuk efek ini. Apakah Anda masih dapat membagikannya?
DMGregory
1
Hei, saya tidak punya itu tersedia sekarang, tetapi saya akan menggali dan mendapatkan tautan secepat mungkin. Malam ini jika memungkinkan.
Joe
2
Saya mengambilnya kembali, saya menemukannya relatif mudah dan menambahkannya ke Intisari pada GitHub saya. Perbedaan utama antara shader aditif dan multiplikatif adalah transparansi. Dalam aditif shader saya menetapkan cutoff transparansi 10% untuk mempertahankan alpha relatif piksel dengan nilai alpha rendah. Anda tidak perlu khawatir tentang hal semacam ini pada shader multiplikasi karena sifat matematika itu.
Joe