第一次看玩Tesserxel系列的话请先阅读上一篇文章了解Tesserxel四维场景的基本操作方法哦。这篇文章我们将挑几个场景来介绍,本文将依次介绍复杂旋转体、直积形以及四维高速公路场景。超球、球环、环球等基本几何体之前已经介绍很多了,理解了本文更复杂的场景后,那些简单几何体就留给读者去自由探索吧。
玩Tesserxel(一):视图控制介绍
谷歌Chrome浏览器终于在113版本(至少我在windows下现在已经能自动更新到该版本了,但我发现113版有时会有物体过一会就消失不渲染的bug,后面的版本已修复)正式开始支持WebGPU了!这就意味着我的Tesserxel四维引擎项目可以直接在最新版的Chrome浏览器上直接运行了。我将开启一个Tesserxel玩耍教程系列,解释Tesserxel示例的场景。
玩Tesserxel首先得知道基本的四维空间概念,然后请阅读《四维世界(四):二维生物视觉》《四维世界(五):体验四维人的视觉与方向感》这两篇介绍四维生物视觉的文章,明白立体照片,截面与四维深度等概念。文章中的交互四维场景除了用的是上一代WebGl写的引擎,本质与Tesserxel的交互方式区别不大,只是快捷键略有调整,所以如果之前有玩过一些四维场景,上手Tesserxel是零难度的。注意,要想直观领略抽象的四维空间,除了要一块稍微好点的显卡,还需要尽可能多调动感官交互,因此Tesserxel没有考虑适配手机操作。由于很多操作与原来老引擎相同,这里就不再赘述摄像机移动旋转与简单的方向辨识了,这篇文章重点介绍三维体素照片渲染设置相关的操作,并罗列出常见相机控制方法。
闵氏空间与常曲率空间的几何
四维世界(八):四维星球导航
// 提示:本文涉及到基于Hopf极坐标的四维星球方向定位,请先阅读四维世界(一):行星的昼夜季节这篇文章了解四维星球上最基本的方向术语。
之前在《四维世界(七):电磁学》中提到过如何利用四维星球的地磁场进行导航,但没有具体分析怎样设计并使用指南针。这篇文章将补充这些内容,给出一份通过磁场、地转偏向力与星空的探险家在四维星球上的正确方向辨别指南。
代数拓扑简介(下):同调论
/// 注:本文仅提供对同调相关概念的直观理解,不包含严谨的推导内容,文中若有错误欢迎指正。
上篇文章说了同伦群(Homotopy Group),这次我们来看看同调群(Homology Group)。同调要稍微抽象一些,但其实某种程度上要比同伦简单。回到最初通过路径判断孔的思路中来,同伦研究的是圆圈连续收缩的过程,虽然直接但难以计算。仔细观察不难发现,那些可缩成一点的图形的内部都是一块封闭的区域。如果假设只要一个封闭路径是图形中某块区域的边界,则认为它没有套住或跨越任何孔洞,我们把这样的圈叫做是“零调”的。注意这里零调的路径虽然跟同伦里的可缩路径很像,但零调的路径可能不一定真的可缩,后面我们将看到同调的条件要弱于同伦。比如下图左图青色区域的边界包含孔的边界和红色圈,单独的红色圈不是任何图形的边界,因此可知它包住了孔,而右图中的红色圈是蓝色区域的边界,因此它不包含任何孔,是“零调”的。
参观无限大养猪场
(** 注:本文为一篇好几年前的旧文,是作者对于对偶空间这一数学概念的形象化的想象,因下一篇文章涉及对偶空间概念,故在此发出(然而与其它文章并无因果联系,本文也毫无逻辑可言,看一乐就行,仅在文末给出了一些概念之间的对应关系) **)
(藤瑟先生被邀请来参观无限大养猪场。工作人员负责向他介绍这里的管理模式。)
工作人员:欢迎您前来参观无限大养猪场。这是个无限大的养猪场,我们养了无数头猪,有无数个饲养员,我们的管理模式很特别。每个饲养员都对猪编号,方便识别它们,但每个饲养员都很有个性,他们对猪的编号系统都完全不一样。
藤瑟先生:你们不统一编号不会导致管理混乱吗?
工作人员:不会的,无限大养猪场中的饲养员的个性丰富程度也是无穷的,我们必须要充分尊重饲养员们的个性,这自有解决方法。
玩Tesserxel(零):全新四维引擎上线
由于4DViewer代码混乱且计算截面在CPU端性能低下,今年7月底我决定尝试使用新技术WebGPU API重新实现四维渲染引擎,因为WebGPU的计算着色器可以让截面计算也放在GPU中,彻底解决性能问题,于是新项目——Tesserxel诞生了。Tesserxel取的是单词Tesseract(四维立方体的拉丁词根tessera“四”)和Pixel(像素)。
Tesserxel自带的示例库截图
目前Tesserxel实现了以下功能:
- 包含四维向量、二向量、四元数表示的旋量与图形学需要的矩阵运算的数学库。
- 基于四面体的光栅化渲染器,该渲染器仅底层封装,需用户自己创建着色器管线、GPU缓存资源等。
- 子模块Four能够帮用户隐藏底层渲染逻辑,类似于3D渲染中的ThreeJs库那样通过声明几何体、相机、材质、灯光来快速构建渲染四维场景。
- 四维刚体物理引擎。
- 用户键鼠交互系统封装。
下面就让我们进入Tesserxel构建的四维世界。这里是示例场景库链接(注意要启用WebGPU才打得开):
https://wxyhly.github.io/tesserxel/examples/
请参考玩Tesserxel后续系列文章中的教程深入了解Tesserxel的玩法哦~
注意:现在电脑端直接更新至谷歌浏览器最新版(版本号113及以上)即可打开,以下内容已经过时。
启用WebGPU方法: WebGPU是一个实验性的API,是WebGL的未来“接班人”,它的标准还处于W3C的草稿阶段,未正式发布。目前据说仅Windows下Chrome提供较好支持,而且想开启这项功能还有点麻烦,首先你需要下载Canary版本的Chrome浏览器(谷歌官网,或自行找下载资源),添加–enable-unsafe-webgpu参数启动浏览器,打开chrome://flags/,将WebGPU Developer Features打开(选Enabled)就可以启用WebGPU。
目前的Tesserxel只是一个早期版本,后续会补充Tesserxel说明手册,继续开发更多物理解算、高级材质、离线渲染,以及基于Tesserxel引擎的4D游戏等。(但愿不鸽~)
自己打造的一个电脑钢琴
怎么用电脑键盘来弹钢琴?其实这种电脑钢琴软件很多,比如我之前接触过EveryOnePiano,比较出名的还有FreePiano。当然我们也可以自己做一个类似的东西,我的在线钢琴没有取名字,Github仓库名称我索性用了EveryOnePiano的缩写EOP。
这里是链接,点开即玩(ie浏览器是不可能支持滴!)
大致的使用方法可以在点开后的菜单条的“?”查看(不详细,最好还是看本文后面给的例子哦),点击键盘,屏幕上会显示一个虚拟电脑键盘,上面将标出每个键的音名、唱名或功能(按住Ctrl、Shift、Alt后会有对应的功能快捷组合键)。本文也有一部分的使用说明,但侧重记录我对它的想法与实现过程。
对了,如果你是手机用户,点击键盘可以模拟电脑键盘,再点一次键盘可以模拟钢琴键盘,类似“完美钢琴”那种手机App哦!
- Hint1: 在通道里面新加不同的通道可以增加钢琴键盘的排数哦!
- Hint2:文中附周杰伦《最伟大的作品》试弹视频与讲解哦~