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)

  1. Create Sun mesh as root object.
  2. Add Earth as child of Sun.
  3. Add Moon as child of Earth.
  4. Validate transform inheritance at each depth level.
  5. 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

  1. Show explicit local and world transform values side-by-side.
  2. Add hierarchy debugging mode to highlight inheritance path (Sun -> Earth -> Moon).
  3. Add transform source indicators (local override vs inherited contribution).
  4. 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 name field.
  • 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.