《赛博城寨》 三维空间笔记系统
大家好,欢迎使用《赛博城寨》,这是个使用 WebGL 开发的概念性程序,体积很小,只有 40kb 左右,用于辅助记录文字。
这是个开放世界,里面有 1 万个大小不一的立方体,使用伪随机数生成。每个立方体的面,我们都可以使用鼠标左键选中(需要靠近方块),然后输入我们想展示在上面的字句。我们可以读取、保存存档。
单击此处加载示例存档,开始探索这个开放世界吧!
按键如下:
- W / A / S / D:控制角色前后左右移动。
- 空格 或 E:跳跃,连续点按为飞翔(推荐使用 E 键)。
- Q 或 Shift:按住以逐渐加速行走(推荐使用 Q 键)。
- F:冻结视角,让您悬停在空中,以便细致观察。
- I:瞬间将您传送至 150 米的高空,俯瞰全景。
详细功能介绍
编辑模式
我们靠近方块的面后,单击左键进入第一视角,待圆点出现色环后,单击左键进入编辑模式。
-
文本偏移:第一行,是偏移。因为有很多方块的左侧、上侧、右侧被遮挡,所以需要偏移。偏移范围是 0~1,如偏移一半大小就是 0.5。
-
文本输入框:在此处输入您的笔记内容。我们支持简单的颜色标记:
#
+ 空格:后续文字变为蓝色。
%
+ 空格:后续文字变为红色。
@
+ 空格:后续文字恢复为默认的白色。
-
辅助工具栏:这里有一系列按钮,其中一个名为【数字行号辅】的功能可能稍显特别。它的作用是帮助您估算当前方块表面大致可以容纳多少行文字,这在判断一些难以触及的方块顶部空间时尤其有用。
-
数据恢复:第四块是【从浏览器中恢复】功能。您的每一次操作都会实时备份到浏览器的 localStorage 中,以防意外丢失。
仪表盘解读 (左下角)
- FPS / 渲染:分别代表实时帧率和渲染每帧所需的毫秒数。此数值因设备配置而异。
- 速度 / 位置:大致估算您当前移动的速度,以及在三维世界中的精确坐标。
- 当前模型数:此为开发调试信息。闪电代表理论上视野内的模型数;can 为被赋予物理属性的物体数;w 是实际渲染的模型数;其后数字是已从存档载入的模型数。纹理则显示当前已绘制的纹理数量。
- 区域坐标:例如【东1南1】,这是一个方便您定位的坐标系统。以世界中心 (0,0,0) 为原点,向东 100 米、再向南 100 米的区域即为【东1南1】。整个城寨被划分为 100 个这样的方格区域。
城市命名与区块划分
您会注意到,屏幕顶端会显示如【福建漳州】、【广东深圳】之类的城市名称。我们选取了中国 GDP 排名靠前的 100 个城市,并根据它们的地理方位,为城寨中的 100 个区块进行了命名,让每个板块都拥有一个独特的名字。
详细的城市分布如下,以便于您记忆和定位:
- 乌鲁木齐 鄂尔多斯 包头 呼和浩特 北京 廊坊 唐山 沈阳 长春 哈尔滨
- 榆林 太原 石家庄 保定 沧州 天津 东营 烟台 大连 威海
- 兰州 新乡 邯郸 德州 济宁 济南 泰安 淄博 潍坊 青岛
- 西安 洛阳 郑州 周口 菏泽 徐州 宿迁 临沂 淮安 连云港
- 襄阳 南阳 阜阳 滁州 南京 扬州 镇江 泰州 盐城 南通
- 绵阳 宜昌 合肥 芜湖 常州 湖州 无锡 苏州 嘉兴 上海
- 成都 重庆 常德 岳阳 武汉 九江 金华 杭州 绍兴 宁波
- 宜宾 遵义 衡阳 长沙 株洲 宜春 南昌 上饶 温州 台州
- 昆明 曲靖 贵阳 广州 赣州 漳州 厦门 泉州 福州 宁德
- 南宁 湛江 茂名 江门 佛山 中山 珠海 东莞 深圳 惠州
开发初衷
- 一次笔记维度的探索
-
第一个原因,是一种尝试。记笔记,有一维的 txt 记事本、 typecho 、Word 诸如此类。有二维的 xmind 思维导图、无边记、notepad等等。那笔记可以记成三维的吗?应该可以,人脑更喜欢三维的空间嘛。为了让体积尽可能的小,使用伪随机数生成了 1 万个方块供大家写字。应该可以写一辈子吧。
- 一次原生 WebGL 的实践
-
第二个原因,也是练习一下自己的 webgl 制作。这个程序没有使用 threeJS 这里框架,直接使用的 webgl 原生。体积尽可能的小。
如何获取本程序?
理论上,您只需在浏览器中按下 Ctrl + S
即可保存网页。但请注意,由于程序采用了模块化开发,必须在 HTTP 环境下(例如通过本地服务器)才能正常启动。
关于框架
本程序基于自研的 openworld.js
框架构建。如果您对此感兴趣,欢迎访问我们的 GitHub 仓库:https://github.com/kohunglee/openworld-js,希望能送给我们一个 Star 以示鼓励,感激不尽!
openworld.js
的未来目标是致力于简化三维开放世界的开发流程,以极小的体积实现高质量的在线虚拟展览馆、在线三维漫游、三维重建和建筑设计等应用。(www.ccgxk.com)