本文不能保证所贴空间的稳定性,有可能一段时间之后会发生所链接PDF已经失效,遇到这种情况,我将尽快寻找可以使用的新的空间。其中对大家造成的不便,请大家原谅。
PDF有时候可能会让您的IE变得很慢,所以,请下载到硬盘上进行阅读。
原创文章,著作权属本人所有,本人也对一切言行负有责任,望大家能尊重劳动者的辛勤努力,不要侵犯我们这些底层劳动人民的知识产权。
谢谢大家。
http://dev.gameres.com/Program/Visual/3D/BSPfenge.pdf
部分文章节选:
BSP分割算法也是有不少文章可以借鉴的,就我目前能掌握的资料来看,泛泛而谈者大有人在,实际去作的时候却总是抓瞎。知道是什么永远不如知道怎么做,BSP分割是BSP分析的基础,虽然它很简单,但是,如果连简单的都不会做,又怎么能胜任复杂的工作呢?
趁这段时间有空,遂埋头钻研BSP,一周之后,分割和自动Portal生成均已解决,遂做此文,希望能对初学者有所帮助,亦希望能抛砖引玉,众位高手能不吝赐教。
本文先就BSP中相对简单的分割部分做一个简单的介绍,自动Portal生成的资料正在整理,希望能尽快放出。
……
试想我们生活的空间,肯定是由为数众多的天花板、墙壁和地板组成,对于每一个“板”,都将空间分为“板前”和“板后”两个部分。已知人的位置,就可根据人在“板前”还是在“板后”,知道人所能看到的物体的遮挡顺序(e.g.如果人在板前,则板前的物体遮挡所有板后的物体)。
BSP者,原理很简单:它试图将所有的板(在BSP中叫做平面)组织成一棵树,每个平面均将它所在的空间分割为前后两个部分,这两个部分又分别被另外的平面分割成更小的空间……直到最后,按照前面所说的算法,确定每一个房间(在BSP中叫做叶子)相对于眼睛的遮挡顺序。
这是一个非常标准的二分法,仅按照“前”和“后”两个逻辑上的概念来切分空间,这使得它在以“房间”为单位组成的室内场景里是不二之选。为什么?请接着看:
在判断遮挡顺序的时候,BSP空间的算法极为简单:只需要从树根开始,简单判断人的位置与所有平面的前后关系:前则正子树(在平面“前”方的空间)在前,负子树(在平面“后”方的空间)在后;后则正子树在后,负子树在前。以此递归到叶子(叶子总是一个房间),就可以确定人处于哪一个房间之中、其他房间的遮挡关系如何。
这个其实很简单:因为所有的平面均将其所处的空间分为前后两个部分,所以,每一个房间,均是由若干平面的“前”“后”来决定的,通过人与这些平面前后关系的判断,自然而然就可以直接定位到所需的房间之中了。这就是BSP算法的特别之处。
……
分享到:
相关推荐
### 3D场景的BSP分割算法 #### 引言 在三维计算机图形学领域,尤其是在游戏开发中,为了高效地处理复杂的3D环境并优化渲染过程,**Binary Space Partitioning (BSP)** 树是一种非常重要的数据结构和技术。本文旨在...
### VxWorks BSP开发人员指南知识点解析 #### 一、VxWorks简介 VxWorks是一款实时操作系统(RTOS),由Wind River Systems开发。它广泛应用于嵌入式系统领域,特别是那些对实时性要求极高的场景,如航空航天、国防...
BSP129中文资料.pdf
为了简化操作系统及其上层应用与硬件的交互,引入了硬件抽象层(HAL, Hardware Abstraction Layer)以及板级支持包(BSP, Board Support Package)的概念。 HAL是一种软件设计技术,旨在为软件提供统一的硬件访问...
**BSP树(Binary Space Partitioning Trees)**是一种在计算机图形学、游戏开发以及几何算法等领域广泛应用的数据结构。它的核心思想是将三维空间通过一系列的分割操作,将空间分割成多个子区域,每个子区域由一个...
4. **BSP(二叉空间分割)树**:BSP树是一种分层数据结构,通过不断地将空间分割成两半来组织物体。这种方法使得碰撞检测、可见性测试和渲染加速变得更为高效。BSP树在实时渲染和多玩家游戏中特别有用,因为它能快速...
《BSP和设备驱动开发指南》是一份针对RTEMS实时操作系统进行板级支持包(BSP)和设备驱动开发的详细指导文档。RTEMS(Real-Time Executive for Multiprocessor Systems)是一款开源的实时操作系统,广泛应用于嵌入式...
官方,高清pdf 龙芯 CPU 开发系统 vxWorks BSP 开发的相关要求,内容包括 vxWorks 系统架构、vxWorks 启动过程、windRiver 目录结构、BSP 命名规范、BSP 配置规范、编译规范、与 CPU 相关的宏定义及使用规范、设备...
基于BSP模型的并行混沌粒子群算法.pdf
**BSP树**的基本思想是将一个复杂的空间分割成一系列较小的子空间,每个子空间都可以被进一步分割,直到达到某个简单的子空间为止。这一过程是通过选取一个平面作为分割面来实现的,该平面将当前空间划分为两部分:...
《VxWorks下设备驱动程序及BSP开发指南》这本书是关于VxWorks操作系统下的设备驱动程序和板级支持包(BSP)开发的专业指南。作者周启平在编写过程中花费了大量的精力,致力于将理论与实际应用相结合,并力求使内容更加...
简要分析了目前Linux BSP开发存在的缺陷,通过分析两个不同版本嵌入式Linux的Ac97声卡驱动程序的异同,针对不同处理器提出了一种基于Linux的BSP标准。在此基础上,实现了一套基于XML的Linux BSP标准化配置工具,实现...
NUC970 Linux BSP快速入门手册介绍了一款基于NUC970系列芯片的开发板,这款开发板由新唐科技设计,采用Linux操作系统。NUC970系列芯片基于ARM926EJ-S内核,集成了16KB I-Cache和16KB D-Cache以及内存管理单元(MMU),...
BSP的表现形式有两种:源代码,包括C语言和汇编语言代码,以及系统编译链接依赖文件;以及二进制目标代码和目标代码库。在软件系统中,BSP位于操作系统内核和硬件之间,作为两者之间的桥梁,提供接口让操作系统能够...
BSP包括了Linux 3.10内核源码、适用于NUC970的驱动程序、GCC 4.8.4交叉编译器、uClibc-0.9.33库文件、Binutils-2.24交叉开发工具、示例程序源码和一些开源软件、U-Boot源码以及适用于NUC970的驱动程序、Windows平台...
NUC970 系列采用 ARM926EJ-S 核心,执行速度高达 300 MHz ,堆叠 16 MB、64 MB 或 128 MB DDR-II 记忆体於同一封裝,提供 128-pin 和 216-pin LQFP 封装,大幅减少 PCB 尺寸和降低电磁干扰 ( EMI ) 。...
**二叉空间划分树(BSP Tree)** 二叉空间划分树(Binary Space Partitioning...在C++中实现BSP树,需要理解其基本原理,并熟练掌握数据结构和递归算法。通过有效的策略和优化,BSP树能为复杂问题提供高效的解决方案。
另外,提供了一个额外资源链接的章节,用户可以获取更多的信息和帮助。 文档中所涉及的版权信息指出,该文档包含的Xilinx公司的商标和品牌在美国和其他国家受法律保护,所有其他商标均属于其各自所有者的财产。 ...