7.2 KiB
7.2 KiB
Builder Notes (Thob) — Task 2: Parent-Child-Grandchild Hierarchy
Scope
- This task extends Task 1 from a 2-level hierarchy (parent-child) to a 3-level hierarchy:
- Sun (parent)
- Earth (child)
- Moon (grandchild)
Expected Behavior
- Moving/scaling Sun should affect Earth and Moon.
- Moving/scaling Earth should affect Moon but not Sun.
- Moving/scaling Moon should affect only Moon.
- Local orbit controls should remain stable when parent transforms change.
Evaluation
Are transforms predictable?
- Observation: Partially predictable.
- What seems to work: Basic parent inheritance generally works.
- Risk area: Multi-level nested local edits can become hard to trust, especially when parent scale and child position both change.
Is it easy to reason about local vs inherited motion?
- Observation: Not always.
- Reason: In the visual editor, it is not always explicit whether a value is local to the selected object or the result of parent inheritance.
- Impact: Harder debugging when Moon behavior is unexpectedly affected by Sun/Earth changes.
Does the builder make hierarchy understandable?
- Observation: Partially.
- Positive: Creating parent-child links is quick and intuitive.
- Gap: Understanding final motion in deeper hierarchies needs better transform visibility and clearer hierarchy debugging tools.
Builder Flow Used (Task 2)
- Create Sun mesh as root object.
- Add Earth as child of Sun.
- Add Moon as child of Earth.
- Validate transform inheritance at each depth level.
- Test local edits on Earth and Moon independently.
Main Limitation Signals
- Editor UX: Limited visibility into local vs world/inherited transform values.
- Runtime/Component: Nested transform interactions can be difficult to reason about as hierarchy depth increases.
Workaround Attempt
- Keep transforms simple and incremental.
- Test one hierarchy level at a time before combining all levels.
- Avoid aggressive parent scaling before child/grandchild positioning is finalized.
Suggested Product Improvements
- Show explicit local and world transform values side-by-side.
- Add hierarchy debugging mode to highlight inheritance path (Sun -> Earth -> Moon).
- Add transform source indicators (local override vs inherited contribution).
- Improve nested pivot stability when parent scale and child position are both edited.
Console Logs from Builder Webpage
Console Warnings/Errors Seen (Deduplicated) and Probable Meaning
warn: No HydrateFallback element provided to render during initial hydration
- Type: SSR/CSR hydration warning.
- Probable meaning: UI expects a fallback during hydration but none is configured.
- Impact: Can cause temporary blank/flash states and inconsistent first paint in editor panels.
warn: Component is changing from uncontrolled to controlled (Tabs / Popover / RadioGroup / undefined)
- Type: React state-management warning.
- Probable meaning: Components mount with no stable value (
undefined) and later receive a controlled value. - Impact: Property panel controls may behave inconsistently (selection reset, unexpected toggles, unstable form state).
warn: Permissions-Policy header: Unrecognized feature 'browsing-topics'
- Type: Browser/header compatibility warning.
- Probable meaning: Server sends a policy directive not recognized by the current browser.
- Impact: Usually low for scene behavior; mostly noise unless strict policy handling is required.
warn: GetBindingData... method already registered (many IDs)
- Type: Duplicate registration warning.
- Probable meaning: Binding handlers are registered repeatedly across rerenders/reconnects without cleanup.
- Impact: High log noise, potential duplicate updates, performance degradation, and confusing transform propagation behavior.
warn: resetPOI method already registered
- Type: Duplicate command registration warning.
- Probable meaning: POI reset handler attached multiple times.
- Impact: Same action can fire multiple times; camera/selection state may drift.
warn: update-static-component-prop method already registered
- Type: Duplicate command registration warning.
- Probable meaning: Static prop update pipeline is attached repeatedly.
- Impact: Duplicate property writes and unstable editor state during transform edits.
error: THREE.GLTFLoader: Invalid plugin found: missing name
- Type: Asset loader/plugin error.
- Probable meaning: A GLTF loader plugin is passed with invalid shape or missing
namefield. - Impact: Model import/plugin extension paths may fail partially and emit follow-up rendering issues.
warn: THREE.MaterialLoader: Undefined texture null
- Type: Material/asset reference warning.
- Probable meaning: Material expects a texture reference but receives
null. - Impact: Missing/incorrect material rendering; usually non-fatal but degrades visual fidelity.
error: Cannot read properties of null (reading 'contentWindow')
- Type: Runtime exception.
- Probable meaning: Code attempts to post/sync to an iframe/window that is not mounted or already disposed.
- Impact: Sync/preview communication can break, causing editor-preview mismatch.
info/warn: ReconnectingWebSocket reconnecting/open/syncing/...
- Type: Collaboration transport reconnection events.
- Probable meaning: Socket drops and reconnects, then replays sync steps.
- Impact: Usually informational, but frequent reconnects correlate with duplicate registration warnings and state churn.
warn: Icon component has been deprecated
- Type: Deprecation warning.
- Probable meaning: Legacy icon API still used in parts of the editor UI.
- Impact: Low immediate risk; medium future break risk on upgrades.
error: THREE.WebGLRenderer: Context Lost
- Type: Graphics runtime error.
- Probable meaning: WebGL context dropped (resource pressure, repeated remounts, GPU/browser reset).
- Impact: Canvas can freeze/blank; transform testing becomes unreliable until context restoration.
error: Failed to load resource: 404
- Type: Network/resource error.
- Probable meaning: Requested project/resource ID or asset URL is missing/stale.
- Impact: Missing resources can trigger secondary loader/material warnings and broken scene state.
error: R3F: Div is not part of the THREE namespace
- Type: Critical scene composition/runtime error.
- Probable meaning: A DOM element (
Div) was rendered inside the R3F scene tree without proper bridging/extension. - Impact: Can fail rendering subtree, break scene updates, and invalidate hierarchy behavior testing.
Overall Read
- Console output indicates significant editor/runtime instability beyond normal warning noise.
- Duplicate handler registration and uncontrolled/controlled state transitions are the dominant recurring signals.
- Rendering pipeline errors (
R3F Div,Context Lost, loader/material issues) likely amplify unpredictability in parent-child-grandchild transform behavior. - This log profile supports the Task 2 conclusion: hierarchy setup is possible, but transform predictability and local-vs-inherited reasoning are only partially reliable in current builder conditions.