`

papervision3d相机旋转(papervision3d camera orbit)

阅读更多

代码如下:
package
{
	import flash.events.MouseEvent;
	
	import org.papervision3d.lights.PointLight3D;
	import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.objects.primitives.Sphere;
	import org.papervision3d.view.BasicView;
	
	[SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")]
	public class OrbitingCameraExample extends BasicView
	{
		private var isOribiting:Boolean;
		private var cameraPitch:Number = 90;
		private var cameraYaw:Number = 270;
		private var cameraTarget:DisplayObject3D = DisplayObject3D.ZERO;
		private var previousMouseX:Number;
		private var previousMouseY:Number;
		
		private var light:PointLight3D;
		
		public function OrbitingCameraExample()
		{
			light = new PointLight3D();
			var material:FlatShadeMaterial = new FlatShadeMaterial(light, 0xcc0000);
			
			var sphere1:Sphere = new Sphere(material, 300, 10, 10);
			var sphere2:Sphere = new Sphere(material, 100, 10, 10);
			sphere2.x = 300;
			sphere2.y = 300;
			sphere2.z = 700
			var sphere3:Sphere = new Sphere(material, 100, 10, 10);
			sphere3.x = 600;
			sphere3.y = -400;
			sphere3.z = -200;
			var sphere4:Sphere = new Sphere(material, 100, 10, 10);
			sphere4.x = -700;
			sphere3.z = -100;
			
			scene.addChild(sphere1);
			scene.addChild(sphere2);
			scene.addChild(sphere3);
			scene.addChild(sphere4);
			
			stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
			stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
			stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);

			startRendering();
		}

		private function onMouseDown(event:MouseEvent):void
		{
			isOribiting = true;
			previousMouseX = event.stageX;
			previousMouseY = event.stageY;
		}

		private function onMouseUp(event:MouseEvent):void
		{
			isOribiting = false;
		}
		
		private function onMouseMove(event:MouseEvent):void
		{
			var differenceX:Number = event.stageX - previousMouseX;
			var differenceY:Number = event.stageY - previousMouseY;
			
			if(isOribiting)
			{
				cameraPitch += differenceY;
				cameraYaw += differenceX;
				 
				cameraPitch %= 360;
				cameraYaw %= 360;
				
				cameraPitch = cameraPitch > 0 ? cameraPitch : 0.0001;
				cameraPitch = cameraPitch < 90 ? cameraPitch : 89.9999;
				
				previousMouseX = event.stageX;
				previousMouseY = event.stageY;
				
				camera.orbit(cameraPitch, cameraYaw, true, cameraTarget);
			}
		}
	}
}


  • 大小: 112.3 KB
分享到:
评论

相关推荐

    Papervision3D 教程打包下载

    Papervision3D提供了丰富的摄像机控制功能,包括平移、旋转和缩放,以实现第一人称视角或自由视角的交互。 6. **PV3D+Flex集成**:Flex是一个用于构建富互联网应用程序(RIA)的开发框架,与Papervision3D结合使用...

    Papervision3D-demo.rar_DEMO_Papervision3D demo_Papervision3D mxm

    《Papervision3D演示项目详解:七个实例深度剖析》 Papervision3D是一种基于Adobe Flash Platform的开源3D渲染引擎,它允许开发者在网页上创建复杂的3D场景和交互式应用。该技术的出现极大地拓宽了Flash的潜力,使...

    PaperVision3D

    通过PaperVision3D,开发者可以创建3D模型、纹理、灯光、相机视角等元素,并在舞台上进行动态操作,实现3D物体的旋转、缩放和移动,以及复杂的碰撞检测和物理模拟。 在PaperVision3D中,3D场景是由多个基本元素构成...

    Papervision3D.Essentials

    ### Papervision3D.Essentials - 关键知识点解析 #### 一、Papervision3D概述 - **定义**: Papervision3D是一种强大的实时3D引擎,专为Flash设计。它能够将外部创建的3D模型渲染成Flash内容,无需终端用户下载或...

    papervision3d_868.swc

    《PaperVision3D SDK在Flex环境中的应用与实践》 PaperVision3D(简称PV3D)是一款基于Adobe Flex和ActionScript 3.0的开源3D图形库,它为Web开发者提供了在Flash Player环境中构建三维图形和交互式应用程序的能力...

    Papervision3D

    ### Papervision3D基础知识与应用 #### 一、Papervision3D简介 Papervision3D是一款基于Adobe Flash平台的开源3D框架,它允许开发者利用ActionScript 3.0来创建和控制复杂的3D场景,从而实现交互式的3D图形和动画...

    Papervision3D的API

    Papervision3D提供了PerspectiveCamera和OrthographicCamera两种类型的相机。 3. **Lights**: 光源是塑造3D物体外观的关键。PV3D支持多种类型的光源,如PointLight(点光源)、DirectionalLight(方向光)和...

    初识Papervision3D

    《初识Papervision3D》 在深入探讨Papervision3D之前,我们首先需要理解3D技术在Web开发中的应用。随着互联网技术的快速发展,网页体验已不再局限于二维平面,用户对交互性和视觉效果的需求日益增长。Papervision3D...

    PV3d Papervision3d API文档+学习笔记+全景案例

    《PV3d Papervision3D API文档与全景案例解析》 Papervision3D(PV3D)是一款强大的开源3D图形引擎,专为Adobe Flash平台设计,支持ActionScript 3.0(AS3),是Flash AS3中实现3D效果的重要工具。在本文中,我们将...

    《Papervision3D+Essentials》中文翻译

    《Papervision3D+Essentials》是一本专注于Papervision3D技术的权威指南,对于深入了解和掌握这个强大的3D图形库至关重要。Papervision3D(简称PV3D)是Flash平台上最早的3D渲染引擎之一,它为开发者提供了在Web...

    papervision3D

    Papervision3D是基于Adobe Flash和Flex平台的一个强大的三维(3D)图形渲染引擎。这个技术允许开发者在Web浏览器中创建出丰富的、交互式的3D场景,为用户提供了一种全新的网页体验。该框架利用ActionScript 3.0语言...

    Papervision3D.swc

    Papervision3D_2.0.869.swc

    papervision3d的swc源码和书籍

    《Papervision3D:SWC源码与学习资源详解》 Papervision3D,作为一款强大的开源框架,为Flash平台提供了强大的3D渲染能力,它使得开发者能够利用ActionScript3在Web上创建出令人震撼的3D交互体验。本篇文章将围绕...

    papervision3d 精髓

    《Papervision3D精髓》一书是针对初学者及有一定基础的开发者设计的,旨在教授如何使用Papervision3D(PV3D)创建具有惊人效果和强大动画功能的交互式3D应用程序。PV3D是一种开源的3D引擎,用于Adobe Flash平台,它...

    papervision3d和物理引擎Box2DFlash的一个超酷且好玩的DEMO

    《Papervision3D与Box2DFlash结合的精彩DEMO解析》 在IT行业中,3D图形渲染和物理引擎的应用已经变得越来越普遍,尤其是在游戏开发和互动媒体设计领域。Papervision3D是一个基于Adobe Flash平台的开源3D库,它允许...

Global site tag (gtag.js) - Google Analytics