import mujoco, numpy as np
from PIL import Image
def build(off):
    return f"""<mujoco><compiler meshdir="."/>
  <asset><mesh name="A" file="pin_test_A.stl" scale="0.001 0.001 0.001"/>
  <mesh name="B" file="pin_test_B.stl" scale="0.001 0.001 0.001"/></asset>
  <visual><headlight ambient="0.45 0.45 0.45"/></visual>
  <worldbody><light pos="0.1 0.2 0.3" dir="-0.3 -0.5 -1"/>
    <geom type="mesh" mesh="A" rgba=".2 .52 .85 1"/>
    <geom type="mesh" mesh="B" rgba=".93 .55 .16 1" pos="0 {off} 0"/></worldbody></mujoco>"""
ims=[]
for off,az,el,d in [(0.0,40,-25,0.09),(0.018,40,-25,0.10),(0.018,-140,15,0.10)]:
    m=mujoco.MjModel.from_xml_string(build(off)); dd=mujoco.MjData(m); mujoco.mj_forward(m,dd)
    c=mujoco.MjvCamera(); c.lookat[:]=[0.04,-0.02,-0.034]; c.distance=d; c.azimuth=az; c.elevation=el
    with mujoco.Renderer(m,470,630) as r: r.update_scene(dd,c); ims.append(r.render())
Image.fromarray(np.hstack(ims)).save("coupon_view.png"); print("wrote")
