回 帖 发 新 帖 刷新版面

主题:关于德军总部3d

德军总部3d大家完过吧?就是世界上第一个第一人称3d射击游戏,我在看作者传记时看到:该游戏使用了一种叫:射线追踪算法
哪位大哥能给我讲解一下射线追踪算法???????????

回复列表 (共12个回复)

沙发

怎么上百人,就没吭声的呢

板凳

是不是子弹追踪飞机那中样子?

3 楼

1 最短路径法射线追踪方法原理

最短路径法的基础是Fermat原理及图论中的最短路径理论。其基本思路是,对实际介质进行离散化,将这个介质剖分成一系列小单元,在单元边界上设置若干节点,并将彼此向量的节点相连构成一个网络。网络中,速度场分布在离散的节点上。相邻节点之间的旅行时为他们之间欧氏距离与其平均慢度之积。将波阵面看成是由有限个离散点次级源组成,对于某个次级源(即某个网格节点),选取与其所有相邻的点(邻域点)组成计算网格点;由一个源点出发,计算出从源点到计算网格点的透射走时、射线路径和射线长度;然后把除震源之外的所有网格点相继当作次级源,选取该节点相应的计算网格点,计算出从次级源点到计算网格点的透射走时、射线路径和射线长度;将每次计算出来走时加上从震源到次级源走时,作为震源点到该网格节点的走时,记录下相应射线路径位置及射线长度(见图1)。

网上抄的。
那个最短路径算法就是Dijkstra算法.
不知道你看懂没,反正我还有点迷糊^_^

4 楼

不懂,我就想知道怎么实现实时绘图

5 楼

wolf3d用的是射线发射法(ray casting),是射线追踪法(ray tracing)的一种, 原理就是从屏幕每纵行发射一射线,如果屏幕大小为320*240的话,就发射320条射线。 每条射线返回它接触到最近的物体的贴图,然后再把这条射线所代表的那一纵行像素上面画上贴图的内容(根据物体远近来调整贴图大小)。 这种方法的局限在, 视角不能上下看, 墙和墙之间只能有90度夹角, 天花板和地面无法用贴图来表示。 好处是运算量不大。

6 楼

谢谢大哥,能不能给个力子呢?

7 楼


[img]http://www.freewebs.com/phu004/raycasting.JPG[/img]

8 楼

这样说来,还要计算视角处与射线接触到的障碍物的位置之间的距离了
问题是,我不会画3d的图,我不知道3d绘图的规律,搞不清楚怎么画才有立体感

9 楼

这样吧,我会点qb
有大侠帮忙帮到底的写个小引擎出来看看
地图用用格子阵代替就行了

10 楼

劝楼主不要在这么老的假三维引擎上面花心思了, 它在90年代初是NB,而现在就没什么用处了。 现在的三维程序都是用多边形构造法(polygon modeling), 目前市场上几乎所有的三维加速卡都只支持多边形构造法的程序。

一些三维会绘画的公式是用永远通用的,这儿讲个最基础的, 假设视角在(0,0,0)的位置,视角方向是(0,0,1), 那么一个三维点(x, y, z)在2D屏幕的位置就是
(x/z*屏幕宽的一半, y/z*屏幕高的一半)

我来回复

您尚未登录,请登录后再回复。点此登录或注册