场景图、相机、材质、灯光、动画与后期处理:用最流行的 3D 库搭建完整的实时场景。
每个 three.js 程序都离不开的三件套,以及最小的渲染循环。
先认识内置几何体,再亲手用 position / normal / uv 属性和索引拼出一块会动的曲面。
同一个形状、七种着色模型:Basic、Lambert、Phong、Standard、Physical、Toon、Normal 一字排开对比。
五种光源、它们的辅助线,以及阴影贴图的开启方式、阴影相机和柔化。
用 CanvasTexture 和 DataTexture 生成贴图,理解 UV 映射、平铺、偏移、过滤、各向异性与色彩空间。
用嵌套的枢轴(pivot)搭一个小太阳系,弄懂局部坐标和世界坐标的区别。
用 Timer 驱动的代码动画比较各种缓动曲线,再用 KeyframeTrack、AnimationClip 和 AnimationMixer 做关键帧动画。
用 Raycaster 把鼠标位置变成“指针下是哪个 3D 物体”:悬停高亮、点击选中,并讲清楚 NDC 坐标。
用 InstancedMesh 一次绘制调用画出 3 万个方块,并和“一个物体一个网格”的做法对比绘制调用数。
用 EffectComposer 串起 RenderPass、UnrealBloomPass、自定义 ShaderPass 和 OutputPass,做出霓虹辉光与镜头效果。
用 PMREMGenerator + RoomEnvironment 做基于图像的光照,体验 MeshPhysicalMaterial 的清漆、透射、虹彩,以及各种色调映射。
用 Points、BufferGeometry 和带程序化贴图的 PointsMaterial,配合加法混合,生成一个会旋转的螺旋星系。
用分屏同时观察相机的视锥和它看到的画面,对比透视相机与正交相机,理解 near / far 裁剪。