主题:关于德军总部3d
jyf1987
[专家分:930] 发布于 2005-06-21 15:22:00
德军总部3d大家完过吧?就是世界上第一个第一人称3d射击游戏,我在看作者传记时看到:该游戏使用了一种叫:射线追踪算法
哪位大哥能给我讲解一下射线追踪算法???????????
回复列表 (共12个回复)
沙发
jyf1987 [专家分:930] 发布于 2005-07-21 05:33:00
怎么上百人,就没吭声的呢
板凳
delphi6 [专家分:3450] 发布于 2005-07-21 11:51:00
是不是子弹追踪飞机那中样子?
3 楼
euclid [专家分:1670] 发布于 2005-07-22 19:03:00
1 最短路径法射线追踪方法原理
最短路径法的基础是Fermat原理及图论中的最短路径理论。其基本思路是,对实际介质进行离散化,将这个介质剖分成一系列小单元,在单元边界上设置若干节点,并将彼此向量的节点相连构成一个网络。网络中,速度场分布在离散的节点上。相邻节点之间的旅行时为他们之间欧氏距离与其平均慢度之积。将波阵面看成是由有限个离散点次级源组成,对于某个次级源(即某个网格节点),选取与其所有相邻的点(邻域点)组成计算网格点;由一个源点出发,计算出从源点到计算网格点的透射走时、射线路径和射线长度;然后把除震源之外的所有网格点相继当作次级源,选取该节点相应的计算网格点,计算出从次级源点到计算网格点的透射走时、射线路径和射线长度;将每次计算出来走时加上从震源到次级源走时,作为震源点到该网格节点的走时,记录下相应射线路径位置及射线长度(见图1)。
网上抄的。
那个最短路径算法就是Dijkstra算法.
不知道你看懂没,反正我还有点迷糊^_^
4 楼
jyf1987 [专家分:930] 发布于 2005-07-25 11:20:00
不懂,我就想知道怎么实现实时绘图
5 楼
phu004 [专家分:100] 发布于 2005-08-04 15:53:00
wolf3d用的是射线发射法(ray casting),是射线追踪法(ray tracing)的一种, 原理就是从屏幕每纵行发射一射线,如果屏幕大小为320*240的话,就发射320条射线。 每条射线返回它接触到最近的物体的贴图,然后再把这条射线所代表的那一纵行像素上面画上贴图的内容(根据物体远近来调整贴图大小)。 这种方法的局限在, 视角不能上下看, 墙和墙之间只能有90度夹角, 天花板和地面无法用贴图来表示。 好处是运算量不大。
6 楼
jyf1987 [专家分:930] 发布于 2005-08-06 14:30:00
谢谢大哥,能不能给个力子呢?
7 楼
phu004 [专家分:100] 发布于 2005-08-06 23:26:00
[img]http://www.freewebs.com/phu004/raycasting.JPG[/img]
8 楼
jyf1987 [专家分:930] 发布于 2005-08-10 09:49:00
这样说来,还要计算视角处与射线接触到的障碍物的位置之间的距离了
问题是,我不会画3d的图,我不知道3d绘图的规律,搞不清楚怎么画才有立体感
9 楼
jyf1987 [专家分:930] 发布于 2005-08-10 09:51:00
这样吧,我会点qb
有大侠帮忙帮到底的写个小引擎出来看看
地图用用格子阵代替就行了
10 楼
phu004 [专家分:100] 发布于 2005-08-10 16:36:00
劝楼主不要在这么老的假三维引擎上面花心思了, 它在90年代初是NB,而现在就没什么用处了。 现在的三维程序都是用多边形构造法(polygon modeling), 目前市场上几乎所有的三维加速卡都只支持多边形构造法的程序。
一些三维会绘画的公式是用永远通用的,这儿讲个最基础的, 假设视角在(0,0,0)的位置,视角方向是(0,0,1), 那么一个三维点(x, y, z)在2D屏幕的位置就是
(x/z*屏幕宽的一半, y/z*屏幕高的一半)
我来回复