"""The model rendered from the concept's fitted camera, laid over the user's concept: outline overlay and side-by-side. python build/ae_concept_compare.py [mode] (mode: concept_wb or concept_cy renders from ae_render.py)""" import os, sys import numpy as np from PIL import Image, ImageDraw ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) pfx = sys.argv[1]; mode = sys.argv[2] if len(sys.argv) > 2 else 'concept_wb' con = Image.open(os.path.join(ROOT, 'reference/user_concept.jpg')).convert('RGB') ren = Image.open(os.path.join(ROOT, 'previews/compare', f'{pfx}_{mode}.png')).convert('RGBA') a = np.asarray(ren)[..., 3] > 20 edge = a & ~(np.roll(a, 1, 0) & np.roll(a, -1, 0) & np.roll(a, 1, 1) & np.roll(a, -1, 1)) o = np.asarray(con).copy() o[edge] = (255, 40, 40) box = (600, 50, 1130, 470) over = Image.fromarray(o).crop(box).resize(((box[2] - box[0]) * 2, (box[3] - box[1]) * 2), Image.LANCZOS) over.save(os.path.join(ROOT, 'previews/compare', f'{pfx}_{mode}_overlay.png')) bg = Image.new('RGBA', ren.size, (18, 26, 34, 255)); bg.alpha_composite(ren) pair = Image.new('RGB', ((box[2] - box[0]) * 2 + 10, box[3] - box[1]), (255, 255, 255)) pair.paste(con.crop(box), (0, 0)); pair.paste(bg.convert('RGB').crop(box), (box[2] - box[0] + 10, 0)) pair = pair.resize((pair.size[0] * 2, pair.size[1] * 2), Image.LANCZOS) pair.save(os.path.join(ROOT, 'previews/compare', f'{pfx}_{mode}_pair.png')) print('ok')