# Three.js Demo Showcase
**π [Live Preview](https://avan0203.github.io/threejs-demo/) β’ [Get Started](#getting-started) β’ [Add Your Own Case](#adding-new-cases)**
[](https://opensource.org/licenses/MIT)
[](https://threejs.org/)
---
## Introduction
**Three.js Demo** is a dynamic case library built with [Three.js](https://threejs.org/) and modern web technologies. It serves as both a **learning playground** and a **feasibility testbed** for interactive 3D web experiences.
Whether you're exploring shaders, physics simulations, or model interactions β this project has you covered!
### Featured Capabilities
- π¦ **Model Import** (GLTF, OBJ, etc.)
- π§ **Geometry Transformations** (scale, rotate, morph)
- π· **Advanced Camera Controls** (orbit, fly, first-person)
- π **Object Picking & Selection**
- π¨ **Custom Shader Effects**
- βοΈ **Physics Integration** (via Cannon.js or similar)
- ...and more experimental features!

---
## Getting Started
Clone the repo and spin up the dev server in seconds:
```shell
# Install dependencies (using pnpm)
pnpm install
# Start the development server
pnpm dev
```
Visit http://localhost:6500 (or your configured port) to explore the demos!
---
## Adding New Cases
Want to contribute a new demo? Follow these steps:
1. Register your case in pageList.js:
```javascript
{
type: 'shaders',
name: 'My Cool Shader',
path: '/shaders/my-cool-shader'
}
```
2. Create your demo files under the appropriate directory (e.g., `src/pages/shaders/my-cool-shader/`).
3. Generate a preview screenshot:
```shell
# First time? Install browser for Puppeteer:
npx puppeteer browsers install chrome
# Then generate screenshots
pnpm screenshot
```
4. Preview your work:
```shell
pnpm dev
```
Your new case will appear in the gallery automatically! π
---
## Contribution
We β€οΈ contributions! Whether it's:
* A bug fix π
* A new demo idea π‘
* Documentation improvement π
* Performance optimization β‘
Feel free to:
* π₯ Open an Issue
* π Submit a Pull Request
Letβs build the best Three.js learning resource together!
---
## License
This project is open-source under the MIT License.
See the `LICENSE` file for details.
> Made with β€οΈ and WebGL
>
> Powered by Three.js, Vite, and a sprinkle of creativity β¨