Papervision3D实现鼠标交互的效果也比较简单,这里用上一课中的乳牛效果来实现这样的鼠标交互算法:
代码解释:
1、这段代码只比上一课代码中新增了一个distance属性,目的是确定相机在场景中的位置不至于和对象(cow乳牛)随鼠标移动相距过大;
2、这段代码重新修改的函数processFrame中的代码,目的是为了实现场景中的3D模型随鼠标的位置变动不断变动,从而达到鼠标交互的目的。效果最终截图如下:
本课最终源代码如下:
package
{
import PaperBase;
import
org.papervision3d.objects.DisplayObject3D;
import
org.papervision3d.objects.parsers.Collada;
public class MainMouseInteraction extends
PaperBase
{
public var
cow:DisplayObject3D;
public var distance:Number =
1000;
public function
MainMouseInteraction():void
{
init();
}
override protected function
init3d():void
{
cow = new
Collada("collada/cow.dae");
cow.moveDown(100);
cow.scale =
3;
cow.pitch(
-30);
default_scene.addChild(cow);
}
override protected function
processFrame():void
{
default_camera.y
= -(((mouseY - (stage.height/2))/stage.height) *
1600);//确定相机的y范围在800~~-800之间,即当mouseY=0时default_camera.y=800,当mouseY=stage.height时default_camera.y=-800
default_camera.moveForward(default_camera.distanceTo(cow)
- distance);//限定相机相对于cow乳牛模型不要移动到更远的地方
cow.rotationY
= -((mouseX / stage.width) * 360);//使用mouseX来控制cow乳牛Y方向旋转角度
}
}
} |
总结:没有过多的语句就实现了3D中的鼠标交互效果,这个效果尽管很简单~!
本教程可自由转载,请注明转载出处,谢谢~!