docs: added Task notes for task3

This commit is contained in:
anshk 2026-03-30 20:21:29 +05:30
parent 835e55a6e3
commit 22cd2eac6b

View File

@ -1,60 +1,121 @@
# Task: [Feature Name] # Task: Duplicate Object / Duplicate Group
## Objective ## Objective
What is the feature trying to do? Duplicate an object and, if possible, duplicate a grouped structure.
## Test File Split
- Vanilla object duplication test: `main.js`
- Vanilla group duplication test: `group.js`
- R3F object duplication test: `src/App.jsx`
- R3F group duplication test: `src/Group.jsx`
- Run object test: default route
- Command (Vanilla object): `npm run dev:object` or `yarn dev:object`
- Command (Vanilla group): `npm run dev:group` or `yarn dev:group`
## Vanilla three.js ## Vanilla three.js
-Possible: Yes / Partial / No - Possible: Yes
-Notes: - Notes:
-Key concepts: - Object duplication is in `main.js` using mesh clone.
-Complexity: Easy / Medium / Hard - Group duplication is in `group.js` using `THREE.Group()` and group clone.
- Transforms preserved: Yes, duplicate keeps copied transform values and can be moved independently after duplication.
- Structure preserved: Yes, child hierarchy is preserved when duplicating a group.
- Linked or independent: Mostly independent transforms, but geometry and material are shared by default unless explicitly cloned.
- UX clean: Yes for developers, but requires code understanding.
- Key concepts:
- Object3D clone behavior
- Shared vs cloned geometry and material
- Complexity: Easy
## R3F ## R3F
-Possible: Yes / Partial / No - Possible: Yes
-Notes: - Notes:
-What R3F abstracted: - Object duplication is in `src/App.jsx` using repeated meshes with shared geometry/material.
-Complexity: Easy / Medium / Hard - Group duplication is in `src/Group.jsx` by rendering the grouped component twice.
- Transforms preserved: Yes, each instance has its own position, rotation, and scale.
- Structure preserved: Yes, component tree/group structure is preserved.
- Linked or independent: Instance transforms are independent; geometry/material may be shared or isolated depending on how props/instances are created.
- UX clean: Yes, declarative and easier to scale.
- What R3F abstracted:
- Imperative clone calls become declarative repeated components/instances.
- Complexity: Easy
## Thob Page Builder ## Thob Page Builder
-Possible: Yes / Partial / No - Possible: Yes
-Notes: - Notes:
-Builder steps: - There is a shortcut to duplicate objects.
-Complexity: Easy / Medium / Hard - Observed behavior: duplicate creates a completely different object that cannot be linked to the original, unlike vanilla and R3F patterns where sharing/linking behavior can be controlled.
- Duplicate group behavior: Same as single object duplication, a complete copy is made with no linking.
- Transforms preserved: Yes.
- Structure preserved: Yes, as copy- paste duplication.
- Linked or independent: Independent only, with no linking behavior available.
- UX clean: Mixed. Shortcut is quick, but behavior is confusing because linked duplication is not possible.
- Builder steps:
- Create an object
- Use duplicate shortcut
- Duplicate a grouped structure and verify it is a full independent copy
- Complexity: Medium
## What to Observe
- Are transforms preserved?
- Vanilla: Yes
- R3F: Yes
- Thob: Yes
- Does duplication preserve structure?
- Vanilla: Yes
- R3F: Yes
- Thob: Yes, as full copy- paste duplication
- Does the duplicate remain linked or independent?
- Vanilla: Transform- independent, data can be shared by default unless cloned
- R3F: Transform- independent, sharing depends on implementation
- Thob: Independent only, no linking behavior
- Is the UX clean?
- Vanilla: Technical but predictable
- R3F: Clean and scalable
- Thob: Fast shortcut, but ambiguous result for duplication semantics
## Comparison Summary ## Comparison Summary
-Possible in all 3? Yes / Partial / No - Possible in all 3? Yes
-Main differences: - Main differences:
-Where Thob is better: - Vanilla and R3F give clear control over sharing vs independence.
-Where Thob is weaker: - Thob duplicate shortcut creates separate objects and does not support linked behavior.
-What feels awkward or unclear: - Where Thob is better:
- Fast editor action for simple duplication
- Where Thob is weaker:
- No linked duplication model
- No linked group duplication model
- What feels awkward or unclear:
- No option to keep duplicates linked for synchronized edits
## Limitation Type (if any) ## Limitation Type (if any)
-[ ] Editor UX limitation - [x] Editor UX limitation
-[ ] Runtime limitation - [ ] Runtime limitation
-[ ] Schema / data model limitation - [x] Schema / data model limitation
-[ ] Component limitation - [ ] Component limitation
-[ ] Event system limitation - [ ] Event system limitation
-[ ] Asset pipeline limitation - [ ] Asset pipeline limitation
-[ ] Unknown / needs investigation - [ ] Unknown / needs investigation
## Workaround ## Workaround
-Is there a workaround? - Is there a workaround?
-If yes, what is it? - Yes
- If yes, what is it?
- Use reusable components/prefabs and instantiate multiple independent copies.
- If linked behavior is required, use explicit shared data/component references where supported.
## Suggested Improvement ## Suggested Improvement
-What should improve in Thob? - What should improve in Thob?
-Is it: - Add explicit duplicate modes: independent duplicate and linked duplicate.
-editor - Add reliable deep group duplication with clear hierarchy preview.
-runtime - it Is:
-component - editor
-UX - schema/data
-schema/data - UX
## Difficulty Estimate ## Difficulty Estimate
-Easy / Medium / Hard - Medium
## Business Value ## Business Value
-Low / Medium / High - High
## Recommendation ## Recommendation
Should Thob support this better? Why? Yes. Thob should support both independent and linked duplication because currently duplication works as copy-paste only, which limits synchronized workflows.