随机宇宙
上半年,从构建好一个基础的HLA网络(S方面的计划)以来,我一直在试图创建一种充满着各种星球、星系的宇宙内容体系(R方面的计划)。由于备受Celestia和ONeil的“A Real-Time Procedural Universe”感染,我一直就梦想着能够将随机但接近现实的宇宙图景动态地整合进SRI网络中。加之在我相当喜欢的游戏EVE里,总是有把飞船开向行星表面这样难以忍受的冲动(现在看来,在游戏Infinity中也采用了类似的技术,飞船可以开到星球或者空间上表面上去)。我最终决定让SRI网络在一开始就挑战随机的庞大宇宙!
Celestia有接近现实的星系际物理体系,数据均来自像NASA这样的宇航机构。而ONeil的过程宇宙,又是从随机函数(比如柏林函数)中得到的灵感。我希望能够在SRI网络中将它们应用上来。
Celestia项目目前应该有200万到300万的星体数据了吧!
Celestia基于现实宇宙的漫游系统
基于对柏林函数的理解,我对ONeil的项目进行了一些移植,到目前为止基本上实现了以极少量参数生成一些接近现实的星体并动态地绘制它们,下面是一些实时渲染的截图(所有随机函数均为可预测随机函数):
远处观测地球尺寸的星体,大概用了七八个参数。地形由柏林函数生成,贴图根据高程自动生成。
接近星球表面后,可以看到由另外一种随机函数动态生成的环形山
接近地面后可以看到更多的细节,比如用公告板实现的一些草地。该图是应用了阳光在大气中散射后的效果。
地球的卫星——月球规模的天体
由于业余条件下开发得非常慢,加之最近迫切想进入下一个更大的目标(I目标,在博客上一篇专门的文章中我将描述这个),我本来想搁下这方面的开发。但最近看了一部日本动画片《英雄时代》,很有感觉,加之做一件事情应该有头有尾,所以我决定还是尽快继续将星体数据(属性)整合进HLA网络收尾,以达到一个能在SRI系统中应用的程度。
目前该渲染模块的性能一般,未来某个时候我回再回来进一步对其进行优化,并且支持星体表面的云层以及大气散射效果。
BTW,从游戏/交互上面来看,我一直以来就有一些想法,基于原来在CH项目中的设计,SRI人类界面的操作模式可以包含第一人称、第三人称、(EVE、魔兽等)和第三人称管理(家园)这三种视觉模式,模式的切换视交互内容的需求而定。