你可能已经注意到,在过去的两年里,我在博客上并没有那么积极地写作。对不起,我当时正忙着学习。让我们立即达成协议--这不是您的普通技术文章(尽管您将在这里找到一些有趣的实现细节)。这是一项研究,证明新技术不会撕裂时间的结构,证明那些看似不相容的东西,位于难以想象的遥远文化坐标中,仍然可以触摸,触摸是美丽的。对我个人来说,这项研究特别有意义。这个故事始于十年前,当时一位佛教朋友提议制作一个移动祈祷应用程序。在主要的问题得到解决之前,这项事业提出了大量的问题需要解决:“计算机能为所有生物的利益祈祷吗?”
祈祷…。还有什么比这更远离现代技术呢?根据大多数宗教(如基督教、伊斯兰教、印度教)的说法,祈祷是一种习俗的执行,目的是与神灵沟通并向他们要求一些东西。然而,佛教把摆脱苦难和达到觉悟作为首要目标。非常有趣的是,当一个人祈祷的时候,它会给周围的所有生物带来好处。慈悲、帮助、关怀、美好的祝愿--这些都是佛教习俗所要产生的。如果其他宗教可以比作客户机/服务器体系结构,那么佛教假定是一种去中心化的p2p媒介,在这种媒介中,每个人都可能产生利益,而不仅仅限于众生…。
通过电脑祈祷?“一个奇怪的,赛博朋克的想法,”你想。然而,在藏传佛教中,有几个世纪以来,有几种类型的祈祷机。其中最著名的是祈祷轮,它广泛分布于现代中国、尼泊尔、印度和不丹。它们起源的时间和地点是不确定的。传说祈祷轮是由那加诸那大师带到人类世界的,他在进入龙一样的生物-那迦的水下世界的旅途中获得了这些轮子。
一些研究人员认为,这些鼓是自我们这个时代开始就存在于西藏的古代佛教前邦教的遗产。其他人指的是在印度和尼泊尔边境的修道院的经文中发现的第一批关于祈祷轮的书面记录,可以追溯到公元11世纪,当时这些机器已经是一个既定的传统。格雷戈里·肖邦(Gregory Schopin)教授翻译了其中一篇文章,作者是一位名叫Vipulashrimitra的僧侣,他生活在11世纪的那兰达佛教大学(根据传说,Nagarjua曾在那里学习)。
通过不断的努力,智慧经的完美不断地在观音菩萨的大寺庙中旋转,通过维普拉施密特拉建造的书盒,他在节日期间在救济院里安装了四个形象。
典型的祈祷轮是安装在轴上的金属或木制空心圆柱体。在轮子的外面,刻着6个音节的慈悲佛咒语:“欧玛尼垫我哼”,里面有一卷卷,上面印着或手写着相同的咒语。一个小小的手持轮子里可能有数百个咒语,寺院里可能有数百万个固定轮子。
使用祈祷轮被认为是一种强大的净化练习,一轮转动一圈就能给所有的生物带来同样的好处,就像口头说出鼓里有多少咒语一样。以下是佛教领袖和喇嘛对轮子的看法:
古代藏传佛教经文“玛尼卡班”,公元前17--祈祷轮就像一颗宝石:无论你想要什么,它都能实现所有至高无上和平凡的成就。
Lama Zopa Rinpoche(达赖喇嘛学生,大乘佛教传统保护负责人)-安装祈祷轮可以彻底改变一个地方,使之变得平静、愉快,并有利于心灵。
吉格达尔·达晨陛下(西雅图藏族寺院负责人)-旋转祈祷轮净化我们的身体、精神和心灵。
乔达摩佛(在题为“大河”的经典中)-转动法轮的好处是,在无端轮回中积累的负面业力和令人不安的思想模糊可以毫不费力地得到净化。甚至其他咒语也毫无疑问地完成了。
有几种祈祷轮,它们的特点是它们的动力:由人旋转,或由风,水,甚至火推动。
在上野马首府洛曼堂的主广场上,一位老人在使用祈祷轮。
祈祷轮-数以亿计的人练习和相信-是无生命的物体,机器能够将旋转的机械能转化为祈祷的超然能量,给所有的生物带来美好的愿望和利益。数字机器和计算机能以同样的方式做到这一点吗?计算机能将能量转化为精神信息,从而改变世界吗?
“祈祷轮”是我在研究中拥有的唯一钩子,所以了解练习是如何进行的是很重要的。我从阅读主题文学开始。令人惊讶的是,这样一个有趣的现象被西方作家描述得很差。第一本跟我说话的书是英国人威廉·辛普森(William Simpson)在1896年写的,这本书是根据他去西藏和尼泊尔旅行的经历写的。
这是一部关于宗教和仪式中圆周运动的长篇著作,由于其维多利亚时代的英语,阅读起来并不容易,但观察作者对西方研究人员刚刚发现的佛教文化现象的惊讶是很有趣的。事实上,辛普森创造了“祈祷机器”这个词,显然是受到了刚刚在他的祖国结束的工业革命的影响。这本书详细地描绘了各种祈祷轮:由人的肌肉、风、水、火推动。不幸的是,辛普森的作品与使用轮子的精神方面几乎没有关系,而且根本没有藏文原文的翻译。
住在华盛顿的当代作家洛恩·拉德纳(Lorne Ladner)写的另一部作品拯救了我们。
他的工作目标是普及祈祷轮练习,并描述其中的精神成分。有趣的是,通过这两本书,可以追溯佛教在过去100年里在西方文化中走过的道路:从一种奇异的好奇心,到一种被投资于佛教普及的社会完全接受的宗教。洛恩的书成为一个伟大的发现,因为它描述了练习是如何运作的,并包含了古代喇嘛的文本,使读者能够就这个主题得出一些有洞察力的结论。当我读到它的时候,我已经有了一点使用轮子的经验,我直观地找到了与藏文文献中描述的方法非常相似的方法。从他们身上,一个重要的方面变得清晰起来-如果水或风推动的祈祷轮本身起作用,被认为是净化空间的神器,那么由人旋转的轮子就是一种精神实践,祈祷者旋转鼓点,请求所有众生的怜悯和同情,渴望每个人的幸福、自由和解脱。祈祷轮是一种仪式,是一种精神活动,旨在让世界变得更好,而在这里,轮本身就是一个可视化和焦点。
达赖喇嘛陛下宣布,电脑屏幕上的咒语与传统咒语一样有效。
从技术角度看,经过几年的Reaction+WebGL应用程序开发,我对成功充满信心。
在亚洲旅行时,我观察了许多祈祷轮,特别注意到了所使用的材料和所需的美学,所以我确切地知道我需要什么来创建一个开源的WebGL轮,它将是实践的真实可视化。
我需要一个基于物理的渲染和一个优秀的3D艺术家,按照开发3D应用程序的标准做法,他对伟大的图形负有70%的责任。对我来说幸运的是,PBR就在手边-在Babylon.js中,有一个开箱即用的出色实现,几周后,一位来自莫斯科的经验丰富的艺术家被发现,他经常在亚洲过冬。我有可靠的消息说他对祈祷轮很熟悉。这是一个重要的要求;艺术家应该知道设计的细节,因为真实性对于创造壮观的视觉印象很重要。
为了管理应用程序的状态,我决定不使用重量级Redux/MobX,而使用React的ContextAPI。虽然最初因为需要编写大量无用的低级代码而后悔自己的选择,但随后我很高兴能够为ContextAPI开发一个很小的很酷的包装器,它允许您更改应用程序状态中的数据,就像更改JS对象的属性一样简单。请随时查看管理ContextAPI状态的简单方法。
一项迫在眉睫的、至关重要的任务是绝对真实地旋转轮子以响应用户的操作。我遇到的第一个问题是,当拖动中心部分与边缘时,轮子的旋转不同。毕竟,圆柱体的中心更靠近轴线,其极点与轴线的角度与屏幕投影的角度不同。这意味着,比方说,在轮子中心拖动10个像素,我们将使其旋转的角度比拖动相同的10个像素更靠近边缘后旋转的角度更小。乍一看,这似乎是一个微不足道的细节,但在实践中,这是在触摸旋转中具有完全现实感的关键细微差别。
角度A几乎是角度B的一半,在屏幕平面上的投影相同。
如果在接触圆柱体中心时,touch Position=0,并且在接触边touch chPosition=1时,则从中心到接触点的角度为ACOS(Touch ChPosition)。分别知道前一帧的接触角度,就可以计算出旋转速度oldTouchangle-newTouchangle。然后在每一帧上重复。
除了正确计算手指在表面上传递的角速度外,还需要逼真的物理。车轮有质量和摩擦力,其实现方式是将当前速度乘以每个框架上的摩擦力的大小。此外,我们不能立即传递从手指施加的能量获得的旋转速度,因为轮子有质量,加上摩擦,手指在祈祷轮上的粘附力不是很完美。在这里,线性插值(LERP技术)应运而生。因此,当前的轮速不是直接从手指的速度计算出来的,每一帧都会发生变化,趋于相等。
0.2决定粘合质量,用1代替0.2时,速度会立即从手指传到祈祷轮上。在利用LERP和摩擦力对转速进行正确计算后,我们得到了一个逼真而详细的物理模型。
从视觉上看,这一过程受到了艺术家在为Babylon.js创建模型方面缺乏经验的影响。因此,材料的光泽度和反射率等多个细节必须由我自己整理。然而,这是非常值得的努力,因为结果符合我们的预期,特别是在材料和反思方面。
而且,它是开源的。每个接受的拉取请求都会自动部署到应用程序。想要添加一个侧边设置菜单,可以选择背景图像还是传统的藏族音乐?不客气!。
你不一定非得是佛教徒才能使用轮子,但有一个先决条件--你只可以为了亲人和所有生物的利益而纯粹地想着转动它。
这个轮子在焦虑的时候能完美地帮助你,以一种建设性的方式镇定和调整你的思想。试着在一个重要的会议之前使用它。
我们的冒险本可以止步于车轮的开发,但好奇心驱使我们在真实用户上测试这个应用程序。还有谁能比几个世纪以来一直在轮子帮助下练习祈祷的西藏高地居民更成为一个相关的焦点群体呢?在佛教问题上,有谁能比一个修行数十年的藏传僧人更权威呢?我决定去喜马拉雅山。在计划这次探险的过程中,选择了去Lo王国-与西藏接壤的尼泊尔保护区。
由于需要获得尼泊尔政府和上野马国王的许可,每年只有600-800名游客到该地区旅游,这比一年内登上珠穆朗玛峰的游客还少!它也是保存着西藏原始生活方式的地方,8-10世纪建立的佛教寺庙仍然在使用。让我们来听听罗曼堂寺院的僧侣们是怎么说祈祷轮的,以及他们对用JavaScript开发的祈祷轮有什么看法。
世界上数以百万计的人使用祈祷机器-祈祷轮,既由一个人的体力驱动,也在没有他/她参与的情况下工作。电脑能成为祈祷机器吗?由于达赖喇嘛陛下已经在电脑屏幕上宣布咒语的力量等同于传统咒语的力量,你可以使用一个用JavaScript编写的应用程序进行祈祷。重要的是,一台显示旋转轮的电脑净化了这个地方,为所有众生送去善意,净化了他们的业力,这可以被认为是一种祈祷。
在从事这项研究的过程中,我多次被这样的想法访问,即编程在关注度、结果的微妙程度以及改变世界的愿望方面与精神实践非常相似。因此,如果发展是与你产生共鸣的实践,如果你正确地进行了实践,那么这个过程就会带来满足感和平静。但事情总是这样吗?当然不是了!也许每个人都至少有过一次感觉,他从事的是一个没有给工作带来乐趣的项目,写出来的代码也没有给这个世界带来任何好处。而作为开发商,这是我们最大的关心和责任--努力正确地修行,怀着一颗纯洁的心,致力于造福所有生物的项目。