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

Virtools脚本语言(VSL)教程 - 函数

 
阅读更多
<h3>声明VSL</h3>
<h4>
<a name="TOC-1"></a>
函数定义语法</h4>
<p>函数定义确立了函数的名称、它的返回值类型、它的形参的类型和数量、及函数主题。</p>
<p><em>returnType functionName</em>
( [<em>paramList</em>
] ) { <em>functionBody</em>
}</p>
<p>paramList :<br><em>parameter</em>
, ...</p>
<p>parameter :<br><em>type parameterName</em>
</p>
<p>实例:</p>
<pre>int Square(int i)<br>
{<br>
return i*i;<br>
}<br><h4>
<a name="TOC-2"></a>
函数参数</h4>
<p>参数是函数期望接收到的值。在函数原型中,函数名后面跟着的括号里包含了函数参数与其类型的完整列表。参数声明指定了参数中存储的值的类型、大小及标识符。</p>
<p>在声明参数时,你可以指定缺省值。</p>
<pre>void MakeAction(int actionNumber, bool logInConsole = false)<br>
{<br><span>// Make action according to actionNumber</span>
<br><span>// ...</span>
<br><br>
if (logInConsole)<br>
{<br>
String message("Make Action Num ");<br>
message += actionNumber;<br>
bc.OutputToConsole(message);<br>
}<br>
}<br><br>
void main()<br>
{<br>
MakeAction(0, true);<br>
MakeAction(1, false);<br><br><span>// In this case, second parameter of MakeAction</span>
<br><span>// is equal to default value false</span>
<br>
MakeAction(0); <br>
}<br><p>你也可以声明不带参数的函数。</p>
<pre>float Pi()<br>
{<br>
return 3.14156;<br>
}<br><h4>
<a name="TOC-3"></a>
函数返回值</h4>
<p>函数的返回值类型确立了函数返回值的大小和类型。<br>
  这里是一份所有类型说明符的清单:</p>
</pre></pre></pre>
<ul>
void<br>
char<br>
int<br>
float<br>
VSL enum<br>
VSL struct<br>
C/C++ struct/class
</ul>
<p>
你可以声明不带返回值类型的函数。这种情况下,你得用"void"作类型名。</p>
<pre>void Print(String s, int line)<br>
{<br>
s += line;<br>
bc.OutputToConsole(s);<br>
}<br><h4>
<a name="TOC-4"></a>
函数重载</h4>
<p>VSL允许声明多个同名函数。这些函数叫做被重载的函数。重载函数让程序员能根据参数的类型和数量对某个函数补充不同的语义。</p>
<p>实例:</p>
<pre>int Add(int a, int b) <span>// Add two int</span>
<br>
{<br>
return a + b;<br>
}<br><br>
float Add(float a, float b) <span>// Add two float</span>
<br>
{<br>
return a + b;<br>
}<br><pre>void main()<br>
{<br>
float r1 = add(10.0,5.0); <span>// Call first Add function</span>
<br>
int r2 = add(1,2); <span>// Call second Add function</span>
<br>
}<br><p>在你重载函数时,由VSL编译器选择所匹配的函数。某些情况下,你会处在一种模棱两可的境地,因为编译器不知道选哪个函数。</p>
<pre>void main()<br>
{<br>
float r = add(10.0, 5); <span>// error, ambiguous call</span>
<br>
}<br><p>这个函数的调用就是模棱两可的,因为所有函数都可用:<br>
10.0 可以被计算成整数或5可以被计算成浮点数。</p>
<h3>
<a name="TOC-5"></a>
调用函数</h3>
<p>在一个VSL脚本中,你可以调用当前脚本中定义的任何VSL函数、全局脚本中的函数或任何限定的C/C++函数。定义函数并不是执行它。定义函数是对该函数简单命名及指定当函数被调用时做什么。对函数进行调用实际上就是执行那些指定的行为。</p>
<h4>
<a name="TOC-6"></a>
递归</h4>
<p>函数甚至可以被递归。即它可以调用它自己。例如,这里有一个计算Fibonacci数的函数:</p>
<pre>int fibo(int n)<br>
{<br>
if (n == 0)<br>
return 0;<br>
if (n == 1)<br>
return 1;<br>
return fibo(n-2)+fibo(n-1);<br>
}<br><br>
void main()<br>
{<br>
fibo(3); <span>// return 2</span>
<br>
fibo(4); <span>// return 3</span>
<br>
fibo(5); <span>// return 5</span>
<br>
fibo(6); <span>// return 8</span>
<br>
}<br><h4>
<a name="TOC-VSL-"></a>
给VSL函数传递参数</h4>
<p>VSL中所有基本类型(bool, char, int, float, str)<span> </span>
通过值来传递。值传递给函数,但如果该函数改变了该参数的值,此改变不会对全局或调用函数中产生影响。</p>
<pre>void foo(int a)<br>
{<br>
a = 10;<br>
bc.OutputToConsole(a); <span>// Print 10 in the console</span>
<br>
}<br><br>
void main()<br>
{<br>
int b = 3;<br>
foo(b);<br>
bc.OutputToConsole(b); <span>// Print 3 in the console</span>
<br>
}<br><p>VSL结构与C/C++结构/类由引用来传递。如果函数修改了所引用的参数,它也修改了那个原始的。</p>
<pre>void ChangeVector(Vector v)<br>
{<br>
v.x = 1.0;<br>
v.y = 2.0;<br>
v.z = 3.0;<br>
}<br><br>
void main()<br>
{<br>
Vector v(0.0,0.0,0.0); <span>// the members x, y and z are equal to 0.0</span>
<br><br>
ChangeVector(v);<br>
bc.OutputToConsole(v.x); <span>// Print 1.0</span>
<br>
bc.OutputToConsole(v.y); <span>// Print 2.0</span>
<br>
bc.OutputToConsole(v.z); <span>// Print 3.0</span>
<br>
}<br><h4>
<a name="TOC-C-C-"></a>
给C/C++函数传递参数</h4>
<p>在调用C/C++函数时,遵守C/C++中函数声明规则。VSL中不支持常量参数,但可以使用C/C++常数函数及使用带常量参数的C/C++函数。既然const关键字为被实现,你必须在使用带常量参数的C/C++函数时谨慎一些。</p>
</pre></pre></pre></pre></pre></pre></pre>
分享到:
评论

相关推荐

    Virtools例子----走迷宫(附带max模型、Virtools源文件)

    在压缩包文件"Virtools-走迷宫"中,可能包含了以下内容: 1. Virtools工程文件:这是Virtools项目的主要文件,包含了场景布局、行为脚本、资源引用等所有信息。用户可以使用Virtools软件打开此文件,查看和修改项目...

    Virtools增强现实专用BB-ARToolkit BB

    【Virtools增强现实专用BB-ARToolkit BB】是一款专为增强现实(AR)设计的工具包,它在近年来在中国的互动投影项目中得到了广泛应用。这款工具包特别针对3DVIA Virtools的不同版本提供了兼容性,包括4.0、4.1和5.0这...

    Virtools的VSL和SDK编程编码规则

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

    virtools学习资料

    ### Virtools学习资料:VSL脚本语言入门与实践 #### 一、VSL脚本语言简介 Virtools是一款强大的3D应用开发平台,广泛应用于游戏开发、虚拟现实、建筑可视化等多个领域。Virtools提供了丰富的功能和工具集,其中VSL...

    virtools基本教材

    - **脚本语言**:Virtools脚本语言(VSL),用于编写自定义行为。 4. **参数** - **概述**:用于控制对象行为的数据值。 - **参数操作**:通过运算符改变参数的值,实现动态调整对象的状态。 5. **属性** - **...

    VirTools教程

    VSL是一种专为Virtools设计的脚本语言,允许程序员深入控制交互逻辑。 4. **渲染引擎** 渲染引擎负责将3D场景转化为可视图像,支持实时预览和最终输出。开发者可以通过SDK定制渲染引擎,以满足特定需求。 5. **...

    Virtools播放器去水印Lib-5.0.0.8版

    通过SDK,你可以访问到Virtools的各种内部函数和对象,包括与播放器界面和渲染引擎交互的部分。 在实际操作中,你可能需要将CKKernelInit.lib链接到你的项目中,然后调用相应的API来初始化和控制播放器的行为。这...

    Virtools 中文精华教程PDF

    此外,教程还会涵盖动画系统、脚本语言(LVB)的使用,以及如何与外部程序(如Unity、C++)进行集成。动画系统允许用户制作角色和物体的动态效果,而LVB(Virtools Behavior Language)则为那些希望更深入编程的用户...

    Virtools电子教程 全中文

    本教程全面覆盖了Virtools的基础到高级功能,以全中文的形式呈现,旨在帮助用户克服语言障碍,更好地理解和掌握这款软件的使用。 在本教程中,你将学习到以下关键知识点: 1. **Virtools界面与工作流程**:了解...

    Virtools漫游脚本程序

    Virtools漫游脚本程序是一种基于Virtools软件的高级编程技术,主要用于创建虚拟现实(VR)环境中的交互式漫游体验。Virtools是一款强大的3D创作工具,它为设计师和开发者提供了一个直观的界面,用于构建复杂的3D场景、...

    3DMax导出到Virtools5.0插件(max2009-2011)

    《3DMax与Virtools交互:3DMax导出到Virtools5.0插件的详细解析》 在三维制作领域,3DMax是一款广泛使用的专业3D建模、动画和渲染软件,而Virtools则是一款强大的交互式3D应用程序开发平台。两者结合,能够实现从3D...

    Virtools中文教程pdf

    尽管Virtools强调无代码开发,但其内置的LScript语言提供了更高级的功能,对于复杂逻辑或自定义功能的实现必不可少。 六、交互设计 1. 交互对象:设置对象为交互式,定义其响应何种类型的用户交互。 2. 事件触发:...

    VT资料\virtools教程\Virtools教程

    【Virtools教程】是针对虚拟现实开发平台Virtools的一份详细教学资料,旨在帮助初学者理解和掌握如何在Virtools中创建3D互动场景。Virtools是一个强大的工具,它允许用户无需编程知识就能构建复杂的交互式应用程序,...

    virtools我的最爱

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

    Autodesk Maya exporters for 3DVIA Virtools

    Note: 64-bit 3dsMax/Maya and Virtools On 64-bit systems, Virtools executes as a 32-bit application. Thus, no exporter exists for 3dsMax/Maya 64-bit to Virtools due to compatibility problems. However,...

    [3D游戏制作].virtools_dev_v3.0-pantheon

    virtoolsvirtools 中文教程下载virtools 中文教程下载

    virtools入门教程

    ### Virtools入门教程详解 #### 一、Virtools概述与特色 Virtools是一款革命性的实时3D环境虚拟现实编辑软件,旨在将常见的档案格式(包括3D模型、2D图像和音频)无缝集成,用于创建各种3D产品,如网络应用、电脑...

Global site tag (gtag.js) - Google Analytics