基于 Next.js + @react-three/fiber 的小工具,把 GLB/GLTF 模型实时变成粒子雕塑,并可随时切换回原始 Mesh。
- 安装依赖:
pnpm install - 开发:
pnpm dev打开 http://localhost:3000 - 构建/预览:
pnpm build后pnpm start - 代码检查:
pnpm lint
- ✅ 上传自己的 GLB / GLTF 模型(角色、道具、雕塑都行);上限 3MB,支持从 poly.pizza 下载压缩模型后直接上传。
- ✅ 一键把模型变成粒子雕塑 / 点云:加载后自动转为点云,Leva 面板可调密度、点尺寸、呼吸/旋转/流动等参数。
- ✅ 在「原始 Mesh / 粒子视图」之间随时切换:顶部
Show Mesh / Hide Mesh按钮可叠加或隐藏原始模型,随时对比。 - 其他交互:
Explode / Assemble粒子动画、示例模型快捷切换、上传后显示文件名与错误提示。
- 打开页面,先用顶部 Examples 按钮中的内置模型试效果(模型位于
public/,列表在app/page.jsx的modelOptions)。 - 点击
Upload GLB Model选择本地 GLB/GLTF(≤3MB)。可去 poly.pizza 下载圣诞树等模型后直接上传。 - 模型会立刻被转换为粒子雕塑;通过 Leva 悬浮面板的
Particles分组调整粒子密度、点大小、颜色、呼吸/旋转等效果。 - 需要对比原始形态时,用
Show Mesh / Hide Mesh切换 Mesh,可配合Explode / Assemble查看分散/收拢动画。
app/page.jsx:主界面与交互逻辑(模型选择、上传、Mesh/粒子切换)。src/components/canvas/DogParticles.jsx:粒子生成与动画着色器,接受模型 URL 并控制 point cloud。src/components/canvas/View.jsx:共享 Canvas、轨道控制与灯光。public/:默认示例 GLB/GLTF 与静态资源,新增示例模型放这里即可被直接引用。
- 上传新模型会自动释放旧的 blob URL,方便长时间预览。
- 建议使用面数适中的模型(< 5k-10k 面),从 poly.pizza 选择低模版本效果更流畅。
GLB Particle Sculpture Lab lets you drop any GLB/GLTF and instantly turn it into a particle sculpture, with live controls to swap back to the original mesh.
- Install deps:
pnpm install - Dev server:
pnpm devthen open http://localhost:3000 - Build/preview:
pnpm buildthenpnpm start - Lint:
pnpm lint
- Upload your own GLB/GLTF (≤3MB). Grab low-poly models from https://poly.pizza and upload directly.
- One-click particle/point-cloud conversion with Leva controls for density, point size, breathing, rotation, flow, etc.
- Toggle between mesh and particle view anytime with
Show Mesh / Hide Meshand combine withExplode / Assemblefor spread/merge motion.
- Try the built-in examples first. They live in
public/and are listed inapp/page.jsxasmodelOptions. - Click
Upload GLB Modelto pick a local GLB/GLTF (≤3MB). Models from poly.pizza work great. - The model instantly becomes a particle sculpture. Tweak particle density/size/color and motion in the floating Leva
Particlesgroup. - Use
Show Mesh / Hide Meshto compare with the original mesh; pair withExplode / Assembleto see it disperse/collect.
app/page.jsx: UI and interactions (model selection, upload, mesh/particle toggles).src/components/canvas/DogParticles.jsx: Particle generation + shader animation, consumes model URLs.src/components/canvas/View.jsx: Shared Canvas, orbit controls, and lights.public/: Default GLB/GLTF assets. Add more here to reference them directly.
- Old blob URLs are released automatically after a new upload for long sessions.
- Best results with modest polycounts (<5k–10k tris). Low-poly models from poly.pizza keep the particle sim smooth.