ogre3D学习基础3 -- 粒子与表层脚本
9、粒子脚本
粒子脚本允许你实例化地在你的脚本代码中定义粒子系统,而不必在源代码中进行设置,使得你做任何修改都能得到快速回应。脚本里定义的粒子系统被用作模板,并且多个实际的系统可以在运行时从这里被创建。
粒子系统属性:
quota --- 设置这个系统在某一时刻所允许包含的最多粒子数。
格式: quota <max_particles>
material ----设置这个系统中的全体粒子将要使用的材质的名字。
格式: material <material_name>
particle_width --- 在世界坐标中,设置粒子的宽度。
格式: particle_width <width>
particle_height --- 在世界坐标中,设置粒子的高度。
格式: particle_height <height>
cull_each --- 所有的粒子系统都被包括在一个包含这个系统所有粒子的边界盒内。
格式: cull_each <true|false>
billboard_type --- 可以指定粒子有其自己的方向。
格式: billboard_type <point|oriented_common|oriented_self|perpendicular_common|perpendicular_self>
billboard_origin --- 指定所有公告板粒子的起始点,控制公告板粒子的出现位置。
格式: billboard_origin <top_left|top_center|top_right|center_left|center|center_right|bottom_left|bottom_center|bottom_right>
billboard_rotation_type --- 指定公告板其它的旋转类型。
格式: billboard_rotation_type <vertex|texcoord>
common_direction ---如果billboard_type被设置为oriented_common或者perpendicular_common才需要,这个向量是用于定位系统中所有粒子的共用向量。
格式: common_direction <x> <y> <z>
common_up_vector -- 如果billboard_type被设置为perpendicular_self或者perpendicular_common才需要,这个向量是用于定位系统中所有粒子的共用向上向量。
格式: common_up_vector <x> <y> <z>
renderer --- 粒子系统并不渲染它本身,它们通过ParticleRenderer类完成这一点。默认的是'billboard'。
格式: renderer <renderer_name>
sorted --- 默认情况下,粒子是不排序的。若设定这个属性为'真',粒子将会根据摄影机的位置关系被排序,最远的优先.
格式: sorted <true|false>
local_space -- 此选项可以让粒子保持附加在粒子发射器所在的局部空间内并直接跟随它们.
格式: local_space <true|false>
point_rendering --- 设置与否关系到公告板将使用点渲染而不是手动生成渲染画面。
accurate_facing --- 设置摄像机的旋转与公告板的关系。
格式: accurate_facing on|off
iteration_interval --- 可以使用这个选项设定升级频率为固定的间隔,在低帧率时,粒子更新会按固定的间隔重复,直到帧率恢复正常。0值意为默认帧时间循环。
格式: iteration_interval <secs>
nonvisible_update_timeout ---- 选项让你在粒子系统上设置一个'timeout'时限,以便如果它这么长时间不可见,即停止更新,直到它下次可见。值0表示关闭timeout,总是更新。
格式: nonvisible_update_timeout <secs>
粒子发射器属性
angle----设置发射的粒子可以偏离发射方向的最大角。
格式: angle <degrees>
colour---为所有发射的粒子设置一个静态颜色。
格式: colour <r g b> [<a>]
colour_range_start和colour_range_end---制定了被发射出去的粒子的可用颜色范围。实际的颜色将会在这两个值之间随机选择。
格式: 同 colour 示例(随机生成红蓝之间的颜色): colour_range_start 1 0 0 colour_range_end 0 0 1
direction---设置发射器的方向。随着其它可移动物体改变节点方向,发射器也会随着移动。
格式: direction <x> <y> <z>
emission_rate----设置每秒要发射多少粒子。
格式: emission_rate <particles_per_second>
position---设置发射器相对于粒子系统所在的场景节点所处的位置。
格式: position <x> <y> <z>
velocity---给所有粒子设置发射时的速率。
格式: velocity <world_units_per_second>
velocity_min & velocity_max---每一个粒子都是以在这个范围内的随机速率被发射出去的。
格式: 同 velocity
time_to_live---设置每个粒子在被销毁之前存活的秒数。
格式: time_to_live <seconds>
time_to_live_min & time_to_live_max---每个粒子在发射时得到这一范围内的一个随机的数值,作为其存在时间。
格式: 同 time_to_live 示例: time_to_live_min 2 time_to_live_max 5
duration---设置发射器处于活动状态的秒数。发射器可以被再次打开,查看repeat_delay。数值0意味着无限时
格式: duration <seconds>
duration_min & duration_max---除了这两个属性是设置一个可变的时间范围外,其它的与duration一样。
格式: 同 duration
repeat_delay_min & repeat_delay_max----这两个属性除了是设置重新开始需要等待的时间范围外。
格式: 同 repeat_delay 示例: repeat_delay 2 repeat_delay 5
标准粒子发射器
Point Emitter --点发射
Box Emitter --- 3维盒子发射
Cylinder Emitter -- 沿Z轴摆放的圆柱体区域内的随机方向发射粒子
Ellipsoid Emitter --- 椭圆体形状的区域里发射粒子
Hollow Ellipsoid Emitter --- 除了椭圆体中心有一个空洞区域不发射粒子外,其他方向发射
Ring Emitter -- 环状区域发射粒子
粒子影响器按类型分
LinearForce影响器 --- 对所有粒子应用一个力。
ColourFader影响器 --- 改变飞行中的粒子的颜色。
标准粒子影响器
Linear Force Affector -- 对所有粒子施加一个力,改变粒子的运动轨迹。可以用于重力,风力,或者其它线性力.
1 affector LinearForce
2 {
3 // 设置写在这里,影响器类型的名字(LinearForce)是大小写敏感的。
4 }
ColourFader Affector -- 修改飞行中的粒子的颜色。
1 affector ColourFader
2 {
3 // 设置写在这里
4 }
ColourFader2 Affector -- 修改两种颜色,在粒子存续期内,指定还剩一段时间时,激活第二个颜色改变状态。
1 affector ColourFader2
2 {
3 // 设置写在这里
4 }
Scaler Affector -- 调节飞行中的粒子的大小。
1 affector Scaler
2 {
3 // 设置写在这里
4 }
Rotator Affector -- 依靠旋转粒子的贴图纹理来旋转飞行中的粒子。
1 affector Rotator
2 {
3 // 设置写在这里
4 }
ColourInterpolator Affector -- 修改飞行中的粒子的颜色,它在粒子存续期内在几种状态间插值变换粒子的颜色。
1 affector ColourInterpolator
2 {
3 // 设置写在这里
4 }
ColourImage Affector -- 从一个指定的图像文件中取得颜色。在粒子的存续时间内,颜色的取值范围是从图像的左侧开始向右移动。
1 affector ColourImage
2 {
3 // 设置写在这里
4 }
DeflectorPlane Affector -- 定义一个平面,这个平面反弹碰到它的粒子。
DirectionRandomiser Affector -- 随机选定粒子运动的方向。
10 、表层脚本(Overlay)
表层脚本提供给你用脚本定义图层以方便重复使用的能力。通过模板向层中添加元素。
表层元素(OverlayElement)属性
metrics_mode---用来设置元素的大小和位置的单位。
格式: metrics_mode <pixels|relative> 示例: metrics_mode pixels
horz_align---设置此元素的水平对齐,即水平起点的位置。
格式: horz_align <left|center|right> 示例: horz_align center
vert_align---设置此元素的垂直对齐,即垂直起点的位置。
格式: vert_align <top|center|bottom> 示例: vert_align center
left---设置元素相对于它上一层的水平位置。
格式: left <value> 示例: left 0.5
top---设置元素相对于它上一层的垂直位置。
格式: top <value> 示例: top 0.5
width---以屏幕宽度的某一比率设置元素的宽度。
格式: width <value> 示例: width 0.25
height---以屏幕高度的某一比率设置元素的高度。
格式: height <value> 示例: height 0.25
material---设置用于此元素的材质名。
格式: material <name> 示例: material Examples/TestMaterial
caption---设置元素的文本标题。
格式: caption <string> 示例: caption This is a caption
rotation---设置元素的旋转。
格式: rotation <angle_in_degrees> <axis_x> <axis_y> <axis_z> 示例: rotation 30 0 0 1
标准表层元素
Panel (面板容器)-- 能够包含其他元素(或容器)的矩形区域的面板,只有当透明处于关闭状态时,才会显示。
BorderPanel(容器) -- 有一个单独的可以随着面板调节大小的边框,面板被分为9块区域进行渲染。
TextArea(文本区域)-- 可以用来渲染文本的普通元素。
11、字体定义脚本
Ogre使用基于纹理的字体渲染TextAreaOverlayElement。字体的最终格式是一个由字体生成的Material对象,以及一组"glyph"(字符轮廓)纹理坐标信息。所有字体定义被保存在.fontdef文件中,基本格式如下:
<font_name>
{
type <image | truetype>//使用预先设计好的字体
source <image file | truetype font file>//资源,字体名称
...
... custom attributes depending on type//
}
ogre3D学习基础3 -- 粒子与表层脚本的更多相关文章
- ogre3D学习基础1 -- 核心对象与脚本技术
一.核心对象介绍1.命名空间 Ogre3d使用了C++的特性--命名空间,可以防止命名混淆.使用方法也简单,using namespace Ogre;或者直接在使用时加上“Ogre::”的前缀,如Og ...
- ogre3D学习基础18 -- 材质的使用与脚本的简单书写
这一节以基础16为基础,练习材质的使用. 第一,看看框架 //material #include "ExampleApplication.h" class TutorialAppl ...
- ogre3D学习基础19 --- 材质的继承,纹理的滚动与旋转
以上一节为基础,废话不多说. 首先新增一个节点,用于比较显示 //新增一个节点 ent = mSceneMgr->createEntity("Quad"); ent-> ...
- ogre3D学习基础5 -- 阴影与动画
五.阴影 阴影是渲染一个真实场景的重要组成部分,它可以给场景中的物体提供更加真实的感觉,同时还可以帮助用户更好的了解对象间的空间关系. 启用阴影: 缺省情况下,阴影是关闭的,开启方式如下: 1.建立场 ...
- ogre3D学习基础7---材质详解
物体着色的基础 --- 四种不同光照作用 1.环境反射 近似的模拟了场景中的全局辐射,也就是用来近似模拟所有光在场景中不断散射的结果.材质中有相应的属性来代表这种环境反射颜色. 2.漫反射 这种颜色是 ...
- ogre3D学习基础6---场景管理器的使用
场景管理器的使用 最常使用的坐标系统空间(同时也是Ogre程序所能提供的)即是世界空间(World).父节点空间(Parent)以及本地空间(Local). 1.世界空间 就是物体所存在的地方,当我们 ...
- ogre3D学习基础17 --- 如何手动创建ogre程序
建立自己的Ogre程序 一直以来都是使用ExampleApplication.h来写程序,现在来看看它到底有什么神奇的地方. 首先,我们新建一个win32空项目 然后配置环境 最后新建define.c ...
- ogre3D学习基础15 -- 创建BSP Scene Manager
BSP(binary-space partitioning) Scene Manager(二叉空间分割)场景管理器比较适合用于室内场景. 第一,添加框架代码如下 #include "Exam ...
- ogre3D学习基础13 -- 键盘控制网格动画mesh
以上一节为蓝本,这里增加一点难度,添加了四个节点,增加键盘控制移动速度,使用bool变量控制是否移动. 第一,要增加键盘控制,那就使用OIS::KeyListener,在监听器里添加一个父类KeyLi ...
随机推荐
- Unity3d 游戏中集成Firebase 统计和Admob广告最新中文教程
之前写过俩相关的教程,最近发现插件官方更新了不少内容,所以也更新一篇Firebase Admob Unity3d插件的教程,希望能帮到大家. Firebase Admob Unity3d插件是一个Un ...
- centOS7虚拟机连接大网
1.启动vm服务 如果遇到无法启动时,需要还原vm默认配置解决 2.更改vm设置为NAT模式 3.centOS开启DHCP
- 在一个css文件中引入其他css文件
@import "./main.css";@import "./color-dark.css";@import "./reset.css";
- 工作流性能优化(敢问activiti有扩展性?)(1)
工作流待办(首页待办列表),加载缓慢,activiti本机,看了代码又是全部数据加载到内存,然后代码过滤,我为什么又说又呢? 用VisualVM做性能测试: 之前同事给的解决方案: 1.把&quo ...
- World Wind Java开发之八——加载本地缓存文件构建大范围三维场景(
http://blog.csdn.net/giser_whu/article/details/42044599 上一篇博客主要是针对小文件直接导入WW中显示,然而当文件特别大时,这种方式就不太可行.因 ...
- git 修改commit 的注释
git 修改commit 的注释 一:最新的一次提交 当你不小心,写错了提交的注视/信息,该如何处理呢.理论上,SCM是不应该修改历史的信息的,提交的注释也是. 不过在git中,其commit提 ...
- 使用U盘引导安装CentOS
一.制作linux引导盘 1. 格式化U盘:格式成FAT32格式 2. 安装syslinux https://www.kernel.org/pub/linux/utils/boot/syslinux/ ...
- Java代码工具箱之解析单行单列简单Excel
1. 使用开源工具 jxl.jar 2. 功能:解析常规Excel.xls格式测试可行,xlsx未测试.Excel测试格式为常规类似table这种简单布局文件.第一行为标题,后面行为内容.代码 可正确 ...
- C#继承机制 继承与访问修饰符
继承与访问修饰符 访问修饰符是一些关键字,用于指定声明的成员或类型的可访问性.类的继承中有四个访问修饰符: public protected internal private.使用这些访问修饰符可指定 ...
- UITableView 优化总结
最近在微博上看到一个很好的开源项目VVeboTableViewDemo,是关于如何优化UITableView的.加上正好最近也在优化项目中的类似朋友圈功能这块,思考了很多关于UITableView的优 ...