关于Euclideon的"无限细节"引擎的技术分析
昨天看了一个震撼的视频, 地址在这里 http://www.tudou.com/programs/view/2oH1zMMCWqY/, 视频中宣称的无限细节引擎技术与现在主流的3d引擎技术完全不同, 传统的3d引擎技术基于多边形, 画面细节的丰富程度取决于多边形的个数和贴图的细节, 而"无限细节"技术则采用和自然界一样的原子排列方式来渲染图像, 或者说点云技术, 根据视频宣称可以比现在3d引擎提高10万倍的细节丰富程度, 而且完全不采用显卡的3d计算能力, 完全纯软件技术, 并最终达到20fps, 如果这一切都是真的, 那必将颠覆现有的3d渲染技术, 为此我思考了一个晚上也百思不得其解, 今天在其官网上找到了一些技术细节.
Unlimited Detail's method is very different to any 3D method that has been invented so far. The three current systems used in 3D graphics are ray tracing polygons and point clouds/voxels, they all have strengths and weaknesses. Polygons run fast but have poor geometry, ray-tracing and voxels have perfect geometry but run very slowly.
Unlimited Detail is a fourth system, which is more like a search algorithm than a 3D engine. It is best explained like this: if you had a word document and you went to the search tool and typed in a word like 'money' the search tool quickly searches for every place that word appeared in the document. Google and Bing are also search engines that go looking for things very quickly. Unlimited Detail is basically a point cloud search algorithm. We can build enormous worlds with huge numbers of points, then compress them down to be very small. The Unlimited Detail engine works out which direction the camera is facing and then searches the data to find only the points it needs to put on the screen it doesn’t touch any unneeded points, all it wants is 1024*768 (if that is our resolution) points, one for each pixel of the screen. It has a few tricky things to work out, like: what objects are closest to the camera, what objects cover each other, how big should an object be as it gets further back. But all of this is done by a new sort of method that we call "mass connected processing". Mass connected processing is where we have a way of processing masses of data at the same time and then applying the small changes to each part at the end.
The result is a perfect pure bug free 3D engine that gives Unlimited Geometry running super fast, and it's all done in software.
看完之后,我大概了解了其原理,虽然还是感觉不可思议.
1)与传统3d技术不同, 该技术更像一种搜索技术, 一种点云搜索算法;
2)通过把世界用海量的点来描述, 然后压缩这些点数据便于使用;
3)通过相机的位置和面向, 搜索出画面里需要的点, 任何不需要的点都不会出现在搜索结果集里;
4)如果我们画面分辨率为1024x768, 那么最终的搜索返回的结果点也是1024x768;
5)在搜索的过程需要考虑: 那些太靠近相机的点, 那些互相覆盖的对象等;
6)所有这些通过一种新的排序方法, 叫做"mass connected processing"来完成;
7)最终这些点被用于渲染画面, 所有这些过程全部都是在cpu内软件完成.
该技术确实不同于传统的3d渲染引擎, 该技术的核心算法应该是搜索和排序, 如果最终返回的点集是1024x768, 那么确实在渲染上和gpu关系不大了, 纯软件渲染足够了.
2012-01-04 11:41:00 回复该留言
从理论上来说,渲染的最后一步只需要1024*768个点的颜色值。不知道他说的这个“云计算”是在本地机器上完成还是在远端云上完成。不论是在哪里,也不大可能仅仅靠搜索就能完成最后的结果,如果场景中有动态光,有半透明物件的话,所以它也需要搜索出视锥体内的点,计算alpha混合,计算光照,计算后期特效,等等。它也不可能把这些数据全都预算好,因为摄像机位置是不确定的,另外把这么密集的点都遍历一遍也不是普通的机器能够完成的任务。
关于云渲染已经不是新鲜名词,为了适应低端手机而在云服务器端预渲染的网页浏览器就是一种,虽然他处理的不是游戏场景。国内也有公司在做云渲染,最终所需要处理的只是如何做高效的数据压缩,让渲染结果通过网络传输给终端去显示。在云端是通过CPU计算还是GPU计算,或者是两者相结合的计算,那是算法的问题。把多边形使用预处理工具退化到一个个象素点,甚至是他说的原子,这也算是一种理论上可行的做法,但是想不出来这样会有什么样的优势。期待他能有好的效果。
2012-01-06 01:47:01 回复该留言
这个是体渲染的概念么?