下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 virtools 基础教程

virtools 基础教程.doc

virtools 基础教程

huagang
2011-11-30 0人阅读 举报 0 0 暂无简介

简介:本文档为《virtools 基础教程doc》,可适用于IT/计算机领域

Virtools入门教程Twist扭曲  来源VRART|作者爱迪斯通|发表时间::|查看评论 TwistInstruction:本范例中主要示范Ball被扭曲成螺旋状且可以控制其扭曲轴向、扭曲角度与扭曲型态等。BuildingBlocks:(a)BezierProgression-LogicsLoopsBezierProgression(b)Twist-MeshModificationsDeformationTwist制作构想:利用BuildingBlocks-Twist配合BezierProgression即可使Ball达到扭曲的效果且可以控制其扭曲轴向、扭曲角度与扭曲型态等。制作步骤:(a)BallBezierProgression:设定动作持续执行的时间Duration-秒设定A、B值-表示Bezierinterpolated的最大与最小值(分别为和)调整物体变形曲线ProgressionCurve(如图标)。利用由pOut输出的变量值Delta(内插值Value的减少值)作为BuildingBlocks-Twist的变量角度值Angle。注:ProgressionCurve曲线斜率愈大表示变化速度愈快反之斜率愈小表示变化速度愈慢斜率变为负值表示物体向原始模型变化斜率不变表示变化速率相等(如图标)。Twist:由pIn输入扭曲角度Angle设定Bias值(介于~)值为时Ball的扭曲均分布在中央值为时Ball的扭曲均分布在上下两端值为时Ball的扭曲呈现均匀的分布。设定扭曲的轴向Axis-Y轴(,,)不勾选ResetMesh表示Twist执行后物体不会回复至初始的状况。Virtools入门教程Planes面位  来源VRART|作者爱迪斯通|发表时间::|查看评论 PlanesInstruction:本范例可以和「InfinitePlane」作一个比较。在此示范Particle因重力从Frame-Emitter落下至Frame-Reflector且产生反弹作用而弹到Reflector再反弹跳出且呈现连续的效果。BuildingBlocks:(a)SetAsActiveCamera-CamerasMontageSetAsActiveCamera(b)PointParticleSystem-ParticlesPointParticleSystem制作构想:Particle从Frame-Emitter发射后可以在Frame-Reflector添加属性ParticleGravity使Particle向Y方向前进且在Frame-Reflector、Reflector添加属性ParticlePlaneDeflector使Particle接触到Frame-Reflector、Reflector会呈现反弹的效果。制作步骤:(a)CameraSetAsActiveCamera-设定现在所使用的Camera。(b)ParticlePointParticleSystem:在Frame-Reflector增加属性ParticleGravityValue调为使Particle向Y方向前进再增加属性ParticlePlaneDeflectorValue(ResponseFrictionDensity)调为-()使Particle接触到Reflector会产生反弹的效果(如图标)。同理在Frame-Reflector增加属性ParticlePlaneDeflector(如图标)。在此就BuildingBlocks-PointParticleSystem更改之处加以说明(如图标)。EmissionDelay-Ms→Ms表示Particle呈连续发射没有中断时间。YawVariance-度→度表示减少XZ平面上Particle的变化量。PitchVariance-度→度表示减少YZ平面上Particle的变化量。SpeedVariance-→表示Particle呈等速发射没有速度的变化。Lifespan-Sec→Sec表示延长每次Particle发射的时间。EndingColorandAlpha-(,,,,)→(,,,,)更改Particle最终的颜色。Texture-Radial选择组成Particle的Texture。Virtools入门教程BoxDeflector反弹  来源VRART|作者爱迪斯通|发表时间::|查看评论 BoxDeflectorInstruction:当Particle碰撞Frame-Deflector时会受到阻挡且呈现散开的现象。BuildingBlocks:(a)ParticleSystem-ParticlesParticleSystem(b)SetAsActiveCamera-CamerasMontageSetAsActiveCamera制作构想:Particle从Frame-Emitter发射后可以在Frame-Deflector添加属性ParticleBoxDeflector使Particle接触到Frame-Deflector会受到阻挡且呈现散开的效果。制作步骤:(a)ParticleParticleSystems:在Frame-Deflector增加属性ParticleBoxDeflectorValue(ResponseFrictionDensity)调为-()使Particle接触到Reflector会受到阻挡且呈现散开的效果(如图标)。在此就BuildingBlocks-ParticleSystems更改之处加以说明(如图标)。EmissionDelay-Ms→Ms表示Particle呈连续发射没有中断时间。YawVariance-度→度表示减少XZ平面上Particle的变化量。PitchVariance-度→度表示减少YZ平面上Particle的变化量。Speed-→表示增加Particle发射的速度。Texture-Flarec选择组成Particle的Texture。(b)CameraVirtools介绍  来源VRART|作者|发表时间::|查看评论 高互动D应用的研发平台 Virtools : 国际D技术的主流Virtools  Life Platform是目前全球唯一的解决方案作者可以将作品发布到PC个人计算机、游戏控制台、局域网及互联网上分享D体验给更多的普通人群。 这一切展示了Dassault Systèmes达索系统的庄重承诺为所有的用户团队提供最强有力的D 服务。Virtools 开发的架构体系支持多种D文件格式。 Virtools提供的D内容转换插件支援主流的DCC(Digital Content Creation数字内容创建)软件格式(ds Max, Maya, XSI, Lightwave, Collada) ,Virtools还可以直接导入和输出D XML(达索系统标准的工业文件格式), 从而使realtime D 作品的技术制作变得更加方便和有效率 现在基于最新的PCS (ProductContextScenario)平台, Virtools  允许用户去设计、分享和体验高互动内容的D产品。企业内部互联网方案:引进了用于企业互联网配置的两种新产品:D XE Player 和D Office Player。这两种新产品是建立在PCS基础上的因而能够使得所有三维的专业和非专业人士都能体验到产品和环境这就为涉及企业创新程序的所有人员提供了分享三维体验的工具为他们提供了完全掌握产品特性的最直观的独特方式。有了PCSVirtools 平台就能够进行虚拟体验的创作比如驾驶、购物、产品使用、维修和市场销售测试等等。Virtools  同时延伸了制作D产品的体验范围: 大众化的PC比如操作系统为Microsoft Windows和Apple MacOS 电脑、数字娱乐常见的Microsoft Xbox 游戏机和Sony PSP 游戏控制器局域网能够支持D Office 和D XE players互联网能够支持 D Life Player的浏览器利用VR Library还可以在将作品运行在更加震撼的沉浸式的VR系统中。目标环境的多样性体现了可能的配置的多样性这就为不同的用户提供了创建和体验三维的强大解决方案。在我们的指尖下完成最尖端技术Virtools独特的开发系统考虑到D objects作为单独的组件并可以使与D objects相关联的数据同样地分离出来为作单独的组件进行制作任务的分配和重复使用。 Virtools开放的架构极其的灵活允许开发者使用模块的脚本,方便有效地行对象的交互设计和管理。普通的开发者可以用鼠标拖放脚本的方式通过人机交互图形化用户界面同样可以制作目前市场上顶级游戏中高品质图形效果和互动内容的作品。作为高端的开发者利用SDK (Software Development Kit,软件开发工具包)和VSL(Virtools Scripting LanguageVirtools专用脚本语言) 通过相应的API接口可以创建自定义的交互行为脚本和应用程序。通过Virtools的可视化流程图式脚本制作界面在不使用第三方技术的情况下用户同样可以进行高级互动模块的熟练使用比如Physics(物理学)、AI(Artificial Intelligence人工智能)和Multiusers(多用户)制作和执行环境。Virtools 平台中集成的强大Render engine 渲染引擎可以让开发者制作更多令人震撼的视觉特效使用更多高级的面画渲染技术 (Shaders 支持Shader , HLSL 和 CgFX 图形加速使用:DX c 和 OpenGL )减少开发周期和制作成本获取更高的投资回报 在制作任务中通过对对象的数据和脚本的拆分开发者使用Virtools 可以更经济地、同时开发各种各样的应用模块有效缩短了产品在市场上面世的时间。开发时间的缩短一部分要归功于Virtools脚本库中超过以上行为脚本模块的组合使用及重复利用Virtools多重的工作方式(人机交互界面, VSL, SDK) 确保非技术性的设计人员和高端的程序员 聚集在Virtools工作环境中群策群力为一个共同的制作任务进行工作协作。 应用程序正变得越来越复杂但是我们的脚本依然能很便捷地进行管理。利用Virtools 技术早先一年开发时间才能完成的工作现在在几个月内就可以完成通过Virtools 的使用商业公司现在可以组织一个合理的设计人员和程序研发人员配备的制作团队。利用Virtools 技术从制作的方案、原型到最后交付使用的成品通过对项目制作流程的优化越来越多的事实证明我们的客户大大节省了制作成本和周期利用Virtools , 商业公司开发者、游戏工作室、网络内容提供商和系统集成商还可以减少之前利用其它技术或者引擎制作D高互动应用开发的风险。 Virtools独特的开发过程可以让制作团队协同工作。Virtools的building blocks脚本模块化和可视化流程图式脚本设计及重复利用特性确保了开发团队在项目制作流程中的优化使未来的项目制作更加科学与实用。Virtools  Virtools  包含有五个关键组件:  GUI(Graphical User Interface人机交互图形化用户界面)以可视化的编辑方式流程图的思维模式进行对象和脚本设计工作有效的减短了作品的制作周期 Behavior Engine脚本引擎用来运行互动应用程序 Render Engine  渲染引擎以实时渲染的方式来显示图形图像 Virtools Scripting Language脚本语言以代码的方式进行一部分的编程开发优化脚本提高效能  SDK 用来创建自定义的脚本和应用程序以及对Virtools本身的功能进行扩充User Interface用户界面:Virtools  开发平台的GUI(人机交互图形化用户界面)包含下列内容: D Layout(实时D编辑器)用来显示RealtimeD实时渲染环境的内容  图形工具条用来进行作品中D objects(D对象)、lights(灯光)、cameras(摄像机)和curves(曲线)的导航、创建、编辑、选择和操作  新建和编辑lights(灯光)、cameras(摄像机)、materials(材质)、 textures(纹理贴图)、grids (栅格)和paths(路径)  在一个虚拟环境中进行D entities (D实体)的Translation(位移), rotation(旋转), scale (缩放)操作及作品导航  behaviors交互脚本以鼠标拖放形式赋予D和D对象  behaviors交互脚本完成一定的功能后可以打包或者合并的方式保存起来供我们重复使用  图解式的building blocks脚本编辑模式有助于我们便捷有效地创建互动内容作品  Script Debugger(脚本调试器)可以用来对应用程序进行优化  Entity Setup Tools(实体设置工具) 用来对任一对象及其关联脚本的参数编辑  Attribute Manager(属性管理器)用来快速地设置和修改多个对象属性数值  Action Manager(操作管理器)用来编写常用的一些函数,以快捷键的方式来执行一些预定义的操作或者创建任务  Hierarchy Manager(层级关系管理器) 以树形结构的方式来显示所有对象之间的父子关系 VSL (Virtools Scripting Language脚本语言):Virtools Scripting Language是一个强大脚本语言可以在Virtools  的Schematic editor图形脚本编辑器中提供脚本关键字智能颜色显示(intelligent coloring system)、自动上下文区分提示(contextsensitive completion)及函数参数显示(function arguments display)功能可以进行相应的code代码编写与运行可以提高脚本的执行效率完成部分SDK的功能。 除了用于脚本互动部分的撰写与运行VSL还可以用于创作模式下的操作功能的扩展提升Virtools本身开发环境的制作效能 VSL 提供完整的Debug调试功能支持脚本运行的breakpoint中断点, 变量和数值编辑的监测, 及步进脚本的Debug调试(支持调试的step into out模式)Behavior Engine脚本引擎:Behavior engine脚本引擎可以运行内置或者自定义的behaviors脚本 Virtools 基本的互动脚本涉及以下的类别: Cameras(摄像机)、Characters(角色)、Collisions(碰撞)、Controllers(控制器)、 Grids(栅格)、 Interface(界面)、 Lights(灯光)、 Logics(逻辑)、Materials Textures(材质和纹理)、 Mesh modifications(模型结构的修改)、 Narratives(作品故事相关)、 Optimizations(优化)、 Particles(粒子)、Sounds(声音)、 Shaders(着色器)、Visuals(视觉特效)、 Web(网页)、World Environments(虚拟环境)利用Virtools SDK的Behavior Pack脚本源代码文件包或者第三方脚本我们可以对Behavior Library 脚本库进行功能扩充Render Engine渲染引擎:Render engine渲染引擎用来提供高品质、实时渲染的D图像和角色动作 它包含有如下的功能:  支持国际产业标准: DirectX 和OpenGL  支持可编程Vertex顶点和Pixel像素的Shaders着色技术 (DXc, OpenGL , HLSL, CgFX, Shader Model )  支持D模型对象和动作(通过ds Max, Maya, XSI , Lightwave 和Collada插件导出)  提供与render engine渲染引擎相关的源代码 SDK (Software Development Kit软件开发工具包)Virtools的SDK是一套软件开发工具 (包含有libraries库文件, DLLs文件, header头文件)提供Virtools软件的所有底层函数 开发者可以使用它进行下述的应用程序的工作: 利用Virtools 引擎制作自定义的可执行应用程序  对Virtools 引擎进行功能扩充比如Behaviors互动脚本, 媒体文件的导入插件, Manager管理器, Render Engines画面实时渲染显示插件, Rasterizer图像光栅和其它的功能插件 (指定的Parameter Types参数类型)等等 开放的架构:Virtools 提供了一个开发和灵活的架构可以兼容下列标准的技术文件格式:  D 文件格式: D XML, ds Max, Maya, XSI, Lightwave, Collada  图像文件格式: JPG, PNG, TIFF, TGA, BMP, PCX  声音文件格式: MP, WMA, WAV, MIDI 安装需求:硬件  CPU中央处理器:Pentium III 以上  内存: MB以上  光驱:DVD 普通光驱以上  显示器:支持 * 显示分辨率、 bit 位颜色质量 (高彩色) 以上的显示器 指点设备: 普通鼠标、trackball控制球等等  显卡:  M 以上并支持DirectD兼容 OpenGL 的D图形加速显示卡  声卡: 关于声卡部分不是必须的但我们推荐使用  软件  操作系统: Microsoft Windows (, XP)  硬件加速: Microsoft DirectX ,  或者C ,利用DirectX 技术进行D图形加速显示  OpenGL: 如果以OpenGL的模式进行作品显示时需要一个支持 OpenGL 显卡及相关驱动  浏览器:Microsoft Internet Explorer  以上(主要用于Online Reference帮助文件的阅读)Virtools的应用能协助不熟悉D模型化的使用者轻松快速的透过D互动模拟体验生活乐趣。举例而言运用Virtools的开发技术使用者能体验置身于超级市场、享受仿真的购物经验或可想象自己化身成驾驶员驾车穿梭于城市间、饱览不同城乡的风光景致。   Virtools全系列的DVR完整解决方案能辅助企业创造出如同游戏般高质量的D互动应用内容。Virtools拥有许多生产开发客户广泛应用在工业设计、市场营销、CRM应用、多媒体设计及D游戏开发等多元领域。客户层面包含ProcterGamble(P&G宝侨集团),L′Oréal(法商欧莱雅集团),MicrosoftGameStudio(微软游戏开发),ElectronicArts,PSAPeugeotCitroen(标志雪铁龙),及EADS…等。多物品移动管理  来源VRART|作者|发表时间::|查看评论 RDV  Instruction:Ball、Statue和Box分别依不同的速度向指定的位置前进待最后的物体到达定位后三个物体便依同样的速率一齐自转。BuildingBlocks:(a)SetPosition-DTransformationsBasicSetPosition(b)MoveTo-DTransformationsMovementMoveTo(c)Rendezvous-LogicsSynchroRendezvous(d)Rotate-DTransformationsBasicRotate(e)SetAsActiveCamera-CamerasMontageSetAsActiveCamera(f)TextDisplay-InterfaceTextTextDisplay制作构想:可以利用BuildingBlocks-Rendezvous配合MoveTo使先到达定位的物体等候最后到达的物体再分别执行后续动作。制作步骤:(a)StatueSetPosition:设定Statue的初始位置Position(X,Y,Z)设定参考轴Referential-以World坐标轴为参考。勾选Hierarchy表示BuildingBlocks也同样应用在Child。MoveTo:如图示。设定移动目标点DestinationPoint(X,Y,Z)DestinationReferential-必须以World坐标为参考决定Statue的位置设定行进时间Duration(Minute,Second,Millisecond)ProgressionCurve-Statue的移动方式以及速率的变化。注:ProgressionCurve曲线斜率愈大表示行进速度愈快反之斜率愈小表示行进速度愈慢斜率变为负值表示物体向后倒退(如图示)。Rendezvous:设定相互等待的物体群组RendezVous-RDV使用的物体数NumberofUsers-。Rotate:设定旋转轴AxisofRotation-Y轴(,,)设定旋转角度值AngleofRotation(Turn:圈数、Degree:角度)设定ReferentialoftheAxis-必须以World坐标轴为参考勾选Hierarchy表示BuildingBlocks也同样应用在Child(如图示)。(b)CameraSetAsActiveCamera:设定现在所使用的Camera。(c)BallBall所使用的BuildingBlocks-SetPosition、MoveTo、Rendezvous与Rotate其设定方式与意义皆与Statue相同。TextDisplay:文字说明。(d)BoxBox所使用的BuildingBlocks-SetPosition、MoveTo、Rendezvous与Rotate其设定方式与意义皆与Statue相同。网格变形  来源VRART|作者|发表时间::|查看评论 MeshMorpherInstruction:本范例所要示范的是BuildingBlocks-MeshMorpher的应用如同墙面上人像浮现与隐藏之间的变化。BuildingBlocks:(a)SetAsActiveCamera-CamerasMontageSetAsActiveCamera(b)CameraOrbit-CamerasMovementCameraOrbit(c)TextDisplay-InterfaceTextTextDisplay(d)BezierProgression-LogicsLoopsBezierProgression(e)MeshMorpher-MeshModificationsDeformationMeshMorpher制作构想:利用BuildingBlocks-MeshMorpher配合BezierProgression就可以表现出物体变化的效果且使用BuildingBlocks-CameraOrbit便可使Camera环绕并且观看着物体的变化。制作步骤:(a)CameraSetAsActiveCamera:设定现在所使用的Camera。CameraOrbit:设定观看目标Target-Element且作无穷循环。CameraOrbit默认值为PageUp-镜头拉近PageDown-镜头拉远方向键Up和Down-绕X轴旋转方向键Left和Right-绕Y轴旋转RightShift-速度*。TextDisplay:文字说明。(b)ObjectBezierProgression:设定动作持续执行的时间Duration-秒设定A、B值-表示Bezierinterpolated的最大与最小值调整物体变形曲线ProgressionCurve(如图标)。利用由pOut输出的变量值Value作为BuildingBlocks-MeshMorpher影响值EffectValue的变量。注:ProgressionCurve曲线斜率愈大表示变化速度愈快反之斜率愈小表示变化速度愈慢斜率变为负值表示物体向原始模型变化斜率不变表示变化速率相等(如图标)。MeshMorpher:设定起始模型StartMesh-ObjectStartMesh设定最终模型EndMesh-ObjectFinalMesh由pIn输入影响值EffectValue值为表示物体和起始模型一样值为表示物体和最终模型一样值为表示物体处于起始模型和最终模型的混合型态勾选CalculateVerticesNormals表示会计算点的法向量勾选CalculateFacesNormals表示会计算面的法向量。旋转选择  来源VRART|作者|发表时间::|查看评论 PerSecondInstruction:本范例中的两个Boxes分别由不同的方式控制使其产生转动均可以控制其转动速度、旋转的轴向等。BuildingBlocks:(a)SetAsActiveCamera-CamerasMontageSetAsActiveCamera(b)TextDisplay-InterfaceTextTextDisplay(c)SwitchOnKey-ControllersKeyboardSwitchOnKey(d)Rotate-DTransformationsBasicRotate(e)DeactivateScript-NarrativesScriptManagementDeactivateScript(f)ActivateScript-NarrativesScriptManagementActivateScript(g)PerSecond-LogicsCalculatorPerSecond制作构想:利用BuildingBlocks-DeactivateScript和ActivateScript来选择Box再使用BuildingBlocks-Rotate或是PerSecond配合Rotate使Boxes产生旋转的效果。制作步骤:(a)CameraSetAsActiveCamera:设定现在所使用的Camera。TextDisplay:文字说明。(b)BoxSwitchOnKey:设定控制键分别为、、、。Rotate:设定旋转轴AxisofRotation-分别为X轴(,,)、X轴(,,)、Y轴(,,)、Y轴(,,)设定旋转角度值AngleofRotation(Turn:圈数、Degree:角度)设定ReferentialoftheAxis-设定或Box均可(如图示)勾选Hierarchy表示BuildingBlocks也同样应用在Child。(c)BoxBoxSwitchOnKey:设定控制键分别为Del、。DeactivateScript:当按下控制键Del时中断Script-BoxScript按下控制键时同理。ActivateScript:当按下控制键Del时启动Script-BoxScript勾选True表示Script会执行Reset不勾选表示Script会依照原来的状态例如Deactivate状态按下控制键时同理。(d)BoxSwitchOnKey:设定控制键分别为、、、。TX(pIn)*ElapsedTime=Y(pOut)Rotate:设定旋转轴AxisofRotation-分别为X轴(,,)、X轴(,,)、Y轴(,,)、Y轴(,,)且由pIn输入旋转角度值AngleofRotation(Turn:圈数、Degree:角度)设定ReferentialoftheAxis-设定或Box均可(如图示)勾选Hierarchy表示BuildingBlocks也同样应用在Child。Persecond:设定秒钟所旋转的角度值X(Turn:圈数Degree:角度)乘上一个Frame所花费时间在pOut输出变量Y(旋转角度值)。我顶用VirtoolsSDKVC来写BulidingBlocks的方法  来源VRART|作者|发表时间::|查看评论 使用Virtools的朋友都知道,BuildingBlocks是很重要的在VT中提供了几百个BB供我们来使用使用Virtools的SDK,我们可以开发出自己需要的BulidingBlocks,利用它很容易对我们的Virtools供能进行扩展在这里我写一篇教程,来介绍一下用VirtoolsSDK和VC来写BuildingBlocks的过程和方法  这里要用到一些Win和API编程的方法,不会的赶快恶补一下了,否则看不懂可别怪我在这个实例中,我们要开发一个这样的BuildingBlocks它可以完成以下三个功能::可以把当前系统的时间以不同格式在Virtools中显示:它可以是你的BuildingBlocks对应的主窗口永远处于最上层:通过关闭进程的方法,它可以关闭你想要关闭程序和进程  要先完成准备工作,在SDK中提供给我们了一个开发BuildingBlocks的向导文件VirtoolsBehaviorsAppWizardawx,位于SDKUtils目录下你把它拷贝到你的MicrosoftVisualStudioCommonMSDevTemplate目录下完成以后启动的VC,执行File>New,在Project中可以看到VirtoolsBB新建这一项,选中它在ProjectName中填入你的名称,比如"MyBuildingBlocks",同时要设置好你的项目保存路径如图单击OK进入下一步。勾选"Behavior"和"Manager"这两个选项  说明:开发BulidingBlocks,"Behavior"选项一定要选择的,否则不能继续了由于我们在这个实例中要用到Enum类型变量,也就是枚举类型的变量在Behavior中要用到你自己声明的新类型变量,必须要在CKERRORInitInstance(CKContext*context)接口中先注册,才能使用所以我们要用到ParameterManager,必须勾选"Manager"这一项。按下Next继续。在这个窗口中填入你的BulidingBlocks的名字要注意这个名字不要和你的先前Project名字相同否则编译时会报错。实现的类名称我们不错修改Next继续。  在这个窗口中我们在Behavior栏目中输入你的BB的类别名称“MyBBs”描述中填入你的描述“ShowtimeSetWindowsAlwaysTopExitYourproceeding”为了简化我们Code在BehaviorFlags中我们不作勾选需要的时侯我们自己加上代码来实现。这个实例中我们不用到Behavior的回调函数所以CallBacks也不选择。Next继续填入你的Manager的名字其他的选项不作勾选。Next继续。 在这个窗口设置你的SDK目录和VT程序目录插件名称等。单击Finish完成。执行Build>Rebuildall。即可生成你的BulidingBlocks它已经自动编译。到你你的VirtoolsBuildingBlocks目录中。你启动你的Virtools在BulidingBlocks列表中可以看到MyBBs这一项里边已经有了我们编写的TimeTopExitBB了。在你的项目文件中可以看到一些接口函数。我们先声明一个枚举变量然后注册它。用它来做我们的TimeType下拉列表(个选项)。打开你的MyBBh文件在顶部加入以下Code:typedefenumSHOWTIMETYPENUM{OSTIME=x,小时显示时间OSDATE=x,显示当前日期UNIXTIMEANDDATE=x,完整显示日期时间HOURTIME=x,以小时方式显示}Enumeration这里有四个枚举值。然后用define宏来设置这个变量:#defineGUIDSHOWTIMETYPENUMMyBBGUID在CKERRORInitInstance(CKContext*context)接口中加入注册新类型变量的Code:CKParameterManager*pm=context>GetParameterManager()pm>RegisterNewEnum(GUIDSHOWTIMETYPENUM,"SHOWTIMETYPENUM","OSTIME=x,OSDATE=x,UNIXTIMEANDDATE=x,HOURTIME=x")注册新的变量类型。接口原型请参见SDK。pm>ChangeEnumDeclaration(GUIDSHOWTIMETYPENUM,"OSTIME,OSDATE,UNIXTIMEANDDATE,HOURTIME")设置可以枚举的变量范围找到你的CKERRORCreateTimeTopExitProto(CKBehaviorPrototype**pproto)接口函数:在这里进行InPutOutInputParameter和OutParameter等参数的声明这两行代码保留:proto>DeclareInput("In")proto>DeclareOutput("Out")在他的下边加入我们的LoopIn和LoopOut声明proto>DeclareInput("LoopIn")proto>DeclareOutput("LoopOut")还是在这个接口函数中,我们把proto>DeclareInParameter("InP",CKPGUIDINT)proto>DeclareOutParameter("OutP",CKPGUIDINT)这两行注释掉加入我们的输入参数列表Code,并且初始化它:proto>DeclareInParameter("ShowTimeType",GUIDSHOWTIMETYPENUM,"OSTIME")第一个型参,是一个enum类型的,以下拉List来实现用户的选择proto>DeclareInParameter("windowalwaystop",CKPGUIDBOOL,"FALSE")第二个型参,布尔类型用户勾选则执行windowalwaystopproto>DeclareInParameter("ExitVirtools",CKPGUIDBOOL,"FALSE")第三个型参,布尔类型用户勾选则执行ExitVirtools填加实现BB的输出参数Code:proto>DeclareOutParameter("OutTimeString",CKPGUIDSTRING)输出一个字符串在这个文件的顶部包入头文件,加入这行Code:#include"MyBBh"现在你可以编译的DLL,应该编译通过打开你的VirtoolsDev,把我们刚编写的ShowTopExit,放到你的LevelScript,编辑他的参数列表,应该如图所示 在intTimeTopExit(constCKBehaviorContextBehContext)接口中来实现我们要完成的功能:在这个文件顶部加入Code,来实现包含API和Time头文件#include"windowsh"#include"timeh"加入这三行Code,初始化BB:CKBehavior*beh=BehContextBehavior取得BB的上下文举柄beh>ActivateInput(,FALSE)beh>ActivateOutput()初始化输入输出流状态完成第一个功能:声明我们要用到的表述时间的变量:chartmpbuf,ampm="AM"char*tempstr=structtm*today,*newtimelonglTime刷新当前的时间环境变量:tzset()根据Loop的状态来设置相应的输入输出状态:if(beh>IsInputActive()){beh>ActivateInput(,FALSE)}else{beh>ActivateInput(,FALSE)beh>GetOutputParameterValue(,elapsedTime)}声明我们要用到的枚举值,取得当前用户选择的IDSHOWTIMETYPENUMtypebeh>GetInputParameterValue(,type)根据枚举值,进行判断:switch(type){caseOSTIME:strtime(tmpbuf)breakcaseOSDATE:strdate(tmpbuf)breakcaseUNIXTIMEANDDATE:time(lTime)newtime=localtime(lTime)strcpy(tmpbuf,asctime(newtime))tmpbuf=''tmpbuf=breakcaseHOURTIME:time(lTime)today=localtime(lTime)if(today>tmhour>){strcpy(ampm,"PM")today>tmhour=}if(today>tmhour==)today>tmhour=sprintf(tmpbuf,"ttttss",asctime(today),ampm)break}输出字符串到我们的第一个输出参数中并激活循环:beh>SetOutputParameterValue(,tmpbuf)beh>ActivateOutput(,TRUE)到现在位置,我们的第一个功能已经实现了编译你的Dll,在Virtools中进行测试:注:在编译种可能出错errorC:functionreturnsfunction可将voidRegisterBehaviorDeclarations(XObjectDeclarationArray*reg)中的RegisterBehavior(reg,FillBehaviorTimeTopExitDecl())改为RegisterBehavior(reg,FillBehaviorTimeTopExitDecl)或者将其改为reg>PushBack(FillBehaviorTimeTopExitDecl())便可编译成功

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/29

virtools 基础教程

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利