Placement accuracy, chirality fix, Mannequin actors, diagnostics + changelog#2
Open
dropchop wants to merge 5 commits into
Open
Placement accuracy, chirality fix, Mannequin actors, diagnostics + changelog#2dropchop wants to merge 5 commits into
dropchop wants to merge 5 commits into
Conversation
Placement audit against the real sample scene found freestanding props rotated 90 degrees wrong (the sofa punched 50 cm through the wall it was placed against) and asymmetric parts mirrored to the wrong side (the open door panel swung outside the room). Calibrated ground truth from Sceneforclaude.hcw + the palette screenshots: * Freestanding props (RotatorObject): the stored angle points at the prop's BACK -- the recipe front faces angle+180, so the recipe frame's screen rotation is angle+90. The sofa now sits flush against the rear wall (back edge 240.3 vs wall 240 -- the scene's own placement precision), length parallel, facing the room. * Wall-snapped sets (doors/windows): <snapPath> names the wall and snapPercent the position along it; the angle is the wall segment's direction, and the recipe width lies along it. Parser now records wall_snapped from snapPath. * _bake_parts gains mirror_y: recipes are authored in screen orientation (+Y = prop front), so the screen->Unreal Y flip must also negate local +Y offsets, part yaws and rolls -- otherwise backrests/door panels land mirrored. The door panel now swings into the room, hinge edge on the wall plane. Lights keep the legacy bake until their own calibration. Sizes verified accurate: sofa depth 79.4 cm (wall gap) vs recipe 80; door opening 70 = 100 x objectScale 0.7. 1 SD unit = 1 cm holds. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013hs93AfUfGEaf5cKBTKDgj
Micah placed a table in a room and it appeared on the other side. Root
cause: ir_to_ue_location negated Y ("screen down becomes -Y"). Shot
Designer's floor-plan frame (x right, y down, z up) and Unreal's frame
are BOTH left-handed, so that map has determinant -1 -- it reflected the
entire scene. Everything was self-consistent, which is why walls and
distances always looked right, but chirality was flipped: an actor on
the camera's screen-left in Shot Designer rendered on the camera's
RIGHT in Unreal, and every through-lens shot was mirrored.
The conversion is now the identity (metres->cm scale only, yaw
unchanged), verified through-camera against the sample scene: the Red
actor lands on the camera's left, matching the Shot Designer screen.
The mirror_y local-frame compensation added in the previous commit
existed only to counter this reflection inside prop recipes -- removed;
recipes' screen-frame authoring now carries into UE directly. Prop
angle conventions (freestanding = back direction, wall-snapped = wall
direction) are unchanged and re-verified: sofa flush against the rear
wall, door panel swinging into the room.
Sizing double-checked while here: objectScaleX/Y flows through
correctly (synthetic 2.5x square table -> 225x225 cm top at the exact
SD plan position; sample door opening 70 = 100 x 0.7).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013hs93AfUfGEaf5cKBTKDgj
…ation Micah's "large square table" is stored at objectScaleX/Y = 0.5673 (the Scaler sub-object is empty -- objectScale is definitively where resize lands). He shrank the icon below its native size and it still read as large on the Shot Designer canvas, so SD's table art at scale 1.0 is far larger than the 90 cm real-world recipe base; recipe x objectScale emits a 51 cm table. Recipe base sizes happen to match the SD natives for SOFA (~80) and DOOR (100) but not for tables -- per-icon native sizes need calibration against user-measured spans. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013hs93AfUfGEaf5cKBTKDgj
…ight Actors were falling back to capsule cylinders in projects without the Third Person content pack, silently. Now: * Shot Designer Type B characters (<female>) spawn SKM_Quinn, Type A spawn SKM_Manny (Actor.female carried through IR and payload); Quinn falls back to Manny if absent. * More candidate paths covered (UE5 template old/new layouts, UE4 mannequin packs). * Mannequin meshes are authored facing +Y, so spawns apply a -90 yaw offset -- the Manny now looks where the Shot Designer character faces. * When no mannequin exists in the project, the script logs how to add one (Content Drawer -> +Add -> Add Feature or Content Pack -> Third Person) instead of silently dropping capsules. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013hs93AfUfGEaf5cKBTKDgj
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013hs93AfUfGEaf5cKBTKDgj
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 free
to 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.
Week's worth of prop/actor placement fixes, verified by 64 tests. See README changelog for the summary.
https://claude.ai/code/session_013hs93AfUfGEaf5cKBTKDgj