2016-08-16 3 views
0

안녕하세요. 저는 마스크를 화합에 사용하고 있습니다. 이제 마스크 된 텍스처를 가져 와서 png 파일로 저장하려고합니다. 유니티는이 비디오에서 예를 들어 youtube videoUnity 마스크 된 텍스처를 얻고 PNG로 저장하는 방법

을, 마스크

, 나는 마스크 이미지 대신 전체 배경 이미지 또는 마스크 텍스처 싶어.

나는 (GetComponent<Mask>().graphic.mainTexture as Texture2D).GetPixels()을 시도했지만 작동하지 않습니다.

대단히 감사합니다.

+0

출력 텍스처를 직접 계산해야한다고 생각합니다. 이 말은 이미지와 마스크 이미지를 가져 와서 마스크에 따라 이미지의 픽셀을 투명하게 만들어야한다는 뜻입니다. –

답변

1

여기 내가 의견에서 말한 것을 구현 한 것입니다.

마스크의 텍스처는 아래 코드가 제대로 작동하도록 이미지 텍스처와 크기가 같아야합니다. 그렇지 않은 경우 마스크와 겹치는 픽셀과 그렇지 않은 픽셀을 계산해야합니다.

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 

public class GetMaskedImage : MonoBehaviour 
{ 
    public Image img; 
    public Image mask; 

    public RawImage outputImg; 

    void Start() 
    { 
     Texture2D output = new Texture2D(img.sprite.texture.width, img.sprite.texture.height); 
     for (int i = 0; i < img.sprite.texture.width; i++) 
     { 
      for (int j = 0; j < img.sprite.texture.height; j++) 
      { 
       if (mask.sprite.texture.GetPixel(i, j).a > 0.5f) 
        output.SetPixel(i, j, img.sprite.texture.GetPixel(i, j)); 
       else 
        output.SetPixel(i, j, new Color(1f, 1f, 1f, 0f)); 
      } 
     } 

     output.Apply(); 

     outputImg.texture = output; 
    } 
} 
+0

하하, 나는 같은 방식으로하고있다. 모든 픽셀을 계산하고 새로운 텍스처를 설정해야한다는 것은 정말로 불편합니다. 내 말은, 어떻게 일치가 마스크 기능을 구현하는지는 모르겠다. 그러나 방금 구현되었으므로 마스크 된 텍스처를 얻는 것이 매우 쉬울 것이라고 생각했습니다. 어쨌든 제안과 공유에 감사드립니다. – Ciel

+0

유니티 마스크 컴포넌트가 쉐이더 레벨에서 처리한다고 생각합니다. 그래서 그 텍스처의 힙에 스토리지가 없습니다. 그러나 그것은 단지 나의 quess 일뿐입니다. –