Photoshop / Gimp görüntüsünde alfa kanalını düzenlemenin tahribatsız yolu


9

Unity3d için dokular yapmak istiyorum ve basit bir aşama gibi görünen şeylere takılı kaldım. Amacım, her piksel için renk bilgisi ve ayrı bir alfa kanalı olan bir RGBA görüntüsü oluşturmak. Bu iki bileşen, sırasıyla temel renk ve yansıma gücü olarak Birliğe beslenir. ("Yansıtıcı / Çarpık Dağınık" malzeme kullanarak.)

Photoshop'ta maskeleme araçları kullanırsam, çıktı görüntüsünün (saydamlık) bölümlerini silebilirim. Ancak, çıkışta orijinal RBG renk bilgilerini tutmak istiyorum ve sadece "boş" alanlara sahip olmak istemiyorum. Ayrıca, yıkıcı olmayan bir şekilde yapabilsem iyi olurdu, yani. son alfa kanalı standart bir katmana bağlıdır veya bir yol nesnesinden vb. oluşturulur.

Gimp ile aynı problemim var.

Bu konuda herhangi bir yardım büyük mutluluk duyacağız.

(Photoshop / Gimp iş için araç değilse, lütfen biri daha iyi bir tane önerebilir mi?)

Yanıtlar:


4

Photoshop Çözümü

Görüntünün bir bölümünü silmek yalnızca o katmanı etkiler. Yapmak istediğiniz, alfa bilgilerinizi saklayan ayrı bir kanal oluşturmaktır.

  1. Katmanlar / Kanallar / Yollar içeren araç panelinde Kanallar Sekmesini seçin. Burada RGB, Kırmızı, Yeşil ve Mavi göreceksiniz.
  2. Panelin altındaki düğmeyi kullanarak yeni bir kanal oluşturun, bu sizin alfa kanalınızdır. Bu, 256 bit şeffaflık sağlayan 8 bitlik gri tonlamalı bir kanaldır.
  3. Bu kanalı açmak / kapatmak için küçük "göz" simgelerini kullanabilirsiniz.
  4. Bilgilerinizi çizin veya kopyalayın / kanala yapıştırın.

Not: Kaydederken dosya formatları konusunda dikkatli olmanız gerekir. .Tiff & .TGA gibi şeyler renk bilgisinden bağımsız olarak tam alfa kanalını kaydeder. Bununla birlikte Photoshop, birçok geliştiricinin rahatsızlığı için PNG'ye izin vermez. Alfa kanalı görüntülerini düzgün şekilde kaydetmez ve dosya boyutunu sıkıştırmak için tamamen saydam alanlar için renk bilgilerini çıkarma eğilimindedir.


Benim sorunum tam da buydu. Ben PNG çıktı ve "alfa" kanal iyilik herhangi görmüyordum. Teşekkürler, bu mükemmel. Gimp'i benzer şekilde kullanma talimatı olan var mı?
eli

1
Sinir bozucu çünkü sürüm 5.0 veya 5.5 civarında Photoshop aslında tam kanalı PNG'lere kaydedecekti. Adobe, yazılımın sonraki sürümleri için bunları kullanma biçimini değiştirdi. İç
geçirin

4

Bunu yapmanın en iyi yolunu GIMP'de bir katman maskesi kullanmak (bir katmanı sağ tıklayıp maske oluşturmak) bulmaktır.

Katman daha sonra kendisiyle ilişkilendirilmiş iki "görüntüye" sahip olacaktır - RGBA görüntüsü ve ekstra (çoklayıcı) bir alfa kanalı görevi gören gri tonlamalı bir katman maskesi. Hangisinin düzenleneceğini seçmek için bu resimlerden birini tıklayabilirsiniz.

CTRL tuşunu basılı tutarsanız ve katman maskesini tıklatırsanız, yalnızca RGBA görüntüsünü görürsünüz (bu maskeyi devre dışı bırakır). ALT tuşunu basılı tutarken katman maskesini tıklatırsanız, yalnızca katman maskesini görürsünüz.

Etkin katman maskeli bir görüntüyü dışa aktardığınızda, dışa aktarılan görüntü, maskenin tamamen saydam olduğu alanlardan bile renk bilgilerini korur.

Amaçlarınız için, alfa kanalınızı ayrı bir (RGBA) katmanda oluşturmayı etkili bulabilirsiniz - o zaman bittiğinde bu katmanı orijinal katmanın katman maskesine kopyalayabilirsiniz.


