- 浏览: 379159 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (121)
- flex及Flash3D表现研究 (6)
- papervision3D研究 (26)
- flashParticle粒子系统 (9)
- Papervision3d动力学研究 (6)
- flex知识 (14)
- as3程序基础 (11)
- flex组件样式演示 (3)
- flex与PHP、mySQL学习 (0)
- flex声音表现研究 (0)
- flex整站开发研究 (0)
- flex开发市场 (0)
- flash cs3教程 (1)
- flex与flash文件的交互 (2)
- flex、flash资源集 (1)
- flash cs4研究 (1)
- flash游戏编程 (0)
- DirectX游戏编程 (3)
- silverlight研究 (4)
- Java学习 (2)
- 数学知识 (1)
- VC++ (3)
- 行业信息 (2)
- away3d (6)
- alternativa3d (1)
- Pixel Bender 研究 (0)
- 随笔 (1)
- Google O3D (1)
- Javascript (1)
- iphone 3d游戏开发 (6)
- Html 5 3d (3)
- Unity3d手机游戏开发 (5)
最新评论
-
3580737:
在哪里看看
AS3的深度管理及排序 -
yangyang111310:
我靠 哥们 行不行啊
flex + tomcat + myEclipse环境配置与使用(三) -
jjjkkk:
nice 感谢 flash player的版本真DT
Flash Player10 Debug版--正式版 -
lattimore:
Excellent
从3dsmax导出Dae模型到papervision3D -
ytdalin21:
合作很愉快,技术都挺靠谱!下次继续合作!
papervision dae animation(DAE角色动画控制)
下面我们练习Papervision3d在平面上点击生成一个物体
效果如下
最主要的原理是把Flash二维的点击转化成为三维的物体上的坐标,这个是我们这个练习需要掌握的知识核心。
先放上代码,咱们后面再分析代码的意义。
进行PaperVision3D基本的场景布置后,我们用一个Number3D的变量var intersect:Number3D来储存PaperVision3D场景里的点的坐标信息。
程序里我们用了两种方法来获得这个信息(两种方法来获得):
我们可以采取其中的任意一种方法。
这里我们用的是方法二:
这两种方法的返回值都是Number3D
效果如下
最主要的原理是把Flash二维的点击转化成为三维的物体上的坐标,这个是我们这个练习需要掌握的知识核心。
先放上代码,咱们后面再分析代码的意义。
package { import flash.events.Event; import flash.events.MouseEvent; import org.papervision3d.cameras.CameraType; import org.papervision3d.core.math.Number3D; import org.papervision3d.core.math.Plane3D; import org.papervision3d.core.utils.Mouse3D; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.materials.utils.MaterialsList; // import org.papervision3d.objects.primitives.Arrow; import org.papervision3d.objects.primitives.Cone; import org.papervision3d.objects.primitives.Cube; import org.papervision3d.objects.primitives.Cylinder; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.objects.primitives.Sphere; import org.papervision3d.view.BasicView; [SWF(backgroundColor="#000000", frameRate="30", width="600", height="600")] public class PlaneSelect extends BasicView { private var mouse3D:Mouse3D; public function PlaneSelect() { super(600,600,false,true,CameraType.FREE); var frameMt:WireframeMaterial=new WireframeMaterial( 0x000000);//线框材质 var colorMt:ColorMaterial=new ColorMaterial( 0xD3D2D0);//色块材质 /*××××××××××××××××××××××××× */ /* 使用第二种方法时 必须设置的2属性*/ colorMt.interactive=true;//让材质能够感知鼠标 以便获取鼠标在材质上点击的位置 Mouse3D.enabled = true; mouse3D = viewport.interactiveSceneManager.mouse3D;/* 创建虚拟3d鼠标 */ /*××××××××××××××××××××××××× */ var floor:Plane = new Plane(colorMt, 1000, 1000, 10, 10);//地板 scene.addChild(floor); camera.y = -400;//镜头在floor前下方 camera.z=-600;//到floor的距离 camera.lookAt(floor);//让镜头对准地板,而不是平视远方 startRendering(); /* 注册事件*/ //addEventListener(MouseEvent.MOUSE_UP, removeDragListener); addEventListener(MouseEvent.MOUSE_DOWN, setDragListener); } private function setDragListener(evt:MouseEvent=null):void { //var intersect:Number3D=getMousePointOnFloor();//使用方法一 var intersect:Number3D=getMousePointOnFloor2();//使用方法二 var materialsList:MaterialsList = new MaterialsList(); materialsList.addMaterial(new WireframeMaterial(0xf000000), "all"); //定义正方形所有面使用同一材质,也可以分别定义 var cube:Cube = new Cube(materialsList,30,30,30); cube.position=intersect;//把方块的位置和鼠标位置设为相同 cube.z=-10; scene.addChild(cube); } private function move3DMap(evt:MouseEvent=null):void{} private function removeDragListener(evt:MouseEvent=null):void { // removeEventListener(MouseEvent.MOUSE_MOVE, move3DMap); } /** *鼠标的三维坐标 方法一 * @return * */ private function getMousePointOnFloor():Number3D { var ray:Number3D = camera.unproject( viewport.containerSprite.mouseX, viewport.containerSprite.mouseY); //创建一条镜头到鼠标的射线 ray = Number3D.add(ray, camera.position); //通过三个点创建一个虚拟平面,其实就是建立一个和x轴y轴相交的平面 var plane3D:Plane3D = Plane3D.fromThreePoints( new Number3D(0,100,0), new Number3D(100,0,0), new Number3D(0,0,0)); //找到射线和平面的交点 var intersect:Number3D = plane3D.getIntersectionLineNumbers(camera.position, ray); return intersect; } /** *鼠标的三维坐标 方法二, 大概的原理是获取鼠标在材质上点击的位置 * @return * */ private function getMousePointOnFloor2():Number3D { return new Number3D(mouse3D.x,mouse3D.y,mouse3D.z); } } }
进行PaperVision3D基本的场景布置后,我们用一个Number3D的变量var intersect:Number3D来储存PaperVision3D场景里的点的坐标信息。
程序里我们用了两种方法来获得这个信息(两种方法来获得):
var intersect:Number3D=getMousePointOnFloor();//使用方法一 var intersect:Number3D=getMousePointOnFloor2();//使用方法二
我们可以采取其中的任意一种方法。
这里我们用的是方法二:
var intersect:Number3D=getMousePointOnFloor2();
这两种方法的返回值都是Number3D
发表评论
-
papervision3d-shaders-bumpmap 凹凸材质的实现
2009-10-11 13:56 1637... -
PaperVision3D里实现移动物体
2009-09-30 21:37 2260在PaperVision3D里实现移动物体的移动,下面是一个测 ... -
papervision dae animation(DAE角色动画控制)
2009-09-28 23:49 4234【http://www.bvumedia.com---flas ... -
AS3D寻路演示
2009-09-03 00:07 1776操作说明: Clear 清空目前的设置 Wall 单击这个标 ... -
Papervision3dMultiView(多视窗视图)
2009-08-14 23:52 1611【http://www.bvumedia.com---flas ... -
COLLADA - 交互3D数字资产交换方案
2009-08-09 22:16 1576【http://www.newflash3d.com---f ... -
Papervision3d 分层(ViewportLayer)的概念示范
2009-08-05 20:54 1460我们在Papervision3d中有些 ... -
Glow Cube for Papervision3D 2.0 (发光箱体练习)
2009-08-05 20:15 1867【http://www.newflash3d.com---fl ... -
Papervision3d 与tweener类结合实现相机的运动变化
2009-08-01 17:52 1512通过Papervision3d 与tweener类结合实现相机 ... -
Papervision3d QuadTree四叉树相机的示例
2009-07-31 22:50 1927【http://www.newflash3d.com---fl ... -
papervision3d游戏人物旋转全方位观察(papervision3d camera orbit)
2009-07-25 01:10 3313Flash做3d三维游戏的可能性探讨:游戏人物的展示 【htt ... -
从3dsmax导出Dae模型到papervision3D
2009-07-24 20:28 9261从外部的三维软件,如3dsmax导入模型到papervisio ... -
papervision3d相机旋转(papervision3d camera orbit)
2009-05-21 22:26 4084代码如下: package { import flas ... -
RenderSessionData类分析
2009-02-15 23:39 1040RenderSessionData类分析 (渲染会话数据) 代 ... -
一步一步走进Papervision3D的世界(一):
2009-02-14 01:40 1400这个任务的确很深重,要一步步的深入。。。。。。不管怎么说,pa ... -
Papervision3D拖动物体
2009-01-13 02:29 2632【http://www.newflash3d.com---fl ... -
papervision3D深入研究之一:关于视图View
2009-01-12 12:23 1434在papervision3D的核心类里,papervision ... -
papervision3D核心结构分析(一、基本包和类)
2008-12-23 13:53 2562【http://www.newflash3d.com---fl ... -
从3dsmax烘培到papervision3D(二、输出和导入模型)
2008-12-23 01:43 3984接着从3dsmax烘培到papervision3D(一)说,我 ... -
papervision3D基本框架之-BasicView基本视图
2008-12-22 00:02 2755我们一般在构建papervision3D构架的时候需要创建下面 ...
相关推荐
Papervision3D 是一个基于ActionScript 3.0的开源库,专门用于在Adobe Flash平台上构建三维(3D)图形和交互式应用程序。这个教程集合提供了深入学习Papervision3D所需的知识,包括PV3D的基本概念、对象模型、渲染...
通过PaperVision3D,开发者可以创建3D模型、纹理、灯光、相机视角等元素,并在舞台上进行动态操作,实现3D物体的旋转、缩放和移动,以及复杂的碰撞检测和物理模拟。 在PaperVision3D中,3D场景是由多个基本元素构成...
综上所述,《Papervision3D.Essentials》不仅是一本入门指南,更是一部详尽的技术手册,旨在帮助读者克服在使用Papervision3D过程中可能遇到的各种挑战,并通过实际案例加深对这项技术的理解和掌握。无论是对于初学...
Papervision3D就是这样一个强大的开源库,它为ActionScript 3.0开发者提供了在Flash平台上构建三维(3D)图形的能力。 Papervision3D是基于Adobe Flash的3D渲染引擎,它允许开发者在浏览器中创建复杂的3D场景,包括...
《PaperVision3D SDK在Flex环境中的应用与实践》 PaperVision3D(简称PV3D)是一款基于Adobe Flex和ActionScript 3.0的开源3D图形库,它为Web开发者提供了在Flash Player环境中构建三维图形和交互式应用程序的能力...
Papervision3D是一种基于Adobe Flash Platform的开源3D渲染引擎,它允许开发者在网页上创建复杂的3D场景和交互式应用。该技术的出现极大地拓宽了Flash的潜力,使其不再局限于2D动画,而是能够构建出令人惊叹的三维...
让他们能够在Web浏览器中实现引人入胜的3D交互体验,尽管随着WebGL和现代浏览器对硬件加速的支持,现代3D技术如Three.js已经变得更为流行,但Papervision3D仍然是Flash 3D历史上的一个重要里程碑。
Papervision3D(PV3D)是Flash平台上的一款强大的3D图形库,它允许开发者在网页上创建丰富的、交互式的三维图形和应用程序。本篇文章将深入探讨Papervision3D的API,帮助读者理解并掌握这个工具的核心概念和功能。 ...
Papervision3D为开发人员提供了一个完整的3D生态系统,包括场景管理、光照、纹理、摄像机控制、物理模拟等众多功能,使得在Flash环境中构建复杂的3D应用成为可能。 描述中的“FLASH,FLEX最新PV3D帮助文档”意味着这...
Papervision3D(简称PV3D)是Flash平台上最早的3D渲染引擎之一,它为开发者提供了在Web浏览器中构建三维互动体验的能力。这本书的中文翻译版本,对于国内的开发人员来说,无疑是一个学习PV3D技术的重要资源。 1. **...
Papervision3D_2.0.869.swc
Papervision3D是一个基于Adobe Flash平台的开源3D库,它允许开发者在网页上创建复杂的3D场景。而Box2DFlash则是一个将著名的2D物理引擎Box2D移植到Flash平台的版本,为游戏和交互应用提供了真实的物理模拟。当这两个...
《PV3d Papervision3D API文档与全景案例解析》 Papervision3D(PV3D)是一款强大的开源3D图形引擎,专为Adobe Flash平台设计,支持ActionScript 3.0(AS3),是Flash AS3中实现3D效果的重要工具。在本文中,我们将...
Papervision3D是一个用于Adobe Flex和Flash平台的开源项目,它为Web开发人员提供了在浏览器中创建交互式3D图形的能力,极大地拓宽了Web应用的视觉表现力。 本书旨在详细介绍PV3D的基本概念和技术,帮助读者理解如何...
Papervision3D在Flash开发领域中扮演了关键角色,尤其是在2009年左右,当时Flash是Web开发中的主要技术之一。PV3D利用GPU加速来渲染3D场景,这使得在浏览器中呈现高质量的3D图像成为可能。这对于游戏开发、产品展示...
Papervision3D是一个基于ActionScript 3.0的开源库,用于在Adobe Flash平台上构建三维(3D)图形和交互式应用。这个技术在2006年由Carlos Ulloa创立,允许开发者在浏览器内创建引人入胜的3D体验,无需安装额外的插件...