Photoshop / Gimp 이미지에서 알파 채널을 편집하는 비파괴적인 방법


9

Unity3d 용 텍스처를 만들려고하는데 간단한 단계 인 것 같습니다. 내 목표는 모든 픽셀의 색상 정보와 별도의 알파 채널을 사용하여 RGBA 이미지를 만드는 것입니다. 이 두 구성 요소는 각각 기본 색상과 반사 강도로 Unity에 제공됩니다. ( "반사 / 범프 확산"재질 사용)

Photoshop에서 마스킹 도구를 사용하면 출력 이미지의 일부 (투명도)를 지울 수 있습니다. 그러나 출력 할 때는 원래의 RBG 색상 정보를 유지하고 "공백"영역 만있는 것이 아닙니다. 또한 내가 비파괴 적으로 할 수 있다면 좋을 것입니다. 최종 알파 채널은 표준 레이어에 의존하거나 경로 객체 등으로 빌드됩니다.

나는 김프와 같은 문제가 있습니다.

이에 대한 도움을 주시면 감사하겠습니다.

(Photoshop / Gimp가 작업을위한 도구가 아닌 경우 더 나은 도구를 추천 할 수 있습니까?)

답변:


4

포토샵 솔루션

이미지의 섹션을 삭제하면 해당 레이어에만 영향을줍니다. 원하는 것은 알파 정보를 저장하는 별도의 채널을 만드는 것입니다.

  1. 레이어 / 채널 / 경로가있는 도구 패널에서 채널 탭을 선택하십시오. 여기에 RGB, Red, Green 및 Blue가 표시됩니다.
  2. 패널 하단의 버튼을 사용하여 새 채널을 만듭니다. 이것이 알파 채널입니다. 256 비트 수준의 투명성을 제공하는 8 비트 그레이 스케일 채널입니다.
  3. 작은 "눈"아이콘을 사용하여이 채널을 켜거나 끌 수 있습니다.
  4. 채널에 정보를 그리거나 복사 / 붙여 넣기하십시오.

참고 : 저장시 파일 형식에주의해야합니다. .Tiff 및 .TGA와 같은 것은 색상 정보와 상관없이 전체 알파 채널을 저장합니다. 그러나 Photoshop에서는 PNG를 사용하여 많은 개발자의 성가심을 허용하지 않습니다. 알파 채널 이미지를 제대로 저장하지 않으며 파일 크기를 압축하기 위해 완전히 투명한 영역에 대한 색상 정보를 제거하는 경향이 있습니다.


이것이 바로 내 문제였습니다. PNG로 출력했지만 "알파"채널이 양호하지 않았습니다. 고마워, 이것은 완벽하다. 김프를 비슷하게 사용하는 사람이 있습니까?
eli

1
버전 5.0 또는 5.5 Photoshop을 사용하면 실제로 전체 채널을 PNG로 저장하기 때문에 실망합니다. Adobe는 이후 버전의 소프트웨어에서 처리 방식을 변경했습니다. 한숨
wkerslake

4

김프에서이 작업을 수행하는 가장 좋은 방법은 레이어 마스크를 사용하는 것입니다 (레이어를 마우스 오른쪽 버튼으로 클릭하고 마스크 만들기).

레이어에는 RGBA 이미지와 추가 (곱하기) 알파 채널 역할을하는 그레이 스케일 레이어 마스크와 관련된 두 개의 "이미지"가 있습니다. 이 이미지 중 하나를 클릭하여 편집 할 이미지를 선택할 수 있습니다.

CTRL을 누른 상태에서 레이어 마스크를 클릭하면 RGBA 이미지 만 표시됩니다 (마스크 사용 안함). Alt 키를 누른 상태에서 레이어 마스크를 클릭하면 레이어 마스크 만 표시됩니다.

활성 레이어 마스크가있는 이미지를 내 보내면 내 보낸 이미지는 마스크가 완전히 투명 해지는 영역의 색상 정보도 유지합니다.

목적에 따라 별도의 (RGBA) 레이어에 알파 채널을 구성하는 것이 효과적이라는 것을 알 수 있습니다. 완료되면이 레이어를 원래 레이어의 레이어 마스크에 복사하면됩니다.


이것은 내가 필요한 것에 더 가깝습니다. 그러나 최상위 레이어에만 영향을 미칩니다! 이미지에 여러 레이어가 있으며 병합하지 않고이 작업을 수행하고 싶습니다. 대답 해줘서 고마워.
eli

이미지의 각 레이어에 마스크 레이어를 추가하십시오.
deft_code

2

김프에서 한 가지 방법은 이미지를 각 채널의 레이어로 나누는 것입니다. "Colors-> Components-> Decompose"를 선택하고 RGBA 또는 레이어로 나누고 싶은 채널을 선택하십시오. 그런 다음 개별 알파 및 색상 채널을 적절하게 편집하고 (그레이 스케일이어야 함) "색상-> 구성 요소-> 작성"으로 이동하여 원하는 채널 레이아웃을 선택하고 각 채널에 사용할 레이어를 선택하십시오.

또한 "채널"대화창을 사용할 수 있습니다. 기본 도구 상자 항목의 일부 여야하지만 그렇지 않은 경우 "Windows-> Dockable Dialogues-> Channels"를 선택할 수 있습니다. 각 색상 채널의 가시성을 토글하고 채널 이름을 클릭하고 강조 표시하여 개별적으로 편집 할 색상을 선택할 수 있습니다 (알파를 사용하여 색상을 유지하는 것처럼 보이지만 알파를 "숨기는"방법은 보이지 않습니다) 전체 이미지를 숨기지 않고 편집 ...).


먼저 이미지를 평평하게 한 다음 분해, 편집 및 재구성해야합니다. 팁 고마워! 그러나 나는 비파괴적인 방법을 찾고 있습니다.
eli

아, 나는 당신이 단일 레이어 이미지로 작업하고 있다고 가정했기 때문에 평탄화는 필요하지 않지만 결코 신경 쓰지 않습니다. 행운을 빕니다!
라일리 아담스

2

Unity3D에 고유 한 자체 컨텐츠 프로세서 (@Andrew Russell이 제안한대로)를 작성하려면이 스크립트를 Assets/Editor폴더 에 배치하면 이미지 *-Base.*가 비슷한 이름의 *-Alpha.*파일과 결합 되어 원본 텍스처가 수정됩니다.

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);
            }
        }
    }
}

자신의 자산 파일 이름 지정 규칙에 맞게 조정하십시오.


0

한 가지 대안은 원하는 작업을 수행하기 위해 자체 컨텐츠 프로세서를 작성하는 것입니다. 이렇게하면 "반사율"레이어 (또는 여러 개의 반사율 레이어)에 특별한 이름을 지정하고 콘텐츠 프로세서가 해당 데이터를 알파 채널에 넣도록 할 수 있습니다. (또는 실제로 원하는 모든 종류의 프로세스를 구현하십시오.)

XNA와 김프 (이것이 내가 사용하고 친숙한 것임)를 사용하는 경우이 XCF 임포터 를 컨텐츠 파이프 라인에 추가하고 특별히 명명 된 레이어를 처리하기 위해 필요한 수정을하는 것이 매우 쉽습니다 .

XNA가 아닌 Unity를 사용함에 따라 사용 가능한 컨텐츠 파이프 라인 옵션에 익숙하지 않습니다. 그러나 아마도 링크 된 코드가 콘텐츠 프로세스 내에서 작동하도록 조정할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.