# Walking shiba (a viewer's request on Kick, 2026-10-11). Body faces +x, root = torso # centre, H above the ground. Legs (_thigh/_shin/_foot) are placed every tick by shibawalk.lsl; "tail" wags. # Colours from my shiba plushie (making/shiba). Claude Opus 5.5 (Tessel). import json from pathlib import Path OR, CR, BK = "#d9772b", "#f3e3c8", "#1a1412" FUR_OR = {"texture": "b65790e8-8e86-ebf6-148f-61b3aee8d3c8", "repeats": [2, 2]} # gen_fur.py, uploaded 2026-10-11 FUR_CR = {"texture": "9ec40281-7680-318e-0d23-f83664143458", "repeats": [2, 2]} prims = [] def p(name, shape, size, pos=None, **kw): d = {"name": name, "shape": shape, "size": size} if pos is not None: d["pos"] = pos d.update(kw) if d.get("color") == OR: d.update(FUR_OR, color="#ffffff") elif d.get("color") == CR: d.update(FUR_CR, color="#ffffff") prims.append(d) p("Tessel's Walking Shiba", "sphere", [0.42, 0.21, 0.19], color=OR) p("belly", "sphere", [0.34, 0.16, 0.12], [0.0, 0, -0.05], color=CR) p("chest", "sphere", [0.15, 0.17, 0.17], [0.15, 0, -0.01], color=CR) p("neck", "sphere", [0.14, 0.14, 0.16], [0.18, 0, 0.07], color=OR) p("head", "sphere", [0.17, 0.16, 0.15], [0.24, 0, 0.14], color=OR) p("muzzle", "sphere", [0.10, 0.085, 0.07], [0.315, 0, 0.11], color=CR) p("nose", "sphere", [0.03, 0.035, 0.025], [0.365, 0, 0.125], color=BK, shiny="high") for s, y in (("l", 1), ("r", -1)): p("cheek_" + s, "sphere", [0.07, 0.06, 0.06], [0.29, 0.05 * y, 0.115], color=CR) p("eye_" + s, "sphere", [0.025, 0.025, 0.028], [0.31, 0.042 * y, 0.165], color=BK, shiny="high") p("brow_" + s, "sphere", [0.016, 0.022, 0.012], [0.302, 0.04 * y, 0.193], color=CR) p("ear_" + s, "box", [0.055, 0.06, 0.07], [0.235, 0.05 * y, 0.235], rot=[-12 * y, -8, 0], color=OR, top_size=[0, 0]) # torus: size x is the tube's thickness along the hole axis; rot z 90 turns the hole to face sideways, so the curl # shows as a ring from the side p("tail", "torus", [0.055, 0.13, 0.13], [-0.135, 0.015, 0.105], rot=[0, -10, 90], color=OR, hole_size=[1.0, 0.4], desc="tail (rest pose recorded here by the script) v2") for leg in ("fl", "fr", "bl", "br"): # thighs taper toward the knee (+z points at the knee once the script places them); set here, at build time: # resizing linked children with prim-mod later flung them across the region (2026-10-11) p(leg + "_thigh", "cylinder", [0.08, 0.08, 0.15], color=OR, top_size=[0.55, 0.55]) p(leg + "_shin", "cylinder", [0.05, 0.05, 0.145], color=CR, top_size=[0.75, 0.75]) p(leg + "_foot", "sphere", [0.065, 0.05, 0.035], color=CR) spec = { "name": "Tessel's Walking Shiba", "desc": "A shiba that trots after you on four legs. Touch: follow/stay. Owner /7: come, stay, sit, stand, hop, reset. Made by Tessel (an AI).", "defaults": {"texture": "blank", "shiny": "none"}, "prims": prims, } out = Path(__file__).parent / "shibawalk.json" out.write_text("// Walking shiba (generated by gen_spec.py). Claude Opus 5.5 (Tessel).\n" + json.dumps(spec, indent=1)) print(len(prims), "prims")