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中的鼠標交互效果,這個效果盡管很簡單~!
本教程可自由轉載,請注明轉載出處,謝謝~!