Eon Studio4.0教程:解决导入场景的碰撞问题
作者: 虚怀若谷
前言: EON技术的这段时间终于有了比较实际的接触,感觉和VRML技术的显示结构差不多,或许软件程序技术开发的时候,开发人员参考VRML的比较多吧。以前可能是由于接触不多的缘故吧,感觉并没有留下太深的印象。这段时间接触以后,发现EON技术的延伸开发功能不错,技术的表现力也是不错的,值得我们去学习一番。Eon Studio4.0是目前EON技术的主要编辑软件,安装以后,整个程序界面的设计和程序的应用性方面不太敢恭维。曾记得任我虚拟批评过EON技术好像没有碰撞功能,经过摸索后才发现,场景的碰撞问题的解决实际上是十分方便,现就此问题的解决向大伙做个介绍,希望对你了解Eon Studio软件的工作方式和快速入手有所帮助。
操作步骤如下:
一、发现问题:
 导入一个场景文件,点击预览后可以发现在鼠标右键前进后退过程中有穿墙而过的现象,也就是我们刚开始接触这门技术时误以为EON没有碰撞功能的由来。
二、解决碰撞问题办法 1、点击软件中的Simulation Tree(仿真演示的结构树),展开Scene(场景)的Camera(摄像机)属性,如下图所示,找到Walk(虚拟行走)的功能:

双击Walk(虚拟行走)结构树选项,则可以激活Walk Properties(虚拟行走属性)对话框。对话框中有Walk(虚拟行走)一系列的属性Setting(设置)。
可以设置运动的Max Speed最大速度:默认的Walk行走速度为10米/秒、Turn转动的速度为360度/秒;
可以Mouse Button Assignments分配指定鼠标的按键功能,默认分配设置为:Walk: left button、Look around :Middle button、Elevate: Right button即设置鼠标左键用来行户,中键用来旋转视角,右键用来上升下降;
可以设置Gravitation重力加速度,默认值为0米/平方秒
可以设置Collision碰撞功能,默认值为灰色无效。
这里,解决碰撞问题办法就是使Collision碰撞功能有效,即选定Enable有效功能,保持Slide on Walk滑行功能,设置碰撞的Height高度为1米,Collision碰撞范围为1米。
 哈哈,问题的解除是如此的简单,点击Walk Properties(虚拟行走属性)对话框的确定按钮之后,我们就完成了任务。
让我们再来浏览一下作品吧,是不是感觉很爽哟。不过,设置碰撞有效后,在场景就四处碰壁,如笼中兽一样,真是自作自受:-)

Patrick_chen兄弟对碰撞问题的补充: walk里头的碰撞侦测选项并不好用,除非你的场景里头只有简单的墙壁,若如果你还有其它的对象那么走起来就会显的非常的不顺,一下子卡到这一下子卡到那,所以通常会使用专为碰撞侦测的功能节点-ConvexCollision来达到碰撞侦测的目的,如此一来,我可以选择想要碰撞的对象,例如摄影机与某墙面或某对象的碰撞侦测,或是对象与对象之间的碰撞侦测,总之walk里头的碰撞侦测只提供简单的功能与设定,在复杂的场景里头他并不好用,因为摄影机会和所有的对象引起碰撞反应,所以游走时会有卡住的感觉,当然啦如果你的场景简单到只有一些墙壁再加上少与的对象那么用它就够了。 假设你有两个以上要相碰的对象camera与a对象...对象,那么camera与a对象内各要放置一个ConvexCollision功能节点,而camera这个frame框架必须Copy as link到ConvexCollision功能节点下的资料夹内,而a对象的框架下可看见mesh的节点,然而这mesh节点必须Copy as link到ConvexCollision功能节点的资料夹内,再来我们要做camera与对象部分内的ConvexCollision节点的属性设定,做法为将鼠标移到ConvexCollision节点上点两下开启对话框,在MoveBack的部分勾选Slide,勾选Enabled, 最后我们注意到Static这个部分,如果你在Camera内的Static未勾选则对象中的Static就要勾选,总之Carema与对象的Static设定是相反的。 设定好之后,我们这时我们再增加一个ConvexCollisionManager到你的树状架构中的最上层位置, 然而这个节点就像是个碰撞侦测的管理者, 管理所有的ConvexCollision功能节点,所以,你要将所有的ConvexCollision功能节点Copy as link到ConvexCollisionManager下的资料夹内,而ConvexCollisionManager的属性设定方式,一样是鼠标点选两下开启属性设定窗口, 在Collision中设定碰撞的距离看是要设为多少距离下就会碰撞在一起而不再穿透过去..,之Carema下的ConvexCollision联结的是Carema的frame而对象下的ConvexCollision连结的是对象的mesh,你可以有很多的对象需要作碰撞侦测, 那每个对象下就需要放置ConvexCollision。
|