首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问三维引擎中物体遮挡的简单判断算法思想

2012-08-26 
请教三维引擎中物体遮挡的简单判断算法思想我想简单判断多个三维物体之间遮挡关系。我尝试了使用包围盒的方

请教三维引擎中物体遮挡的简单判断算法思想
我想简单判断多个三维物体之间遮挡关系。
我尝试了使用包围盒的方式,判断两个物体的投影是否交叉来判断两者是否遮挡。当一个场景中,涉及的物体会很多,如何简单高效地判断某个物体是否被遮挡?
谢谢~

[解决办法]
Z Buffer?
[解决办法]
最基本的方法是z缓冲。如果楼主不知道,最好自学一下计算机图形学,不然基础差太多。
如果物体很多,那么可以用空间划分。划分方法很多,哪种合适则依赖于你的场景特性。
[解决办法]
深度缓存算法(Z-Buffer)是一种最简单的图象空间
面消隐算法, 既适应于多边形面也适用其它曲面。
. 它需要一个深度缓存数组ZB, 其大小与屏幕上象素
点的个数相同, 也与显示器的帧缓存FB的单元个数
相同, 彼此一一对应。
算法描述
. 若有N个多边形, 屏幕上象素点个数为m×n, 则
算法的基本步骤如下:
(1) 初始化ZB和FB, 使ZB(i,j)=z的极小值, FB(i,j)=背景色;
(i=1,2,…,m, j=1,2,…,n)
(2) FOR j =1,n /*第j根扫描线*/
FOR i =1,m /*第j根扫描线上第i个象素点*/
FOR k =1,N /*多边形Pk*/
(2.1)令Zij=Z的极小值;
(2.2)判断点(i,j)是否落在多边形Pk在XOY面
上的投影多边形内;
(2.3)若(i,j)在P
k的投影多边形内,则计算多边形Pk在点(i,j)处的深度值Zij;
(2.4)比较Zij与ZB(i,j)的大小,若Zij>ZB(i,j),
则令ZB(i,j)= Zij,FB(i,j)=多边形Pk的颜色。

热点排行