79 lines
2.6 KiB
Markdown
79 lines
2.6 KiB
Markdown
# Task 3 Report: [Hover Interaction (Visual Feedback)]
|
|
|
|
## Objective
|
|
When the user hovers over the 3D object, something changes visually (e.g., color, scale).
|
|
|
|
## Vanilla Three.js
|
|
- Possible: **Yes**
|
|
- Notes: Requires setting up a `Raycaster`, calculating **Normalized Device Coordinates (NDC)** for the mouse, and manually toggling states inside a `mousemove` event listener.
|
|
- Key concepts: `THREE.Raycaster`, `mousemove`, `NDC calculation`, `Manual State Management`.
|
|
- Complexity: **Medium** (High math/boilerplate).
|
|
|
|
## R3F
|
|
- Possible: **Yes**
|
|
- Notes: Extremely intuitive. Built-in `onPointerOver` and `onPointerOut` props handle everything declaratively. State management is simple with `useState`.
|
|
- What R3F abstracted: `Raycaster computation`, `Normalized Coordinates`, `Event-to-Mesh mapping`.
|
|
- Complexity: **Easy** (Very concise, 5-10 lines of code).
|
|
|
|
## Thob Page Builder
|
|
- Possible: **No (for hover interaction)**
|
|
- Notes:
|
|
- Hover interaction is not supported in the current UI
|
|
- Click trigger exists but did not produce consistent results during testing
|
|
- Interaction system appears limited or unstable for dynamic visual feedback
|
|
- Complexity: **Limited** (interaction features not fully functional)
|
|
|
|
---
|
|
|
|
## Comparison Summary
|
|
|
|
- Possible in all 3? **No** (hover interaction not supported in builder)
|
|
|
|
- Main differences:
|
|
- **Vanilla**: Powerful but requires manual setup
|
|
- **R3F**: Simplest and most reliable interaction system
|
|
- **Thob**: Limited interaction support; hover missing and click behavior unclear
|
|
|
|
- Where Thob is better:
|
|
- **Static visual prototyping**
|
|
|
|
- Where Thob is weaker:
|
|
- **Interaction system reliability**
|
|
- Lack of hover support
|
|
- Unclear event-to-property binding
|
|
|
|
- What feels awkward or unclear:
|
|
- Interaction triggers are visible but behavior is not always predictable
|
|
|
|
---
|
|
|
|
## Limitation Type
|
|
|
|
- [ ] Editor UX limitation
|
|
- [x] Runtime limitation (event execution unclear)
|
|
- [ ] Schema / data model limitation
|
|
- [ ] Component limitation
|
|
- [x] Event system limitation
|
|
- [x] Property binding limitation
|
|
- [ ] Asset pipeline limitation
|
|
|
|
---
|
|
|
|
## Workaround
|
|
|
|
- No reliable workaround found for hover interaction
|
|
- Click interaction may require further investigation or configuration
|
|
|
|
---
|
|
|
|
## Suggested Improvement
|
|
|
|
- Improve reliability of event execution (e.g., onClick behavior)
|
|
- Introduce hover interaction support (`onHoverStart`, `onHoverEnd`)
|
|
- Provide clearer feedback when event actions fail
|
|
|
|
---
|
|
|
|
## Recommendation
|
|
|
|
To enable interactive 3D experiences, the builder should strengthen its event system, ensuring reliable execution of click triggers and adding support for hover-based interactions. |