Uh oh!
There was an error while loading. Please reload this page.
feat: add Person, procedural characters with styles and skins - #7
Open
anistark wants to merge 1 commit into
Open
feat: add Person, procedural characters with styles and skins#7anistark wants to merge 1 commit into
anistark wants to merge 1 commit into
Conversation
- New `person` component: a seeded, clothed, articulated human figure with `kind` role presets (villager, merchant, guard, sailor, farmer, noble, scholar, traveler), gender/age/height/build silhouettes, hair, facial hair, outfits, hats, accessories, and poses
- `style` templates set the whole look: `anime` (default, big lit eyes, ~6-head proportions) or `realistic` (canonical 7.5-head figure)
- `skin` swaps a full cosmetic loadout (clothes, colors, headwear, accessories) as one JSON prop; nine named presets ship as `PERSON_SKINS`, from `festival` to `pirate`
- Figures breathe, blink, shift their weight, and turn their head to watch you; detail drops to a cheap silhouette past ~18 units
- `physics={false}` turns one into a bare visual, which is how `Player` gets its new third-person body
- Trait precedence is explicit prop > `skin` > `kind` > seed, so `<Person seed={3} />` is a complete villager and every prop narrows it
For devs:
- Geometry is lathe profiles (tapered limbs, one-piece elliptical torso), built in one `useMemo` and animated via joint groups in `useFrame`; one capsule collider
- New styles are one `StyleSpec` record; skins are `PersonSkin` bundles resolved by name or object
- Registered in `index.ts`, `registry.ts`, `registry/registry.json` (category `character`); manifest and component doc regenerated; gallery preview + `SEEDED` entry
- The docs library world places a librarian and a traveler and hands `Player` a `Person` avatar
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
personcomponent: a seeded, clothed, articulated human figure withkindrole presets (villager, merchant, guard, sailor, farmer, noble, scholar, traveler), gender/age/height/build silhouettes, hair, facial hair, outfits, hats, accessories, and posesstyletemplates set the whole look:anime(default, big lit eyes, ~6-head proportions) orrealistic(canonical 7.5-head figure)skinswaps a full cosmetic loadout (clothes, colors, headwear, accessories) as one JSON prop; nine named presets ship asPERSON_SKINS, fromfestivaltopiratephysics={false}turns one into a bare visual, which is howPlayergets its new third-person bodyskin>kind> seed, so<Person seed={3} />is a complete villager and every prop narrows itFor devs:
useMemoand animated via joint groups inuseFrame; one capsule colliderStyleSpecrecord; skins arePersonSkinbundles resolved by name or objectindex.ts,registry.ts,registry/registry.json(categorycharacter); manifest and component doc regenerated; gallery preview +SEEDEDentryPlayeraPersonavatar