SOURCE / PINNED RELEASE
Made of little things.
Soybert 3D
- Release
- 4bf80e758af1…
- Author-recorded commit
- 298fa2d0e8b1…
- License
- LICENSE
- Author’s source reference
- nostr://npub1n8ga89w8h6tvwamxusfyzexw8gjy84yxu9rxgnmk955cxtml4ujswzxydd/wss%3A%2F%2Fgit.napplet.soy%2F/n-9021e1b6a96
Archive hash verified: 7083223a53bbd320…. The source-to-build association is the author’s claim; it has not been independently rebuilt.
# Soybert character showcase
nappletType: soybert-3d
purpose: Inspect and control a rigged 3D interpretation of the supplied Soybert mascot.
The rotating introduction is a user-requested interactive turntable, with one Enter stage action. The stage supports camera-relative walking, jump, shooting harmless light pellets, celebration, orbit/zoom, reset and returning to the turntable. No enemies, score, networking or persistence.
Art: cream rounded tofu block, subtle pores, shiny brown eyes, raised smile, blush cheeks, short plush legs and floating hands, walnut/charcoal shotgun. Side and back are inferred from the supplied front three-quarter reference. Editable Blender armature, rigidly weighted meshes, five named animation actions, portable GLB, and a bundled mesh/rig export used by the browser.
NAPs used: theme (optional), config (optional).
requires: none.
SDK helpers: themeGet, themeOnChanged, config.registerSchema, config.subscribe, config.openSettings.
Fallbacks: warm dark palette and default motion/sound settings. All controls work without host domains. Keyboard events stay within the focused applet; touch controls always available.
data flow: bundled meshes/materials -> WebGL scene; local gestures -> rig/physics; no remote bytes or stored state.
relay escape hatches: none.
config: sound enabled, reduced motion, movement speed (default 6.2).
interop: none.
Density: compact 13px controls; 40px touch actions when space permits. Full-frame canvas with sparse translucent controls; no title masthead. Tiny/short frames collapse labels and instructions; compact portrait keeps stage above touch controls; regular/wide frames show keyboard hints and use the whole scene. No minimum size.
Theme: background/text/primary map to html/body/root and the UI; the studio uses a dark charcoal set tinted subtly by the runtime palette for character contrast. Fallback #171c18 / #f3eddd / #c8e79c. Dark and light both supported.
States: inline preparation text; WebGL failure shows a helpful message; pause on focus/visibility loss; no identity needed.
Blender authoring happens through the already-running Blender MCP local TCP bridge. The runtime app contains no Blender connection. Three.js loads no remote resources: app imports a compact mesh-and-bone export directly, avoiding network-capable asset loaders.
User-approved visual exception: the intro includes true beveled 3D “soybert” and smaller “napplet.soy” lettering in Fredoka from @fontsource/fredoka. Both lines share the same Fredoka 700 weight, bevel, gold face and brown sides. The default camera is pulled back to leave clear space below the lettering. It is part of the requested splash presentation and disappears during free roam. Floating hand bones are parented to the shotgun and pump so the grip stays attached through recoil and pumping.
