“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的本质、它是如何工作的。包括以下内容: 什么是Virtools? 元素、类和面向对象设计 作品的组成元素 Virtools进程循环 行为引擎 Virtools脚本语言(VSL) 渲染引擎
本文档分别对VSL和SDK的格式、注释、标识符命名、语句使用、函数、类、程序组织、公共变量等方面做出了要求。规范分为两个级别——规则和建议。规则级的规范要求开发人员必须要遵守,建议级的规范开发人员应尽量遵守...
学习virtools的宝贵资料,virtools脚本语言翻译
通用的Virtools漫游脚本程序,可实现空间中的自动漫游
Virtools开发之底层篇 vsl 虚拟现实
介绍有关Virtools连接SQL数据库使用说明
virtools3.5授权文件virtools3.5授权文件
virtools菜单按钮的制作,实现了不同材质的切换。
virtools 文件 实例文件 源文件virtools 文件 实例文件 源文件virtools 文件 实例文件 源文件
virtools本身没带播放器,介绍使用MFC嵌套Virtools播放器的详解。
Virtools界面简介,可以让你快速熟悉virtools的界面!非常有用的
一个virtools 素材 有兴趣的可以参考下
virtools使用技巧
Virtools中文手册01 Virtools中文手册02 Virtools中文手册03 Virtools中文手册04
安装Virtools5.0时,打开是输入密钥就可以了。
virtools快书入门
virtools/vrp 漂亮实例 欢迎下载
maya 文件转出到virtools 主要是对5.0的 版本 玛雅2011的版本
一些virtools素材,主要是关于一些virtools场景的素材