Skip to content

Instantly share code, notes, and snippets.

@takana-v
Last active February 19, 2023 10:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takana-v/84ef155024c08e06f964b649bab6cc88 to your computer and use it in GitHub Desktop.
Save takana-v/84ef155024c08e06f964b649bab6cc88 to your computer and use it in GitHub Desktop.
UnityのMaskmapをMetallic/Occlusion/Detail Mapに変換するスクリプト
from pathlib import Path
import numpy as np
from PIL import Image
def open_maskmap(path: Path) -> np.ndarray:
img = Image.open(path)
return np.asarray(img)
def mask2metallic(maskmap: np.ndarray) -> Image.Image:
metallic = np.dstack([maskmap[:, :, 0], maskmap[:, :, 3]])
return Image.fromarray(metallic, "LA")
def mask2occlusion(maskmap: np.ndarray) -> Image.Image:
occlusion = maskmap[:, :, 1]
return Image.fromarray(occlusion, "L")
def mask2detail(maskmap: np.ndarray) -> Image.Image:
detail = maskmap[:, :, 2]
return Image.fromarray(detail, "L")
if __name__ == "__main__":
# ここら辺は各自の環境で書き換える
parent_folder = Path(r"/path/to/Textures")
for child_folder in parent_folder.iterdir():
for p in child_folder.glob("*_MaskMap.png"):
mask = open_maskmap(p)
metallic = mask2metallic(mask)
metallic.save(child_folder / p.name.replace("MaskMap", "MetallicMap"))
occlusion = mask2occlusion(mask)
occlusion.save(child_folder / p.name.replace("MaskMap", "OcclusionMap"))
detail = mask2detail(mask)
detail.save(child_folder / p.name.replace("MaskMap", "DetailMap"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment