`
web3d
  • 浏览: 86371 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

理解Virtools脚本语言(VSL)

 
阅读更多
理解VSL

“Global”VSL 脚本与“Run” VSL 脚本

VSL脚本可以是Global VSL或Run VSL两种类型之一。

Global VSL脚本定义可被所有其它VSL脚本调用的函数。Global VSL脚本不能被运行,仅供其它VSL脚本(包括Global VSL 与 Run VSL)调用。

Run VSL脚本依附于图形化脚本编辑器中的Run VSL BB- 一个 Run VSL 脚本对应一个Run VSL BB,该Run VSL BB的第一个pIn即包含着被该BB执行的VSL代码。Run VSL脚本可以在创作模式(以在VSL脚本管理器内部执行的方式)下运行,也可在当该BB在运行时被激活并像其它BB一样被处理。Run VSL脚本可以使用bc(行为背景或译作行为环境,behavior context) 全局变量。



全局变量 bc (行为环境,behavior context) 与 ac (动作环境,action context)

bc是一种仅能在Run VSL脚本中使用的全局变量。ac是一种仅能在动作脚本中使用的全局变量。

两者都提供了一些非常有用的方法:

创建对象

在控制台或3D视图中写入文本

管理属性



与变量管理器进行通信

提取脚本轮廓

等等

bc则有一些特殊的运行时方法,如:

管理消息



启动场景

等等

ac主要关注选择(selection)与鼠标位置。

译注:关于行为(behavior)与行动(action,本文中一般译作动作),请参看:http://www.xschina.org/show.php?id=5987



脚本间的依赖关系

请注意:任何调用了Global VSL脚本中的函数的脚本(Global VSL 或 Run VSL)都依赖于该Global VSL脚本。如果你修改了某个Global VSL脚本,在VSL能解析那些调用了该Global VSL脚本之前,不仅该脚本本身要重新编译,而且那个Global VSL脚本也需重新编译。当你对VSL脚本作出变更时,你会在VSL管理器的VSL脚本视图区“已编译”列看到该变更要求重新编译其它VSL脚本。



变量类型

除了以下列出的基类型,你可以使用VSL <- SDK Binding Tables - Classes and Methods中列出的类。也可以使用VSL <- SDK Binding Tables - Enumerations中列出的枚举参数类型。



基类型

bool: 布尔值。真 (TRUE) 或假 (FALSE)。char: 字符值。char是带符号的单字节值,取值范围-128至127(包括127)。int: 整数值。int是带符号的4字节值,取值范围-2,147,483,648 至 2,147,483,647(包括2,147,483,647)。float: 浮点值。float是带符号的4字节值。str: 字符串。str是字符构成的连续数组,以空字符0或'/0'终止。注意:如果你想进行字符串操作,你就应该使用Virtools SDK及VSL中定义的String类了。

就像上面提到的,VSL <- SDK Binding Tables列出了所有其它可用变量类型。你在VSL <- SDK Binding Tables中未找到的类型就表示该类型的变量不被支持。

为了避免定义Null对象,强烈建议使用调试检测(Debug Check,可在变量管理器中激活或禁用)。运行使用了Null对象变量的脚本会导致VSL管理器失效,也可能导致Virtools崩溃。再就是在进行软件开发时,强烈建议时常保存项目各个阶段的版本。



编译

所有的VSL脚本在运行前必须进行编译。在下列情形下,VSL管理器会自动尝试编译那些未编译的VSL脚本:

当加载一个Virtools文件(CMO, VMO, NMO 或 NMS) 时

当某个Run VSL BB被激活时

注意:VSL管理器在编译Run VSL脚本前会尝试编译所有需要的(链接的)Global VSL脚本。我们强烈建议在运行你的VSL脚本前对它们先进性编译,以检测错误并帮助你确保VSL脚本按你的意图执行。

你可以选择编译VSL脚本管理器中的所有脚本或仅仅某些特定的脚本。当你在编译VSL脚本时,你必需决定是将它编译为Debug(调试)版本还是Release(发行)版本。



Debug(调试)与Release(发行)

以Debug方式编译的VSL脚本可以使用VSL脚本管理器中的调试工具进行调试。Learning VSL through Examples系列中给出了使用这些工具的实例。

以Release方式编译的VSL脚本则不能进行调试。在运行时,Release VSL脚本执行速度会比Debug VSL脚本快很多倍,尽管它们是由JIT编译器编译。这种JIT编译器能创建高度优化的类汇编程序代码。

注意:1.有可能会出现一些特定的脚本为Debug而其它则为Release的情况 - 除非是脚本共享某个Global VSL脚本,如GlobalVSL 脚本可以是debug也可以是release状态,但不可能同时为两种状态。2. 更改某个VSL脚本的编译模式(如从Debug变成Release),会导致相链接的Global脚本重新被编译。3. 当在编译某个脚本 (无论 Global VSL 还是 Run VSL),VSL管理器先会尝试编译任何未编译或不同编译模式(如releale/debug)的global脚本。如果编译失败,错误消息会出现在VSL脚本管理器的错误段与事件日志中。4. 在编辑某个global脚本之后,那个脚本会变成"uncompiled(未编译)"状态。其它任何使用了该脚本任意部分的脚本也都处于“未编译”状态。5. 高度建议:选择变量管理器中的“Debug Check Variable”,以确保所有对象被测试,并确保这些对象在被使用前为非空(not NULL)。



运行VSL脚本

在创作模式或播放器模式下都可运行VSL脚本。

创作模式VSL脚本管理器中,选中Run VSL脚本,并点击“运行脚本”或按F5键。注意:在创作模式运行某个脚本仅会执行VSL代码;该BB本身并未被激活。这意味着pIn被用到了,pOut也会被进行相关计算,但bIn和bOut不在考虑之列。

播放器模式(运行时)BB必需被从其它BB或Start传来的链接激活。



保存/导入

你可以通过VSL脚本管理器界面中的“保存”与“加载”按钮来保存和加载Global VSL 与 Run VSL 脚本。VSL脚本以“.VSC”扩展名存为文本文件。注意:只能将VSL脚本载入一个现有VSL脚本中。在加载前,要确保该脚本中是空的;否则,你导入的 脚本会替换掉原有内容。还要注意你在保持或导入的所有内容是来自代码视图中源代码-而与connectors(bIns, bOuts, pIns, pOuts)相关的信息是未被保存的。

当然,你可以保存含有VSL脚本的Virtools文件(CMO/VMO/NMO/NMS)。若是这样的话,要确保所有依赖的脚本在载入被保存的文件时可用。



调试

VSL脚本管理器中有很多调试工具来帮助你调试脚本。要使用调试工具,你必须在调式模式下。注意:你不能再VSL中调试SDK元素。



限制

VSL可以作为SDK的辅助,而不是替代。在某些场合,SDK更合适,而且有些特定任务是VSL无法完成的:- VSL中没有模板(templates)- VSL中没有指针(pointers)- VSL中没有动态分配(如像New运算符)- VSL不能从磁盘读写- VSL中不能进行类创建- VSL没有double类型- VSL脚本限制长度为 65,535 字符

VSL <- SDK Binding Tables页面列出了VSL中所有可用的功能,以及其对应的SDK元素。表中未列出的SDK元素,即表示该元素在VSL中无法使用。

注意:一些如管理器的创建、文件导入器、新参数类型等功能,仅能在Virtools SDK中使用。查看Schematic v. VSL v. SDK - 使用哪一种? 在VSL介绍页面浏览更多信息。







分享到:
评论

相关推荐

    virtools我的最爱

    它提供了多种方式进行交互式体验的创建,包括VSL(Virtools脚本语言)、脚本流程图以及SDK(软件开发工具包)。 VSL,全称为Virtools Script Language,是一种强大的脚本语言,允许开发者深入到Virtools SDK的底层...

    Virtools的VSL和SDK编程编码规则

    Virtools 是一款强大的交互式3D应用开发工具,它的VSL(Virtools Script Language)是内置的脚本语言,而SDK(Software Development Kit)则提供了更底层的编程接口。为了确保代码的质量、可读性和可维护性,遵循...

    数学建模拟合与插值.ppt

    数学建模拟合与插值.ppt

    [net毕业设计]ASP.NET教育报表管理系统-权限管理模块(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    mysql相关资源.txt

    mysql相关资源.txt

    利用HTML+CSS+JS的国漫分享网站(响应式)

    此项目为一个HTML+CSS+JS的国漫分享网站,用户可以在此网站中观看自己喜欢的国漫。此网站共有4个页面,分别为首页,最新动态,热门推荐,分类。页面动漫图片齐全,内容可更改。可用于期末课程设计或个人课程设计。

    Python爬虫爬取漫画

    Python爬虫爬取漫画

    C++语言编程用模拟退火算法解决旅行商问题

    模拟退火算法应用。C++语言编程用模拟退火算法解决旅行商问题。该资源包含模拟退火算法C++语言的源代码。模拟退火算法是一种基于概率的全局优化算法,最初来自于物理学中的退火过程。它通过模拟金属冷却时原子排列逐渐趋于最低能量状态的过程来寻找问题的最优解。模拟退火算法常用于解决非线性、组合优化问题,特别适合于大规模、复杂的搜索空间。

    传感器试题及答案.doc

    传感器试题及答案.doc

    [net毕业设计]ASP.NET网上书店(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    MongoDB数据表基本操作中文最新版本

    本文档主要讲述的是MongoDB数据表基本操作;希望对大家会有帮助;感兴趣的朋友可以过来看看

    1-全国各省废气、废水排放二氧化硫、氮氧化物、烟尘、颗粒物排放量统计数据2011-2021年-社科数据.zip

    本数据集提供了2011至2021年间全国各省废气和废水中主要污染物的排放量统计数据。数据涵盖了二氧化硫、氮氧化物、烟尘和颗粒物等关键污染物的排放量,为研究中国环境状况和污染物排放趋势提供了宝贵信息。数据显示,2011-2021年间,各省的二氧化硫排放量从数十万吨到数百万吨不等,其中广东、广西、海南等省份的排放量较高。氮氧化物排放量同样显示出地域差异,北京、天津等北方城市的排放量相对较低,而一些工业大省如河北、山西的排放量较高。颗粒物排放量统计显示,工业源和生活源是主要的排放源,其中工业源排放量占比较大。这些数据不仅对环保政策制定者具有参考价值,也为学术研究提供了实证基础。

    脉冲宽度测量单片机课程设计.doc

    脉冲宽度测量单片机课程设计.doc

    [net毕业设计]ASP.NET在线毕业论文提交系统的设计与实现(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    求职与招聘(源代码+论文+说明文档).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    [net毕业设计]ASP.NET视频点播系统的设计与实现(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    全国矢量地图数据【国道+高速】-ArcGis Shape 格式数据集

    全国矢量地图数据【国道+高速公路】ArcGIS Shape格式数据集是一种专门用于地理信息系统(GIS)的矢量数据集,包含中国范围内国道和高速公路的详细路网信息。该数据集广泛应用于交通规划、导航、物流分析和灾害应急等领域,具有高精度和易用性。 数据集特点: 1. 数据内容: 国道:包括以“G”开头的国家级公路,如G1京哈高速、G107国道等。 高速公路:包括全国范围内的所有高速公路网,覆盖主要经济区、城市和边境口岸。 属性数据: 道路编号(国道或高速公路编号)。 道路名称。 道路等级(如一级、二级、快速路等)。 起点和终点坐标。 道路长度(单位:公里)。 相关属性(如路段建成年份、设计速度、车道数等)。 2. 数据格式: **Shapefile(.shp)**格式,支持主流GIS软件(如ArcGIS、QGIS)及数据处理工具(如Python、Matlab)。 3. 投影坐标系: 一般采用WGS84地理坐标系,或可根据需求转换为**GCJ-02(火星坐标系)**以配合国内导航应用。

    4.html

    4

    ASP网上作业提交系统(源代码+论文)(源代码+论文+说明文档).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

Global site tag (gtag.js) - Google Analytics