"""A sitting shiba inu plushie (viewer asked for one, 2026-10-11). Red-orange back, cream urajiro (muzzle, cheeks, chest, belly, inner ears, paws), pointy ears, curled tail over the back. ~0.45 m tall. +x is where it looks. Claude Opus 5.5 (Tessel). -> shiba.json""" import json import math from pathlib import Path RED, CREAM, BLACK = "#d9772b", "#f6ead6", "#1a1412" prims = [] def add(name, shape, size, pos=None, rot=None, color=RED, **kw): p = {"name": name, "shape": shape, "size": [round(v, 4) for v in size], "color": color, "texture": "blank", **kw} if pos is not None: p["pos"] = [round(v, 4) for v in pos] p["rot"] = rot or [0, 0, 0] p["physics_shape"] = "none" prims.append(p) # sitting: rounded haunch body, upright chest add("Shiba plushie", "sphere", [0.24, 0.22, 0.2]) # haunches (root) add("chest", "sphere", [0.17, 0.17, 0.24], [0.06, 0, 0.11], [0, -15, 0]) add("bib", "sphere", [0.1, 0.13, 0.2], [0.12, 0, 0.1], [0, -15, 0], color=CREAM) add("belly", "sphere", [0.14, 0.15, 0.1], [0.05, 0, -0.04], color=CREAM) # head add("head", "sphere", [0.17, 0.18, 0.15], [0.1, 0, 0.29]) add("muzzle", "sphere", [0.09, 0.09, 0.065], [0.18, 0, 0.265], color=CREAM) add("nose", "sphere", [0.025, 0.035, 0.022], [0.222, 0, 0.278], color=BLACK, shiny="high") for s, side in ((1, "L"), (-1, "R")): add(f"cheek {side}", "sphere", [0.07, 0.06, 0.055], [0.15, s * 0.055, 0.26], color=CREAM) add(f"brow {side}", "sphere", [0.02, 0.025, 0.015], [0.175, s * 0.035, 0.335], color=CREAM) add(f"eye {side}", "sphere", [0.022, 0.022, 0.024], [0.172, s * 0.04, 0.31], color="#0b0807", shiny="high") add(f"eye shine {side}", "sphere", [0.007, 0.007, 0.007], [0.182, s * 0.036, 0.318], color="#ffffff", fullbright=True) # pointy ears: tapered boxes (top_size 0 makes a pyramid), tilted out add(f"ear {side}", "box", [0.055, 0.06, 0.08], [0.085, s * 0.055, 0.385], [s * 15, -8, 0], top_size=[0.0, 0.0]) add(f"inner ear {side}", "box", [0.02, 0.04, 0.055], [0.11, s * 0.053, 0.378], [s * 15, -8, 0], color=CREAM, top_size=[0.0, 0.0]) add(f"front leg {side}", "cylinder", [0.045, 0.045, 0.16], [0.11, s * 0.045, -0.02], color=RED) add(f"front paw {side}", "sphere", [0.06, 0.05, 0.035], [0.13, s * 0.045, -0.095], color=CREAM) add(f"hind paw {side}", "sphere", [0.09, 0.055, 0.04], [0.04, s * 0.1, -0.09], color=CREAM) # curled tail over the back: a ring of spheres, red outside, cream tip in the middle for i in range(8): a = math.radians(200 - 48 * i) # a loop seen from the side, rising off the rump r = 0.06 add(f"tail {i}", "sphere", [0.09, 0.075, 0.09], [-0.12 + r * math.cos(a), 0.0, 0.16 + r * math.sin(a)], color=RED if i < 6 else CREAM) add("tail curl", "sphere", [0.05, 0.05, 0.05], [-0.12, 0.0, 0.16], color=RED) spec = {"name": "Shiba plushie", "desc": "A sitting shiba inu plushie, made on stream by Tessel the AI (Claude). Touch it.", "defaults": {"bump": "none"}, "prims": prims} Path(__file__).with_name("shiba.json").write_text(json.dumps(spec, indent=1)) print(len(prims), "prims")