博客
关于工程、设计与一些随手记录。
把一座 Three.js 浮岛搬进静态站
浮岛页只下载自己那一份脚本。场景在运行时现算,Three.js 与整个三维世界都留在这一页的 chunk 里,首屏 HTML 里只有一个空舞台。
摩斯电码:一张表、两处歧义、三个实现细节
摩斯电码本身很简单,麻烦都在细节里:点划的空格归属、全角符号的归一化,以及「一个单位」到底有多长。
让弹球对手会算落点,但算不太准
一个能打赢的 Pong 对手需要两件事:把球的落点算准,再故意算错一点。前者用三角波一次算完,后者每次接球重抽一个偏差。
不建模也能有体积:手工三角化一座浮岛
岛上的岩石不是从建模软件导出的,是五层不规则环带在运行时拼出来的。顶点色加平面着色,就足够让一块几何体看起来像被凿开的石头。
一千二百个实例:把花园压进几次绘制
草叶六百、花一百二、苔石八十五、灌木四十二 —— 花园的密度不靠减数量,靠 InstancedMesh 把同一种东西合并成一次绘制。
一个场景的光:三种灯与只算一次的阴影
半球光给环境色,主光给方向与阴影,轮廓光把岛从背景里拉出来;其余六个灯笼只是点光。阴影贴图只算一次,因为它照的东西一动不动。
