海归网首页   海归宣言   导航   博客   广告位价格  
海归论坛首页 会员列表 
收 藏 夹 
论坛帮助 
登录 | 登录并检查站内短信 | 个人设置 论坛首页 |  排行榜  |  在线私聊 |  专题 | 版规 | 搜索  | RSS  | 注册 | 活动日历
主题: [原创[分享][深夜无眠Secondlife对象编程语言LSL汉化] 第十一章中文
回复主题   printer-friendly view    海归论坛首页 -> 海归商务 -> 项目找投资与合作           焦点讨论 | 精华区 | 嘉宾沙龙 | 白领丽人沙龙
  阅读上一个主题 :: 阅读下一个主题
作者 [原创[分享][深夜无眠Secondlife对象编程语言LSL汉化] 第十一章中文   
文清
[博客]
[个人文集]





头衔: 海归上尉

年龄: 40
加入时间: 2006/12/21
文章: 883

海归分: 8578





文章标题: [原创[分享][深夜无眠Secondlife对象编程语言LSL汉化] 第十一章中文 (1268 reads)      时间: 2007-1-21 周日, 09:26   

作者:文清项目找投资与合作 发贴, 来自【海归网】 http://www.haiguinet.com

[原创[分享][深夜无眠之游戏软件汉化成果] Secondlife对象编程语言LSL第十一章中文

第十一章很长.只喜欢看中文的小P孩可以看此贴.

Chapter 11. Vehicles 交通工具
用LSL可以创建和控制交通工具.这张将讲述交通工具基本原理,描述交通工具的术语,以及API函数的应用.
有很多方法可以编程控制对象移动.一个方法就是把对象编程”交通工具”.这个功能可以让物体侧身,盘旋,飞翔和漂浮.一些动作可以:
• deflection of linear and angular velocity to preferred axis of motion
• 通过改变线速度和角速度来选择运动坐标
• asymmetric linear and angular friction
• 非均匀线和角度摩擦
• hoveringover terrain/water or at a global height
• 盘旋在在梯田和水面,或者以全局高度盘旋
• bankingon turns 通过倾斜转弯
• linearand angularmotor for push and turning 线和角发动机,用来推和转
11.1. Overview 综述
每一个被编程对象都可以带一个交通工具,交通工具在llSetVehicleType, llSetVehicleFloatParam, llSetVehicleVectorParam, llSetVehicleRotationParam, llSetVehicleFlags, and llRemoveVehicleFlags中调用并组合.
下面会详细讲述这些调用指令.最重要的是一定要注意一个交通工具行为有几个参数,来改变交通工具的控制.不同的值使交通工具既可以象水中的船一样漂转,有可以象轨道上雪橇一样.
设定交通工具旗子可以得到默认值以外的行为.一些旗子只能在某些行为下有效.比如, VEHICLE_FLAG_HOVER_WATER_ONLY这个函数可以让交通工具不考虑梯田高度,但是它只在交通工具盘旋的状态下有效.
11.2. Warnings
在以后几个版本的secondlife中,交通工具会改善.有些行为细节会根据稳定性和用户安全而改善.特别地,附录中一些限制和默认设置并不会长期使用.
建议交通工具和其它程序调用一起使用,比如脉冲函数,对象的力量函数.特别是这几个函数: llSetBuoyancy, llSetForce, llSetTorque, and llSetHoverHeight
尽管下面这些方法不会引起不稳定,但这些行为可能可能让交通工具矛盾,引起不可预料的或者不连续的结果,比如这些函数: llLookAt, llRotLookAt, llMoveToTarget, and llTargetOmega
如果交通工具有bug,一个办法是提交问题,这样给Andrew Linden这个交通工具的程序代码拷贝及其注释,或者标识问题.请把提交报告命名为: "Bugged Vehicle XX",这个XX是你的Second Life姓名缩写. Andrew Linden公司就会尽快改善这个交通工具.
11.3. Definitions 定义
"roll转"; "pitch颠" "yaw侧" 用来描述飞机或者轮船的旋转.分别绕X.Y.Z轴一定角度..
z-axis .
yaw-axis /|\
| __. y-axis
._ ___| /| pitch-axis
_||\ \\ |\. /
\|| \_______\_|__\_/_______
| _ _ o o o o o o o |\_ ______\ x-axis
// ./_______,----,__________) / roll-axis
/_,/ // ./
/__,/

按照右手定则(高中物理学过的电磁定律),定义这里的顺时针选择规则.比如:绕一个旋转轴顺时针旋转.
.-.--.--.--. __
/ / / / _ \ / \
(-(- (- (- ( | _________|______\ axis of
\.\._\._\._) | | / rotation
| \:__,---. \|/
| | + positive
\ .,_.___.' rotation
\_ ^ `.__,/
| /
| |
许多控制交通工具的参数是同一个形式:函数VEHICLE_BEHAVIOR_TIMESCALE.一个行为”时间刻度”可以指用时间来设定推.转或者用来影响交通工具,比如设定它现在的行为和把其改变1/e后该有的行为.e是自然指数因子.也就是说,其行为会按照自然指数衰减. 当想要交通工具动作改变快,就把时间刻度设置大一些,比如300(5分钟)会更大.注意,因为稳定性需要,时间刻度有个最小值限制.一般按照每秒10倍变化.把时间刻度设置为0等于把它设置到其最小值.任何功能都可以通过把时间刻度设置足够大而使之失效.因为刻度大,改变一个行为可能需要花费1天时间.
11.4. Setting the Vehicle Type 设置交通工具类
在任何交通工具行为必须先激活,才可以设定交通工具参数. 通过来任何类VEHICLE_TYPE_*的函数llSetVehicleType来激活. 函数VEHICLE_TYPE_NONE会使交通工具行为失效,不可以用来激活.参考交通工具类常量.更多的交通工具类会在以后提供.
为激活交通工具行为,必须设定交通工具类,以及为其各种默认值设定参数. 我们提供了每种类的代码. 请注意每种类的默认值不是特定的,在将来会改变的.不用把这些值当成常量,而不去指定.
如果想要制定交通工具,必须先在某一种默认类下激活交通工具行为,然后可以改变其参数,或者在允许范围内改变其旗帜.
设定交通工具类不会自动去控制和移动对象.如果激活交通工具行为,而那个对象正好是在移动或者在一个山上,它就会移动飘游.
我们正在建立新的默认类. 如果你自行设计了一种汽交通工具,船或者其它任何交通工具的默认类,请把你参数设置历表发送给我们.
11.5. Linear and Angular Deflection 线和角偏转
理解此节内容最好参考(即坐标旋转,参看高三数学解析几何.)
所有的交通工具都可以绕着特定的轴旋转. 根据其轮胎,交通工具翼,形状或者其绕轴驱动力的不同方法而选择不同轴. 这个轴相对交通工具自身是静止得. 这个基本特征界定了交通工具的类别以及在这个标定中的交通工具: 交通工具身后部有鳍,这样在其需要在空气中翻筋斗的时候,可以让其对准点向前—我们定义这种对准为角偏转.
不同的轮胎工艺,不同的结果.当滑板被推向某个方向的时候,它会朝它可以自由旋转的方向前进.我们将此效应称为:线性偏转.
一个典型的secondlife对象可以朝着其选择的轴进行线性或者角偏转. 在交通工具的原始部落的坐标下, 默认的轴,是本地轴X,左边Y轴,Z轴向上.偏转是相对于本地轴而言: 线性偏转会使旋转线速率变化,直至指向X轴正向,而角偏转则是使X轴按照其移动发现旋转.(即坐标旋转,参看高三数学解析几何.)
不同的交通工具,线性和角偏转不同. 通过函数llSetVehicleFloatParam 来设定相关参数改变偏转速度. 每个偏转速率都有一个时标参数,这个参数可以决定偏转变化快慢. 一般这个时标是针对全速偏转的指数衰减函数的系数. 因此, 时标越小,也就是指数函数系数小,一个交通工具偏转会越快. 例如,一个典型的投掷可能由好几秒钟的角偏转和几秒钟的线性偏转组成, 在它改变方向之前,它会自转. 用下面两行来设定一个投掷行为的时标:
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 2.0);
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 6.0);
每一种偏转的速率有效率参数, 一个在0.0 到1.0的数字.不像其它设定交通工具行为的效率参数, 这个偏转参数不会在”完全弹性”和”阻尼”态, 而是从”没有任何偏转(0.0)”到”最大偏转(1.0)”. 它们类似偏转时标,变化范围从0.0 到 1.0
11.6. Moving and Steering the Vehicle移动和控制交通工具.
一旦激活,一个交通工具可以通过外力或者调用函数llApplyImpulse实现推行或者旋转.然而线性和角发动机是内嵌的,以使其运动更加平滑和易于控制.通过函数llSetVehicleVectorParam调用可以设定其方向.比如,实现一个交通工具沿其X轴,也就是观察到的当前轴方向每秒位移5米, 通过这个以下指令就可以:
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <5>);
除了上述有控制发动机的力量的函数, 还有函数(VEHICLE_LINEAR_MOTOR_TIMESCALE)控制其引擎速度. 发动机的效率随时间递减的参数函数为: (VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE)
控制一辆交通工具,涉及到设定函数VEHICLE_ANGULAR_MOTOR_DIRECTION及其相关参数. 也可以通过设定一些旗帜来允许角发动机为”Camera”“视角”服务.
更多内容请参考线和角”Motor(发动机)”.
11.7. The Linear Motor 线Motor(发动机)”
控制线”Motor(发动机)”的参数如下:
• VEHICLE_LINEAR_MOTOR_DIRECTION
• 函数VEHICLE_LINEAR_MOTOR_DIRECTION,一个矢量.表征交通工具达到的速度.单位米/秒.起点在交通工具身上,最大长度为40
• VEHICLE_LINEAR_MOTOR_OFFSET
一个矢量.指与交通工具的中心点偏置的位移,线”Motor(发动机)”的启动就从这个中心点开始.这也是”Motor(发动机)”产生转力矩.这个矢量起始于交通工具身,最大长度达100米.而且无需担心稳定性---如果交通工具旋转过快(超过44*P弧度),角速度就会下降.这就是这个偏置可以大达100米的原因,因为这样它可以和其它交通工具的行为展开竞争.比如行为角偏差,垂直吸收. 其它一些交通工具行为可能引起线”Motor(发动机)”偏置,造成非常大的转力矩效应降低,这种情况下,平衡力臂可以缓冲这种降低.
• VEHICLE_LINEAR_MOTOR_TIMESCALE
一个浮量.决定发动机推动交通工具达到全速需要的时间.最小值大约为0.06秒.
• VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE
一个浮量.发动机效率随时间刻度指数下降,但是如果发动机的值被明确设定的时候,发动机效率会被重置.最大衰减时标为120秒, 这个时标一直有效.
影响线发动机的旗帜:
• VEHICLE_FLAG_LIMIT_MOTOR_UP
对”地交通工具”有用.这个旗帜用来夹住线发动机的Z轴部件,以防止地心引力影响.这个Z轴是针对secondlife坐标而言.
设计一个优秀的交通工具,光设定发动机速度是不够的.比如,有人会想要一辆可以马上达到他想要的速度的交通工具,而有些人则想要一个船,一个可以慢慢达到其最大速度的船.函数VEHICLE_LINEAR_MOTOR_TIMESCALE可以用来设定参数以实现控”交通工具”还是”船”的控制.基本上,对于一辆指数增速到其全速的交通工具,其发动机的时标是一个常数.
如果不小心设定交通工具线速达到其可能最大值并让其发动了,这会产生什么现象呢?交通工具会跑远并永远停不下来吗? 事实并非如此.一个自动的”发动机衰减器”内嵌在这种发动机里,这样在设定好后,发动机会自动衰减其效率.
每次线发动机矢量设定其方向盘,然后启动,并按照指数衰减,指数衰减时标则由函数VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE决定, 这样在一定时间后,发动机就静止了.这个衰减时标有两个用途.一呢,因为它最长不超过120秒,而且它永远设置为有效,以防止交通工具在没有控制(如键盘控制,或者通过程序指令控制)的情况下,永远前进不停止.第二个目的, 它可以用来推进某些交通工具达到一种脉冲模型效果. 而不是设定交通工具启动或者停止.这在通过特定键来”上””下”移动衰减时标值,以使交通工具在”发动”状态下,随着不同的衰减时标而随之自动衰减速度.
既然发动机在交通工具矢量设定的时候,会被清零重置,那么设定它为矢量长度0就和其完全衰减不同. 前一种情况会使交通工具达到速度为0,而后一种情况则让发动机停止.
两种发动机时标有类似的名字,但是不同的用途,因此不要混淆.函数VEHICLE_LINEAR_MOTOR_TIMESCALE是让发动机”赢”的时间,而函数VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE是让发动机的效率衰减到零的时间.错误的使用只有错误的结果.同时,发动机衰减时标比一般的时标短,发动机矢量的有效数量级会减少.
11.8. The Angular Motor 角发动机
控制角发动机的参数:
• VEHICLE_ANGULAR_MOTOR_DIRECTION
一个矢量.这是交通工具旋转的角速度矢量.它的原点在交通工具身,最大值4*PI,即每秒2周.
• VEHICLE_ANGULAR_MOTOR_TIMESCALE
一个浮量.觉得发动机使交通工具旋转到最大角速度的时间.最小值大约0.06秒.
• VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE
一个浮量.发动机效率会随这个时标指数衰减,但是同样在发动机被设定的时候,其效率会清零重置.这个衰减时标最大值为120秒,且它始终有效.
和线发动机一样,角发动机可以直接设置,有幅度/方向,时标,衰减时标等参数.
当需要真正控制一辆交通工具的时候,有几种方法.一种是通过键盘控制,这种方法不适用于远和长距离的交通工具运行.另一种方法是通过角发动机,让衰减时标设置比较大,产生非常大的角摩擦(以使交通工具迅速减速和发动机停止),在通过按一下键盘来设置角发动机为一个比较大的矢量,当键盘松开后,它被设置为0.这可以让交通工具凭借其角摩擦,而不受外部碰撞干扰
另一个方法是设定函数VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE到一个比较小的值,来推动交通工具以一种更加冲的方式前进,通过按住一个键给发动机加速,松开键让其发动机为0.这通过发动机的自动指数衰减实现,而不是一个角摩擦常数.
最后,通过函数VEHICLE_LINEAR_MOTOR_OFFSET可以完全不使用角发动机.一旦偏置有部件和线发动机垂直,交通工具就会旋转.注意,错误的设定偏置和交通工具的线发动机力量,会很容易翻交通工具,或者使交通工具失去控制的旋转,所以,刚开始,最好一次比较小偏置的做实验.
设定角发动机为0,和允许其衰减不同.当发动机完全衰减,它不再影响交通工具的运动,但是设定其角发动机为0,则会重置”方向盘”,让交通工具的角速度变为0.
许多真实的交通工具以倾斜方式(绕其前进方向滚动)以达到转弯目的,比如摩托交通工具和飞机.为了更方便建立倾斜交通工具行为,有函数库倾斜行为,通过设定其它参数来控制倾斜. 这在后面后详细介绍.
It is also possible to make a vehicle turn in response to changing the camera view (right now this only works in mouselook
11.9. Using the Camera to Steer
交通工具子可以通过”Camera”“视角”的方向来引导其前进.这通过设定一些旗帜,在函数VEHICLE_ANGULAR_MOTOR_DIRECTION中体现出来.当设定正确,这些特征可以提供简单和稳定的控制.
The flags that affect the angular motor are:
影响角发动机的旗帜:
• VEHICLE_FLAG_MOUSELOOK_STEER
通过鼠标控制交通工具.这俄国旗帜可以让角发动机让交通工具转弯,比如让其本地X轴指向客户端”Camera”“视角”.
• VEHICLE_FLAG_MOUSELOOK_BANK
这个旗帜和上面那个相同,只是依靠倾斜.它改变客户”Camera”“视角”(偏航)的左右运动,来选择交通工具的本地X轴(滚动).
• VEHICLE_FLAG_CAMERA_DECOUPLED
是鼠标搜寻”Camera”“视角”独立于交通工具旋转.默认设置,客户鼠标搜寻”Camera”“视角”会绕交通工具旋转,却是在旗帜设定”Camera”“视角”方向独立于交通工具的旋转时.
当用函数VEHICLE_FLAG_MOUSELOOK_STEER (or VEHICLE_FLAG_MOUSELOOK_BANK)时候,函数VEHICLE_ANGULAR_MOTOR_DIRECTION的参数含义有所改变.不再代表角速度,而是测定的角速度,通过客户”Camera”“视角”方向和交通工具前进轴之间的偏转决定,这样来计算最后角速度.假设设定角发动机为<0>,然后移动”Camera”“视角”视野到PI/4 弧度到交通工具前进轴的左面,然后下降PI/8到地面.这个测定的角速度会是<0> 弧度/秒,最后的速度是<0>.这个交通工具转左,却不会鼻子朝下冲到地上.因此,通过设定函数的一个部件为0,可以消除发动机偏航或者堕落的效应,甚至可以更好的设定.
函数VEHICLE_ANGULAR_MOTOR_TIMESCALE 在用到鼠标控制的时候,仍然有效.可以量衡角发动机的全局反馈.也可以在用鼠标控制的时候,不考虑这个函数VEHICLE_ANGULAR_MOTOR_TIMESCALE
11.10. The Vertical Attractor
一些交通工具类,比如船,会永远保持”上—边上”的状态.这可以通过”Vertical Attractor”行为来实现,这个行为可以激发交通工具的本地Z轴沿着Secondlife的Z轴.可以通过设定函数VEHICLE_VERTICAL_ATTRACTION_TIMESCALE来利用这个特点,控制激发频率范围,设定函数VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY来控制其衰减.系数0.0会造成激发绕其平衡点颤动,而系数1.0则让激发达到其平衡点,没有任何指数衰减.
lSetVehicleVectorParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 4.0);
llSetVehicleVectorParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.5);

设定时标超过30秒,Vertical Attractor行为则失效.
主要默认设置中,”Vertical Attractor”可以防止交通工具俯冲或者攀升.因此,如果要设计一个飞机,必须把”吸引”从其定轴释放出来.这可以通过设定函数VEHICLE_FLAG_LIMIT_ROLL_ONLY的位来实现:
llSetVehicleFlags(VEHICLE_FLAG_LIMIT_ROLL_ONLY);

11.11. Banking倾斜
一些Vertical Attractor行为的功能可以必须激发,这样倾斜行为才有效.倾斜行为工作方式:绕交通工具滚动轴的旋转会产生绕其偏航轴(Y轴)的角速度,是车转弯.偏航效应副值和函数VEHICLE_BANKING_EFFICIENCY成比例,滚动旋转的角度,有时交通工具绕其本来轴运动的速度等.
函数VEHICLE_BANKING_EFFICIENCY的值在-1到+1之间变动.在为正的时候,任何绕其滚动轴的正方向旋转(右手定则)都会产生一个负的力矩绕其偏航轴, 使其向右转—这就是车倾斜转弯,飞机和摩托车都是如此.消除倾斜系数可以让车倾斜到转弯之外(物理上不可实现,但是可以实现非常有趣的交通工具,为什么不呢?)
函数VEHICLE_BANKING_MIX是虚假的(物理上不存在)参数,这在倾斜车中有用,可以得到物理定律中不允许的一些效果.比如,考虑一辆真的摩托车,它必须在倾斜中,边前进边转弯. 但是视频游戏中的摩托车可以直接转弯,而不需要转弯同时前进,这样在之后键盘或者游戏把手控制的情况下,就更轻易的控制车了.函数VEHICLE_BANKING_MIX允许非现实的和现实的倾斜, 这通过激活一个倾斜中的滑行器实现. 系数可以是全静止static (0.0)到全变化 (1.0). 在静止态,倾斜只和滚动轴的滚动有关,而在全变化态,倾斜还和交通工具绕其滚动轴的速度有关.得到最后的”mixer”值,需要不断实验验证.
现在通过函数VEHICLE_BANKING_TIMESCALE.实现倾斜行为,来抵抗绕Z轴预存在的角速度.如果想交通工具快速倾斜,则给其一个大约1秒的时标,如果时标几秒的话,交通工具行动将非常迟缓
11.12. Friction Timescales 摩擦时标
VEHICLE_LINEAR_FRICTION_TIMESCALE 是矢量参数,定义交通工具沿着本地3个轴方向(vehicle's reference frame)完全停止的时标.沿着每个轴的时标是彼此独立的.比如,一个滑行的地面车在其X轴和Z轴比较少摩擦, 而在Y轴则摩擦非常大:
llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <1000>);

时标越长,对应的摩擦越小,因此要得到很小的线摩擦越,需要设定比较大的时标值.
在标量下,设定线摩擦,可以使所有的时标都是相同值.下面的两行代码效果都一样,都可以使摩擦减小到忽略不计.
// set all linear friction timescales to 1000
llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <1000>);

// same as above, but fewer characters
llSetVehicleFloatParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, 1000);
函数VEHICLE_ANGULAR_FRICTION_TIMESCALE也是一个矢量参数,定义交通工具在三个轴负方向完全停止的时标,设定方式和线摩擦一样.
11.13. BuoyancyBuoyancy漂浮
交通工具有内置Buoyancy漂浮特性,且和调用函数llSetBuoyancy相互独立.不要将两种Buoyancy漂浮混合.为了设定交通工具的Buoyancy漂浮,设定函数VEHICLE_BUOYANCY的参数在-1.0 (超重) 到 1.0之间 (完全失重).
Buoyancy漂浮行为独立于盘旋,但是在需要盘旋行为有效而不会使函数VEHICLE_HOVER_HEIGHT产生很大偏置的时候,需要把函数VEHICLE_BUOYANCY设置为1.0(失重态)
不要把Buoyancy漂浮行为和指令llSetBuoyancy调用混合,这会使对象Buoyancy漂浮到空中.
11.14. Hover盘旋
盘旋行为通过VEHICLE_HOVER_TIMESCALE来激活,不超过300秒;时标值越大,盘旋能力越小.许多交通工具都在比较短的时标,比如几秒或者更短的时标设定下,工作最好.时标越短,交通工具越方便盘旋得更高. 主要,函数VEHICLE_LINEAR_FRICTION_TIMESCALE的值可能影响盘旋的速度.
盘旋和Buoyancy漂浮是彼此独立的,但是需要把函数VEHICLE_BUOYANCY设置为1.0(失重态),否则交通工具直到VEHICLE_HOVER_HEIGHT的值大到足够抵抗重力加速度时候才会起飞,并且交通工具永远达不到预定的高度.

VEHICLE_HOVER_EFFICIENCY可以当成在between bouncy (0.0) and smoothed (1.0)之间的一个滑行器.在bouncy范围内,交通工具会比预定目标低一些盘旋.而VEHICLE_HOVER_TIMESCALE的值会在bounce阶段振东.(真正的时间会比时标更长一些.)
为了更好的性能,除非secondlife的物理引擎更好,交通工具只能在梯田和水上盘旋,因此他们不能在原始世界的对象上面盘旋,比如桥梁,房屋. 默认状态下,盘旋行为会Buoyancy漂浮在梯田和水上,通过以下旗帜的设定可以改变:
可以通过设定VEHICLE_HOVER_WATER_ONLY旗帜造一艘船,或者通过VEHICLE_HOVER_TERRAIN_ONLY旗帜设定来驾驶一辆盘旋坦克. 最后, 通过设定旗帜VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT得到一艘核艇或者一个气球. 主要旗帜间是彼此独立的.设定两个矛盾的旗帜会是定义行为失效.通过调用函数llSetVehicleFlags()来定义这些旗帜.
旗帜VEHICLE_HOVER_HEIGHT决定交通工具盘旋在梯田或者水面的高度,或者全局高度,最大值为100米. 主要盘旋时候,交通工具的中心是其”质心”,这对于没有经验的人,不是很明显;而且这个”质心”还会随交通工具的负载而改变.
________________________________________
11.15. Reference Frame 参考坐标
交通工具通过X轴(当前方向),Y轴(左)和Z轴(上)来描述其移动方向及其尽头.默认状态下, 这些轴和对象的原始部落的本地轴相同,但是这意味着交通工具的原始部落,必须和预先设定的交通工具的本地轴,左轴及上部轴保持一致.但是,如果交通工具的对象和一些原始部落都预先设定在非常不同的方向上,那么交通工具整体该朝哪个方向移动? 这时候,可以通过设定函数VEHICLE_REFERENCE_FRAME的参数来任意改变交通工具的轴的方向.
比如,假设要在一个圆柱体内构架一个火箭,一个圆锥做鼻子,一些突出厢做鳍,然后通过圆柱体把他们连接起来,作为一个原始部落.理想状态下,火箭会先移动鳍鼻子,但是,圆柱体的等位轴是其本地Z轴,而默认的交通工具的当前轴则是本地X轴,会指向圆柱体弯曲表面,圆柱会在角偏下偏转.下面这个指令会使交通工具的轴旋转,以使本地Z轴成为当年轴,本地负X轴成为向上的轴:
// rotate the vehicle frame -PI/2 about the local y-axis (left-axis)
rotation rot = llEuler2Rot(0, PI/2, 0);
llSetVehicleRotationParam(VEHICLE_REFERENCE_FRAME, rot);
另一个例子是参考坐标参数可以用来考虑飞行器,在飞行中想用VTOL(垂直起飞和降落),用Vertical Attractor器来实现稳定.在飞行中,飞行器背轴应朝上,在降落时候,它的鼻子轴应朝上. 为了降落交通工具,在vertical attractor有效时,绕左边轴,旋转存在的VEHICLE_REFERENCE_FRAME坐标+PI/2弧度,然后交通工具会掷下,其鼻子指向天空. 交通工具可以在摩擦阻力下,降落到降落板上,或者以衰减的盘旋方式降落.
________________________________________
Appendix A. Linden Library Functions
Complete listing of the Linden Library function calls available in lsl.
附录A: Linden函数库

作者:文清项目找投资与合作 发贴, 来自【海归网】 http://www.haiguinet.com









相关主题
[原创[分享][深夜无眠Secondlife对象编程语言LSL汉化] 第... 创业论坛 2007-1-21 周日, 09:23
[原创[分享][深夜无眠Secondlife对象编程语言LSL汉化] 说明 创业论坛 2007-1-21 周日, 09:45
[原创[分享][深夜无眠Secondlife对象编程语言LSL汉化] 目... 创业论坛 2007-1-21 周日, 09:35
[原创[分享][深夜无眠Secondlife对象编程语言LSL汉化] 第三... 创业论坛 2007-1-21 周日, 09:33
[原创[分享][深夜无眠Secondlife对象编程语言LSL汉化] 第... 创业论坛 2007-1-21 周日, 09:32
[原创[分享][深夜无眠Secondlife对象编程语言LSL汉化] 第... 创业论坛 2007-1-21 周日, 09:31
[老中原创贴图] 昨夜 [六年前路过KFC英语角上厕所的女人] 海归酒吧 2009-10-09 周五, 15:13
谁用过Fortran?著名编程语言Fortran创始人巴库斯辞世 海归茶馆 2007-3-20 周二, 18:14

返回顶端
阅读会员资料 文清离线  发送站内短信
  • [原创[分享][深夜无眠Secondlife对象编程语言LSL汉化] 第十一章中文 -- 文清 - (12270 Byte) 2007-1-21 周日, 09:26 (1268 reads)
显示文章:     
回复主题   printer-friendly view    海归论坛首页 -> 海归商务 -> 项目找投资与合作           焦点讨论 | 精华区 | 嘉宾沙龙 | 白领丽人沙龙 所有的时间均为 北京时间


 
论坛转跳:   
不能在本论坛发表新主题, 不能回复主题, 不能编辑自己的文章, 不能删除自己的文章, 不能发表投票, 您 不可以 发表活动帖子在本论坛, 不能添加附件可以下载文件, 
   热门标签 更多...
   论坛精华荟萃 更多...
   博客热门文章 更多...


海归网二次开发,based on phpbb
Copyright © 2005-2024 Haiguinet.com. All rights reserved.