Character Appearance Phase 1 Done
Bump appearance payloads to version 2 and add `morphRegions` and `facialBoneMorphs` capture, serialization, and proxy application. Also fix head-part syncing when sender and proxy counts differ by reallocating the proxy array instead of deferring the whole list, and update the Python harness and protocol docs to match.
This commit is contained in:
+11
-3
@@ -74,7 +74,7 @@ Example after server processing:
|
||||
{ "slot": "headband", "formId": "" }
|
||||
],
|
||||
"appearance": {
|
||||
"version": 1,
|
||||
"version": 2,
|
||||
"raceFormId": "00013746",
|
||||
"height": 1.0,
|
||||
"morphWeight": { "thin": 0.0, "muscular": 0.0, "large": 0.0 },
|
||||
@@ -82,7 +82,9 @@ Example after server processing:
|
||||
"hairColorFormId": "",
|
||||
"facialHairColorFormId": "",
|
||||
"headParts": [],
|
||||
"morphs": []
|
||||
"morphs": [],
|
||||
"morphRegions": [],
|
||||
"facialBoneMorphs": []
|
||||
},
|
||||
"serverTime": 1780212128.3011043
|
||||
}
|
||||
@@ -160,7 +162,7 @@ receivers keep the proxy's existing/default body and face. When present, it is a
|
||||
best-effort snapshot for male-proxy-compatible runtime visuals:
|
||||
|
||||
```text
|
||||
version Appearance payload version. Current value is 1.
|
||||
version Appearance payload version. Current value is 2.
|
||||
raceFormId Hex-string race form ID captured for diagnostics/future use; receivers do not switch proxy race yet.
|
||||
height NPC height scalar.
|
||||
morphWeight Body triangle weights: thin, muscular, and large.
|
||||
@@ -169,8 +171,14 @@ hairColorFormId Hex-string `CLFM` form ID for hair color, or empty when un
|
||||
facialHairColorFormId Hex-string `CLFM` form ID for facial hair color, or empty when unavailable.
|
||||
headParts Hex-string `HDPT` form IDs for the sender's current head parts.
|
||||
morphs Morph slider values as `{ "id": hex-string, "value": number }` entries.
|
||||
morphRegions Region morph slider values as a flat array of numbers (added in version 2).
|
||||
facialBoneMorphs Bone-based facial morphs as `{ "id": hex-string, "position": [x,y,z], "rotation": [x,y,z], "scale": [x,y,z] }` entries (added in version 2).
|
||||
```
|
||||
|
||||
`morphRegions` and `facialBoneMorphs` are optional and additive. Version 1
|
||||
senders omit them; receivers must treat their absence as "no change" and keep
|
||||
existing proxy morph data.
|
||||
|
||||
Receivers must treat missing or malformed appearance subfields as non-fatal and
|
||||
apply only the parts they can resolve locally. Gender is intentionally not part
|
||||
of this payload yet; female proxy support can add it later.
|
||||
|
||||
Reference in New Issue
Block a user