Bu ihtiyacım olana daha yakın. Ancak sadece üst katmanı etkiler! Resmimde birden çok katman var ve bunu düzleştirmeden yapmak istiyorum. Cevabın için teşekkür ederim.
eli

Görüntünüzün her katmanına bir maske katmanı ekleyin.
deft_code

2

GIMP'de, bir yol görüntüyü her kanal için katmanlara ayırmak olacaktır. "Renkler-> Bileşenler-> Ayrıştır" ı seçin ve RGBA'yı veya katmanlara bölmek istediğiniz kanalları seçin. Ardından, uygun gördüğünüz şekilde (tek renkli olması gerekir) alfa ve renk kanallarınızı düzenleyin, ardından "Renkler-> Bileşenler-> Oluştur" seçeneğine gidin ve istediğiniz kanal düzenini seçin ve her kanal için kullanılacak katmanlarınızı seçin.

Ayrıca, "Kanallar" iletişim kutusunu da kullanabilirsiniz. Varsayılan araç kutusu öğelerinin bir parçası olmalıdır, ancak değilse "Windows-> Yerleştirilebilir İletişim Kutuları -> Kanallar" ı seçebilirsiniz. Her bir renk kanalının görünürlüğünü değiştirebilirsiniz ve kanal adlarını tıklayıp vurgulayarak hangilerini tek tek düzenleyeceğinizi seçebilirsiniz (alfa rengini "gizlemenin" bir yolunu görmeme rağmen alfa ile renk koruyor gibi görünüyor tüm görüntüyü gizlemeden düzenleme ...).


önce görüntüyü düzleştirmem, sonra ayrıştırmam, sonra düzenlemem ve sonra yeniden oluşturmam gerekiyor gibi görünüyor. Bahşiş için teşekkürler! Ama yıkıcı olmayan bir yol arıyorum.
eli

Ahh, tek katmanlı bir görüntü ile çalıştığınızı sanıyordum, bu yüzden düzleştirme gerekli olmayacaktı, ama o zaman boşver. İyi şanslar!
Riley Adams

2

Unity3D'ye özgü kendi içerik işlemcinizi yazmak için (@Andrew Russell tarafından önerildiği gibi), bu komut dosyasını Assets/Editorklasörünüze yerleştirin, *-Base.*benzer bir *-Alpha.*dosyaya sahip herhangi bir görüntüyü birleştirir ve orijinal dokuyu değiştirir:

class AlphaCombinerPostprocessor extends AssetPostprocessor {
    function OnPostprocessTexture(texture : Texture2D)
    {
        if (assetPath.Contains("-Base.")) {
            var fn = assetPath.Replace("-Base.","-Alpha.");
            var alpha = AssetDatabase.LoadAssetAtPath(fn,Texture2D);
            if (alpha) {
                Debug.Log("Adding alpha from "+fn);
                var c : Color[] = texture.GetPixels();
                var a : Color[] = alpha.GetPixels();
                if (c.Length != a.Length) {
                    Debug.LogError(fn+" is different size to "+assetPath);
                    return;
                }
                for (var i=0; i<c.Length; i++)
                    c[i].a = a[i].a;
                texture.SetPixels(c);
                texture.Apply(true);
            }
        }
    }
}

Kendi varlık dosyası adlandırma kurallarınıza uyum sağlayın.


0

Alternatiflerden biri, istediğiniz işlemi gerçekleştirmek için kendi içerik işlemcinizi yazmaktır. Bu şekilde "yansıtma" katmanınıza (hatta birden fazla yansıtma katmanına) özel bir ad verebilir ve içerik işlemcisinin bu verileri sizin için alfa kanalına koymasını sağlayabilirsiniz. (Ya da gerçekten istediğiniz herhangi bir işlemi uygulayın.)

XNA ve GIMP kullanıyorsanız (bu benim kullandığım ve aşina olduğum şeyse), bu XCF içe aktarıcısını içerik kanalınıza eklemeniz ve özel olarak adlandırılmış katmanları işlemek için gerekli değişiklikleri yapmanız çok kolay olacaktır .

XNA yerine Unity kullandığınızdan, hangi içerik hattı seçeneklerine sahip olduğunuzu bilmiyorum. Ancak belki de bağlı kodu içerik işleminizde çalışacak şekilde uyarlayabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.