Skip to content

About

A lightweight 3D development assistant skill for Claude Code - generate Three.js scenes, process 3D assets, and provide best practices

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎨 3D Dev Skill for Claude Code

MIT License Claude Code Three.js

生成一个 Three.js 场景需要 200 行代码?用自然语言,1 句话搞定。

快速开始 • 示例展示 • 为什么选择 • 贡献


🎯 这个技能解决什么问题?

作为 3D 开发者,你是否遇到过:

  • ❌ 每次都要写几百行 Three.js 样板代码
  • ❌ 查文档、调参数,一个简单场景要花 2 小时
  • ❌ 模型转换要记住各种命令行工具
  • ❌ 最佳实践散落各处,不知道如何优化性能

现在,用自然语言和 AI,30 秒搞定。


⚡ 30 秒快速开始

# 1. 安装技能
git clone https://github.com/AIPMAndy/3d-dev-skill.git ~/.claude/skills/3d-dev-skill

# 2. 在 Claude Code 中说一句话
"创建一个旋转的地球,带大气层效果"

# 3. 完成!打开生成的 HTML 看效果

就这么简单。


✨ 核心功能

🚀 自然语言生成场景

你说:"创建一个粒子爆炸效果,有 5000 个粒子"
AI 生:完整的 HTML + Three.js 代码,可直接运行

🎨 多种预设模板

  • 基础场景:光照、相机、几何体
  • 动画效果:旋转、缩放、路径动画
  • 交互系统:鼠标控制、拖拽、点击
  • 粒子系统:烟雾、火焰、星空
  • 后处理:辉光、景深、色彩分级
  • 物理引擎:碰撞、重力、刚体

🔄 资源处理

"把 model.obj 转换成 GLTF 格式并优化"
# 自动调用 obj2gltf + gltf-pipeline

📚 内置最佳实践

  • 性能优化建议(LOD、实例化、几何合并)
  • 常见问题诊断(黑屏、闪烁、内存泄漏)
  • 可复用组件库(天空盒、水面、地形)

🎬 示例展示

从零到炫酷场景

粒子星空

创建一个星空背景
有 10000 个随机分布的星星

⏱️ 生成时间:15 秒

物理模拟

创建一个方块塔
点击鼠标发射小球击倒它们
添加重力和碰撞

⏱️ 生成时间:25 秒

着色器效果

创建一个水波纹效果
鼠标移动产生涟漪

⏱️ 生成时间:20 秒

📺 观看完整演示视频 | 🎮 在线试玩所有示例


🆚 为什么选择这个技能?

传统 Three.js 开发

// 1. 引入库
import * as THREE from 'three';

// 2. 创建场景、相机、渲染器
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

// 3. 创建几何体和材质
const geometry = new THREE.BoxGeometry(1, 1, 1);
const material = new THREE.MeshPhongMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);

// 4. 添加光照
const light = new THREE.DirectionalLight(0xffffff, 1);
light.position.set(5, 5, 5);
scene.add(light);
const ambientLight = new THREE.AmbientLight(0x404040);
scene.add(ambientLight);

// 5. 设置相机位置
camera.position.z = 5;

// 6. 动画循环
function animate() {
    requestAnimationFrame(animate);
    cube.rotation.x += 0.01;
    cube.rotation.y += 0.01;
    renderer.render(scene, camera);
}
animate();

// 7. 响应式处理
window.addEventListener('resize', () => {
    camera.aspect = window.innerWidth / window.innerHeight;
    camera.updateProjectionMatrix();
    renderer.setSize(window.innerWidth, window.innerHeight);
});

// ... 还有几十行优化代码

⏱️ 耗时:2-3 小时(包括查文档、调试)


使用 3D Dev Skill

"创建一个旋转的绿色立方体,带光照"

⏱️ 耗时:30 秒

效率提升:240 倍 🚀


📦 支持的功能矩阵

功能分类 具体能力 命令示例
几何体 基础图形、复杂模型、自定义几何 "创建一个扭曲的圆环"
材质 标准材质、物理材质、着色器材质 "使用金属材质,粗糙度 0.3"
光照 环境光、平行光、点光源、聚光灯 "添加暖色调的日落光照"
动画 关键帧、路径、骨骼、变形 "让立方体沿着正弦波路径移动"
交互 鼠标、触摸、键盘、VR 控制器 "添加 OrbitControls 和点击事件"
粒子 点云、粒子系统、实例化 "创建 10000 个粒子组成的烟雾"
后处理 Bloom、DOF、SSAO、色彩分级 "添加辉光效果和景深"
物理 碰撞检测、刚体、约束 "让方块受重力影响掉落"
资源 GLTF、OBJ、FBX 加载和转换 "加载 model.gltf 并添加动画"
优化 LOD、合并、实例化、压缩 "优化场景,目标 60fps"

🛠️ 安装和使用

前置要求

  • Claude Code(桌面版、CLI 或 Web 版)
  • Node.js 16+(用于资源转换工具)

安装步骤

# 克隆到 Claude Code 技能目录
git clone https://github.com/AIPMAndy/3d-dev-skill.git ~/.claude/skills/3d-dev-skill

# 验证安装
ls ~/.claude/skills/3d-dev-skill

使用方式

在 Claude Code 中直接用自然语言描述你想要的 3D 场景:

示例 1:基础场景
"创建一个基础的 Three.js 场景,包含一个旋转的立方体"

示例 2:复杂效果
"创建一个粒子星空,有 5000 个星星随机分布,相机可以用鼠标控制"

示例 3:交互场景
"创建一个交互式场景,点击鼠标生成随机颜色的球体,球体会受重力影响下落"

示例 4:资源转换
"把 models/character.obj 转换成 GLTF 格式,并压缩纹理"

示例 5:性能优化
"分析这个场景的性能瓶颈,给出优化建议"

🎓 进阶用法

自定义模板

在 templates/ 目录下添加你自己的模板:

<!-- templates/my-template.html -->
<!DOCTYPE html>
<html>
<head>
    <title>My Custom Scene</title>
    <!-- 模板代码 -->
</head>
</html>

然后在对话中引用:

"使用 my-template 模板创建场景"

组合多个功能

"创建一个场景:
1. 地面是一个大平面,带网格材质
2. 中心有一个旋转的地球模型
3. 周围有 1000 个小星星环绕
4. 添加鼠标控制相机
5. 添加辉光后处理效果"

集成到项目

生成的代码可以直接集成到你的项目中:

// 提取生成的核心逻辑
import { createScene } from './generated-scene.js';

const scene = createScene({
    containerEl: document.getElementById('canvas'),
    onReady: () => console.log('Scene loaded!')
});

📚 参考资源

项目内置了丰富的参考文档:


🤝 贡献

欢迎贡献你的模板、示例和改进建议!

贡献方式

  1. 添加新模板 - 分享你的炫酷场景
  2. 报告问题 - 发现 bug 或提出改进建议
  3. 完善文档 - 补充使用案例和最佳实践
  4. 分享作品 - 在 Discussions 展示你的创作

查看 贡献指南 了解详情。


🌟 社区展示

用这个技能创造了酷炫的东西?我们想看到!


🙏 致谢

灵感来源:

使用的工具:


📄 许可证

MIT License - 详见 LICENSE


💬 联系和支持


如果这个项目对你有帮助,请给个 ⭐ Star!

Made with ❤️ by Andy

About

A lightweight 3D development assistant skill for Claude Code - generate Three.js scenes, process 3D assets, and provide best practices

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages