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

通过实例学习Virtools脚本语言VSL - 将物体排列于圆周上

 
阅读更多
<div dir="ltr">
<p>该系统演示了怎样用VSL来操纵三维实体及复制物体。</p>
<ol>
<li>开始一个新作品并在3D Layout工作区添加一些随机的物体(或创建一些三维帧 - 3D Frame)。创建一个组(Group)并将所有物体添加到该组中。<br><br>
    注意:如果你用的是3D Frame,请确保你在<a href="https://sites.google.com/site/x3dofcn/ui/1_menu_bar/4_options_menu/general_preferences/prefs_3d_layout-rendering.html">3D
    Layout - Rendering preferences</a>
面板中的播放器模式(Player Mode)处勾选了"Show All Frames"框,以便在播放模式下能看到那些3D Frame。<br>
</li>
<li>在层级(Level)下创建一个脚本并添加一个Run VSL BB。在VSL Script Manager中,添加两个pIn参数:第一个叫做"objGroup"且为Group类型,第二个叫做"radius"且为float类型。<br>
</li>
<li> 讲以下代码复制到代码视图,并编译VSL脚本:<br><pre>void main()<br>
{<br><span>// Get number of objects</span>
<br>
int nbObject = objGroup.GetObjectCount();<br><br><span>// Calculate angle betwen each objets</span>
<br>
float angle = 2*pi/nbObject;<br><br>
Vector pos(0,0,0);<br><br><span>// Place each object on the circle</span>
<br>
for (int i = 0; i &lt; nbObject; ++i)<br>
{<br><span>// We get the nth object and cast it in Entity3D</span>
<br>
Entity3D obj = Entity3D.Cast(objGroup.GetObject(i));<br><br><span>// If cast failed obj is null so we skip process...</span>
<br>
if (!obj)<br>
continue;<br><br>
/<span>/ Compute object position</span>
<br>
pos.x = radius*sin(i*angle);<br>
pos.z = radius*cos(i*angle);<br><br><span>// Place object</span>
<br>
obj.SetPosition(pos, null, true);<br>
}<br>
}<br></pre>
</li>
<li>在Schematic工作区,按如下方式编辑你的Run VSL BB的参数:<br><ul>
<li>objGroup = Group1 (或者是你自己给那个组 - group所选的名字)
      </li>
<li>radius = 10
    </li>
</ul>
</li>
<li>运行该VSL脚本。你就会看到3D Layout工作区中所有物体都均匀分布在圆周上。
<p>可以对这个脚本进行一个有趣的修改:使用单个物体,在运行时将它复制几遍,即不是在起始时就有几个物体。<br></p>
</li>
<li>在VSL Script Manager工作区中,移除那个代表组的pIn参数并再添加两个pIn:一个叫做"originalObject"且类型为Entity3D,另一个叫做"nbOject"且类型为int。然后按以下内容修改你的代码:<br><pre>void main()<br>
{<br><span>// Calculate angle betwen each objets</span>
<br>
float angle = 2*pi/nbObject;<br><br>
Vector Pos(0,0,0);<br><br><span>// Place each object on the circle</span>
<br>
for (int i = 0; i &lt; nbObject; ++i)<br>
{<br><span>// We copy a nth object and cast it in Entity3D</span>
<br>
Entity3D obj = Entity3D.Cast(bc.Copy(originalObject, true, true));<br><br><span>//If cast failed obj is null so we skip process...</span>
<br>
if (!obj)<br>
continue;<br><br><span>// Compute object position</span>
<br>
pos.x = radius*sin(i*angle);<br>
pos.z = radius*cos(i*angle);<br><br><span>// Place object</span>
<br>
obj.SetPosition(pos, null, true);<br>
}<br>
}<br></pre>
</li>
<li>编辑你的pIn参数,编译VSL脚本然后运行它。<br><br>
    你会看到你的原始对象按指定的次数被复制,并且所有对象被均匀分布在圆周上。注意:那些复制出来的物体是以动态方式创建的(由<a href="https://sites.google.com/site/x3dofcn/vsl-virtools/bc">bc对象</a>
的"Copy"方法中的第二个参数控制)。所以如果你按了Reset键,你所有动态创建的物体会被销毁。</li>
</ol>
</div>
分享到:
评论

相关推荐

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

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

    virtools学习资料

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

    Virtools播放器去水印Lib-5.0.0.8版

    Virtools是一款强大的交互式3D应用开发工具,它允许用户创建、编辑和发布虚拟现实(VR)和增强现实(AR)应用程序。...对这些知识点的深入理解和应用,将有助于提升你的Virtools项目的专业性和吸引力。

    Virtools的VSL和SDK编程编码规则

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

    virtools 文件 实例文件 源文件

    virtools 文件 实例文件 源文件virtools 文件 实例文件 源文件virtools 文件 实例文件 源文件

    virtools实例资源

    2. **BCML与BScript编程**:理解这两种脚本语言的基本语法和特性,学习如何通过脚本控制3D对象和游戏逻辑。 3. **3D对象与场景管理**:了解如何导入、编辑和管理3D模型,以及如何在场景中布置和操作对象。 4. **动画...

    virtools基本教材

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

    Virtools漫游脚本程序

    Virtools漫游脚本程序是一种基于Virtools软件的高级编程技术,主要用于创建虚拟现实(VR)环境中的交互式漫游体验。...通过深入学习和实践,开发者可以利用Virtools的强大力量,创造出生动且引人入胜的VR应用。

    virtools开发之底层篇

    VSL脚本语言是Virtools中的核心部分,初学者可以从基础语法入手,逐步了解和掌握各种类型的应用。VSL部分不仅包括基本语法讲解,还涉及不同类型的VSL脚本程序及其在实际项目中的应用。 在VSL部分,作者首先介绍了...

    Virtools开发

    项目实例剖析部分通过多个实际案例,系统性地展示了Virtools在不同项目中的应用,帮助读者将理论知识转化为实践技能。书中附带的光盘包含了所有章节的实例代码和美工资源,确保在Windows XP和Virtools 4.0环境下可...

    Virtools-File-Package.rar_virtools

    首先,理解“封装VT文件到一个EXE文件”意味着将Virtools项目的所有必要组成部分,包括场景、资源、脚本等,整合到一个单一的可执行文件中。这样做的好处是用户无需安装Virtools软件即可运行应用程序,简化了分发和...

    virtools 室内漫游 实例文件 可修改

    virtools 室内漫游 实例文件 可修改 漫游 virtools 室内漫游 实例文件 可修改 漫游

    virtools我的最爱

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

    Virtools增强现实专用BB-ARToolkit BB

    增强现实技术通过将虚拟信息与现实世界融合,为用户创造了一个全新的交互体验,而Virtools AR Toolkit BB则简化了这一过程,使得开发者能够更高效地创建此类应用。 首先,让我们深入了解Virtools。Virtools是一款...

    Virtools 中文精华教程PDF

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

    virtools 源文件 实例 麦当劳网络智力游戏

    2. **行为脚本**:使用VirTools的脚本语言BCML(Blue Cat Modeling Language)编写,用于定义游戏规则、玩家交互和逻辑处理。 3. **资源文件**:包括声音、图像、动画等媒体素材,用于增强游戏体验。 4. **用户界面*...

Global site tag (gtag.js) - Google Analytics