OGRE几何学习记录
2013-04-28 08:56
309 查看
1. quad-based objects
粒子系统、公告栏、跟踪轨迹、表层、天空盒、天空面、穹顶
由四边形面片构造,没有相关的模型,仅拥有纹理和生命周期
会把带有纹理的一面一直朝向摄像机
天空面、天空盒、穹顶:
总是和摄像机保持固定的距离;
默认在所有场景物体渲染前渲染,可以之后渲染;
其纹理与其他活动纹理没有本质区别;
可以通过场景管理器开关,也可以重新设置与摄像机的距离
天空面:
一个平面,可以通过场景管理器分解成多个片段,并控制弧度
穹顶:
5个面,没有底的盒子
盒子下部的纹理会因曲率过大失真,地平面高度要高于这些失真
通过调整纹理坐标产生弧度效果,弧度低,天空平坦,适合室外场景,弧度高,陡峭,适合室内场景所看到的天空
每个半盒与摄像机距离固定,距离不宜太近,会覆盖场景中的区域
可以通过活动纹理产生浮云效果
天空盒:
天空盒不是穹顶加一个底面,没有“弯曲”纹理坐标的能力
使用立方体纹理技术“平铺”
潜在利用硬件对立方体纹理的加速功能
|----渲染对象 rendering objects:帮助进行渲染,摄像机、灯光
|
|----可渲染对象 renderable objects:场景中的物体
摄像机:
定义产生6个面组成的视截体,近截面、远截面,ogre利用这6各面剔除不可见的物体(图形硬件使用他裁掉 盒子外 一定粒度的几何图形(多边形级别))
摄像机一般直接放置在场景中,默认0,0,0;也可以挂接场景节点,但要关闭“锁定偏移轴(use fixed yaw axis)”,否则摄像机会维持固定向上状态,无法滚动
灯光:
一般被绑定到某些场景节点,产生特殊效果,如车灯
灯光拥有类型、位置、强度属性
由于计算强度原因,灯光只能用于物体的局部辐射光照算法,即不考虑所有光源,特别是其他物体的反射光、光线追踪和光能传递
ogre支持环境光吸收算法 ambient occlusion (AO)------准全局辐射度算法模型
局部光照算法:通过物体表面法线和材质属性,计算光照最终在摄像机中的表现,计算出颜色值给显示器输出
每个渲染通路只能使用一定数目的光照,通常8个
更多 灯光需要更多的 渲染通路,会导致渲染效率下降
ogre的灯光模型:
点光源,聚光灯光源Spot,有向光源 Directional
都有自身颜色,被用于最终的颜色计算;都可以移动,但有向光源没实际意义
点和聚光灯会对距离的增加进行衰减,可设置衰减系数(常量、线性、二次),还可以设置影响范围,范围之外的物体不会得到光照
点光源:向周围辐射,模拟辐射光,壁灯、台灯
聚光灯光源:有方向特性,锥形作用范围,可分外锥和内锥,内锥光线线性衰减,外锥光线可叠加衰减,模拟摩托车前灯
有向光:
模拟太阳广,没有衰减,任何与衰减有关的参数都会被忽略,模拟太阳光
世界地图 World Geometry:
即场景中所有固定的物体,如高度场地图、网格地图、建筑景观、固定的门窗,除了 movable object之外的所有东西
地形和室外场景一般被“分割”,载入时才“缝合”
对以网络模型为基础的场景,需要分割,否则即使只有一小部分需要显示,ogre也会渲染整个模型的全部
ogre的空间分割:
建立在物体粒度上,而不是多边形上,即每个自空间有多少个几何体才能达到稳定、内含多少个可活动的物体、期待的密度和如何布置他们。
四叉树:quadtree
经典的2D分割,适合垂直高度变化小的室外场景或地形
八叉树:octree
适合小型室外场景,即一个立方体被一分为8个
四叉树、八叉树更擅长把多边形打包成集合体进行分割
BSP二叉空间分割树 binary-space partitioning:
场景组织很有效,但目前一般被用于快速碰撞检测
GPU:现代的GPU适合渲染少量巨大的物体,而不是很多小几何片段,比如100w个三角面捆绑成一个簇 cluster 能达到300帧,但分布在1000个簇里,就降低到30帧。
所以可渲染面数不是性能的唯一标准
但是,
1. 巨大的静态物体不能在每一帧都被构建,
2. 静态几何体按材质分类,材质相同的放到同一个簇中,不同材质的物体仍然会被分成不同的簇,效益需要根据材质进行平衡
3. 静态几何体,不能单独移动
4. 活动物体可以共享 一个网络模型,静态物体一般每个实体一个网格模型
5. 即使视截体只看到静态几何体的一小部分,但整个静态几何体数据都会被传到图形硬件中渲染
6. 当距离改变时,整个静态物体的LoD会改变
静态物体的好处:
场景管理器会通过空间分割算法把静态集合体分组,把没有在显示空间的静态几何体直接剔除出渲染队列
粒子系统、公告栏、跟踪轨迹、表层、天空盒、天空面、穹顶
由四边形面片构造,没有相关的模型,仅拥有纹理和生命周期
会把带有纹理的一面一直朝向摄像机
天空面、天空盒、穹顶:
总是和摄像机保持固定的距离;
默认在所有场景物体渲染前渲染,可以之后渲染;
其纹理与其他活动纹理没有本质区别;
可以通过场景管理器开关,也可以重新设置与摄像机的距离
天空面:
一个平面,可以通过场景管理器分解成多个片段,并控制弧度
穹顶:
5个面,没有底的盒子
盒子下部的纹理会因曲率过大失真,地平面高度要高于这些失真
通过调整纹理坐标产生弧度效果,弧度低,天空平坦,适合室外场景,弧度高,陡峭,适合室内场景所看到的天空
每个半盒与摄像机距离固定,距离不宜太近,会覆盖场景中的区域
可以通过活动纹理产生浮云效果
天空盒:
天空盒不是穹顶加一个底面,没有“弯曲”纹理坐标的能力
使用立方体纹理技术“平铺”
潜在利用硬件对立方体纹理的加速功能
|----渲染对象 rendering objects:帮助进行渲染,摄像机、灯光
|
|----可渲染对象 renderable objects:场景中的物体
摄像机:
定义产生6个面组成的视截体,近截面、远截面,ogre利用这6各面剔除不可见的物体(图形硬件使用他裁掉 盒子外 一定粒度的几何图形(多边形级别))
摄像机一般直接放置在场景中,默认0,0,0;也可以挂接场景节点,但要关闭“锁定偏移轴(use fixed yaw axis)”,否则摄像机会维持固定向上状态,无法滚动
灯光:
一般被绑定到某些场景节点,产生特殊效果,如车灯
灯光拥有类型、位置、强度属性
由于计算强度原因,灯光只能用于物体的局部辐射光照算法,即不考虑所有光源,特别是其他物体的反射光、光线追踪和光能传递
ogre支持环境光吸收算法 ambient occlusion (AO)------准全局辐射度算法模型
局部光照算法:通过物体表面法线和材质属性,计算光照最终在摄像机中的表现,计算出颜色值给显示器输出
每个渲染通路只能使用一定数目的光照,通常8个
更多 灯光需要更多的 渲染通路,会导致渲染效率下降
ogre的灯光模型:
点光源,聚光灯光源Spot,有向光源 Directional
都有自身颜色,被用于最终的颜色计算;都可以移动,但有向光源没实际意义
点和聚光灯会对距离的增加进行衰减,可设置衰减系数(常量、线性、二次),还可以设置影响范围,范围之外的物体不会得到光照
点光源:向周围辐射,模拟辐射光,壁灯、台灯
聚光灯光源:有方向特性,锥形作用范围,可分外锥和内锥,内锥光线线性衰减,外锥光线可叠加衰减,模拟摩托车前灯
有向光:
模拟太阳广,没有衰减,任何与衰减有关的参数都会被忽略,模拟太阳光
世界地图 World Geometry:
即场景中所有固定的物体,如高度场地图、网格地图、建筑景观、固定的门窗,除了 movable object之外的所有东西
地形和室外场景一般被“分割”,载入时才“缝合”
对以网络模型为基础的场景,需要分割,否则即使只有一小部分需要显示,ogre也会渲染整个模型的全部
ogre的空间分割:
建立在物体粒度上,而不是多边形上,即每个自空间有多少个几何体才能达到稳定、内含多少个可活动的物体、期待的密度和如何布置他们。
四叉树:quadtree
经典的2D分割,适合垂直高度变化小的室外场景或地形
八叉树:octree
适合小型室外场景,即一个立方体被一分为8个
四叉树、八叉树更擅长把多边形打包成集合体进行分割
BSP二叉空间分割树 binary-space partitioning:
场景组织很有效,但目前一般被用于快速碰撞检测
GPU:现代的GPU适合渲染少量巨大的物体,而不是很多小几何片段,比如100w个三角面捆绑成一个簇 cluster 能达到300帧,但分布在1000个簇里,就降低到30帧。
所以可渲染面数不是性能的唯一标准
但是,
1. 巨大的静态物体不能在每一帧都被构建,
2. 静态几何体按材质分类,材质相同的放到同一个簇中,不同材质的物体仍然会被分成不同的簇,效益需要根据材质进行平衡
3. 静态几何体,不能单独移动
4. 活动物体可以共享 一个网络模型,静态物体一般每个实体一个网格模型
5. 即使视截体只看到静态几何体的一小部分,但整个静态几何体数据都会被传到图形硬件中渲染
6. 当距离改变时,整个静态物体的LoD会改变
静态物体的好处:
场景管理器会通过空间分割算法把静态集合体分组,把没有在显示空间的静态几何体直接剔除出渲染队列