eXtreme3D

常用链接

统计

最新评论

最新评论

re: BSP技术详解1 朱英芳 2008-05-22 09:42  
不错的博客,不过你的东西很多书上都有,如果可以参点你的认识去的话,我们可以更好的阅读和理解。
胡灵 -> 胡岭
re: BSP技术详解2 谢克香 2007-11-19 09:24  
portal p1同时位于节点n1和n2中;
portal p2同时位于节点n1和n4中;
portal p1同时位于节点n2和n3中;
portal p1同时位于节点n3和n4中。
////////////////////////////////////
是打印错误吧
re: BSP技术详解2 谢克香 2007-11-18 19:07  
原来渲染的单位是子叶

而通过不同的portal 可以看到相同的子叶 呵呵
re: BSP技术详解2 谢克香 2007-11-18 18:14  
RENDER-PORTAL-ENGINE (Sector, ViewFrustum)
1 for each polygon P1 in Sector
2 if (P1是一个portal and INSIDE-FRUSTUM (ViewFrustum, P1))
3 NewFrustum = CLIP-FRUSTUM (ViewFrustum, P1)
4 NewSector = 获得由当前sector通过portal P1相连接的sector
5 RENDER-PORTAL-ENGINE (NewSector, NewFrustum)
6 else if (P1任然没有被渲染)
7 draw P1
8 return
//////////////////////////////////////////////////////
如果按这个算法 一个P 怎么可能渲染2次
不知道Dreams能不能把你这个源码公开给我们。
希望大家都是为了中国的游戏引擎而努力
我的QQ:15702153
不好意思写错了。。。。
选2(默认)的话Tile就是33*33的

如果你选了32的话。。。。。。。在Wireframe模式下会发现整个地形的lod变的十分的诡异。。。。。。。。。。。
今天用DirectX里带的PIX去看Cry的编辑器发现他的lod有点奇怪。。。。。。。
好象Tile的大小是可变的。。。。。。。
新建地图时有个Meters Per Unit选项,有1,2,4,8,16,32这几项可选,选1的话Tile就是65x65的,选2(默认)的话Tile就是32*32的。
在选1的时候Tile的4级lod是65x65 33x33 17x17 9x9,后边那几级都没什么直接一次就画出来了,但是在画65x65这级的时候却非常奇怪,他不是一次画出来的,而是一次只画126个三角形,就这么一行一行的画上好几十次才把这个Tile画出来。
不知道这到底是怎么回事
re: BSP技术详解(补充)--pvs算法 saya3d 2007-04-05 12:47  
说的有道理.............
现在好象都不用pvs了,连portal都趋向于手工指定,
绘制的时候要用realtime portal culling来去除不可见的实体,所以反正都是要做就不要再费工夫去算pvs了。
1、如果使用你的方法运算量会增加一些,因为你需要额外对共面的portal进行计算,而且由于下面的原因,代码将复杂化。个人意见还是加上预处理部分比较好,实际的代码量并不大。
2、仔细考虑一下存在不规则形状的portal的情况,如果两个portal都为垂直于地面的四边形的话当然只需要运算一次即可,但是当两个portal形状不一样时,AB和BA形成的frustum是不一致的。
最后,个人看法现在pvs算法基本上已经淘汰,DOOM3和HL2中已经将其完全放弃,而是直接使用手工指定的portal进行realtime portal culling。saya3d做个人研究可以,但是不需要将时间浪费在上面。
re: BSP技术详解(补充)--pvs算法 saya3d 2007-04-01 23:40  
有问题请教下Dreams,我想生成PVS,我觉得id的这个方法的确是很好,我也准备采用类似这样的方法。但是我觉得预处理有些麻烦所以想省略掉直接做第4步就是用frustum去clip那些portal。但这样的话我的portal就是双向的。您说的这个方法是以portal为对象来检测可见的portal(希望我没理解错),我准备以cluster为对象来检测可见的portal。假设当前计算pvs的cluster是A,就遍历A的所有portal,为每一个portal进行pvs计算,假设选的portal是m就找到m所连接的另一个cluster(B),依次用m跟B里边的portal(假设当前是n)组成frustum来检测n所连接的另一个cluster里的portal…………其实跟您那个都一样,不过我这个portal是双向的所以组成frustum的时候会有问题(可能会用两个顶点顺序方向相反的两portal来组成frustum),但是我的portal里记录的有它所连接的2个cluster是在portal的前方或后方,所以我只要判断一下A如果在m的后方我就反着访问m的顶点就行了。
我这样做应该可以吧?
另外一点就是建立clip plane要两次,有点不好想,我老觉得一次就够了。多边形A和B,A->B生成一个frustum, B->A生成一个frustum,这两个frustum不一样么?
re: 搬家了,新blog开张 saya3d 2007-03-26 22:54  
支持一下!!
dreams大大的文章都是精品。