- 浏览: 382253 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (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 1652... -
PaperVision3D里实现移动物体
2009-09-30 21:37 2288在PaperVision3D里实现移动物体的移动,下面是一个测 ... -
papervision dae animation(DAE角色动画控制)
2009-09-28 23:49 4260【http://www.bvumedia.com---flas ... -
AS3D寻路演示
2009-09-03 00:07 1815操作说明: Clear 清空目前的设置 Wall 单击这个标 ... -
Papervision3dMultiView(多视窗视图)
2009-08-14 23:52 1641【http://www.bvumedia.com---flas ... -
COLLADA - 交互3D数字资产交换方案
2009-08-09 22:16 1596【http://www.newflash3d.com---f ... -
Papervision3d 分层(ViewportLayer)的概念示范
2009-08-05 20:54 1493我们在Papervision3d中有些 ... -
Glow Cube for Papervision3D 2.0 (发光箱体练习)
2009-08-05 20:15 1893【http://www.newflash3d.com---fl ... -
Papervision3d 与tweener类结合实现相机的运动变化
2009-08-01 17:52 1527通过Papervision3d 与tweener类结合实现相机 ... -
Papervision3d QuadTree四叉树相机的示例
2009-07-31 22:50 1941【http://www.newflash3d.com---fl ... -
papervision3d游戏人物旋转全方位观察(papervision3d camera orbit)
2009-07-25 01:10 3336Flash做3d三维游戏的可能性探讨:游戏人物的展示 【htt ... -
从3dsmax导出Dae模型到papervision3D
2009-07-24 20:28 9279从外部的三维软件,如3dsmax导入模型到papervisio ... -
papervision3d相机旋转(papervision3d camera orbit)
2009-05-21 22:26 4111代码如下: package { import flas ... -
RenderSessionData类分析
2009-02-15 23:39 1066RenderSessionData类分析 (渲染会话数据) 代 ... -
一步一步走进Papervision3D的世界(一):
2009-02-14 01:40 1429这个任务的确很深重,要一步步的深入。。。。。。不管怎么说,pa ... -
Papervision3D拖动物体
2009-01-13 02:29 2658【http://www.newflash3d.com---fl ... -
papervision3D深入研究之一:关于视图View
2009-01-12 12:23 1464在papervision3D的核心类里,papervision ... -
papervision3D核心结构分析(一、基本包和类)
2008-12-23 13:53 2587【http://www.newflash3d.com---fl ... -
从3dsmax烘培到papervision3D(二、输出和导入模型)
2008-12-23 01:43 4021接着从3dsmax烘培到papervision3D(一)说,我 ... -
papervision3D基本框架之-BasicView基本视图
2008-12-22 00:02 2785我们一般在构建papervision3D构架的时候需要创建下面 ...
相关推荐
1. **基础概念**:介绍3D图形的基本原理,如坐标系统、摄像机、光照和材质,以及如何在2D平面上渲染3D对象。 2. **场景图(Scene Graph)**:Papervision3D中的核心组件之一,用于组织和管理3D世界的对象层次结构。...
在Flash平台的辉煌时期,Papervision3D(简称pv3d)作为一款强大的3D引擎,为开发者提供了构建丰富3D体验的能力。而Flex框架则以其高效的数据绑定和组件化设计著称,尤其适合构建复杂的用户界面。将pv3d与Flex控件相...
外加热强制循环蒸发器装配图(CAD).rar
数控车床纵向进给系统设计.zip
j
爬虫 bangumi名称和评论数
基于SpringBoot的垃圾分类回收系统,系统包含两种角色:管理员、用户主要功能如下。 【用户功能】 首页:浏览垃圾分类回收系统信息。 个人中心:管理个人信息,查看历史记录和订单状态。 运输管理:查看运输信息,垃圾回收的时间和地点。 公告管理:阅读系统发布的相关通知和公告。 垃圾回收管理:查看垃圾回收的信息,回收类型和进度。 垃圾出库申请管理:提交和查看垃圾出库申请的状态。 【管理员功能】 首页:查看垃圾分类回收系统。 个人中心:管理个人信息。 管理员管理:审核和管理注册管理员用户的信息。 用户管理:审核和管理注册用户的信息。 运输管理:监管和管理系统中的运输信息。 公告管理:发布、编辑和删除系统的通知和公告。 垃圾回收管理:监管和管理垃圾回收的信息。 垃圾出库申请管理:审批和管理用户提交的垃圾出库申请。 基础数据管理:管理系统的基础数据,运输类型、公告类型和垃圾回收类型。 二、项目技术 编程语言:Java 数据库:MySQL 项目管理工具:Maven 前端技术:Vue 后端技术:SpringBoot 三、运行环境 操作系统:Windows、macOS都可以 JDK版本:JDK1.8以上都可以 开发工具:IDEA、Ecplise、Myecplise都可以 数据库: MySQL5.7以上都可以 Maven:任意版本都可以
内容概要:本文档是台湾大学计算机科学与信息工程系2021年秋季学期《算法设计与分析》课程的第一次作业(Homework#1)。作业包含四道编程题和三道手写题,旨在考察学生对算法设计和分析的理解与应用能力。编程题涉及汉诺塔、数组计算、矩形点对、糖果分配等问题;手写题涵盖渐近符号证明、递归方程求解、幽灵腿游戏优化、不公平的卢卡斯问题等。文档详细描述了每个问题的具体要求、输入输出格式、测试用例以及评分标准。此外,还提供了编程技巧和注意事项,如避免延迟提交、正确引用资料、处理大输入文件等。 适合人群:具备一定编程基础的本科生或研究生,特别是修读过或正在修读算法设计与分析相关课程的学生。 使用场景及目标:①帮助学生巩固课堂所学的算法理论知识;②通过实际编程练习提高解决复杂问题的能力;③为后续更深入的学习和研究打下坚实的基础。 其他说明:此作业强调团队合作和个人独立思考相结合的重要性,鼓励学生在讨论后用自己的语言表达解决方案,并注明参考资料。对于编程题,特别提醒学生注意输入文件可能较大,建议采取适当的优化措施以确保程序运行效率。
基于SpringBoot的铁路订票管理系统,系统包含两种角色:管理员、用户主要功能如下。 【用户功能】 首页:浏览铁路订票管理系统的主要信息。 火车信息:查看火车的相关信息,包括车次、出发地、目的地和票价等。 公告资讯:阅读系统发布的相关通知和资讯。 后台管理:进行系统首页、个人中心、车票预订管理、车票退票管理等操作。 个人中心:管理个人信息,查看订单历史记录等。 【管理员功能】 首页:查看铁路订票管理系统。 个人中心:修改密码、管理个人信息。 用户管理:审核和管理注册用户的信息。 火车类型管理:管理系统中的火车类型信息。 火车信息管理:监管和管理系统中的火车信息,添加、编辑、删除等。 车票预订管理:处理用户的车票预订请求。 车票退票管理:处理用户的车票退票请求。 系统管理:管理系统的基本设置,公告资讯、关于我们、系统简介和轮播图管理。 二、项目技术 编程语言:Java 数据库:MySQL 项目管理工具:Maven 前端技术:Vue 后端技术:SpringBoot 三、运行环境 操作系统:Windows、macOS都可以 JDK版本:JDK1.8以上都可以 开发工具:IDEA、Ecplise、Myecplise都可以 数据库: MySQL5.7以上都可以 Maven:任意版本都可以
塑料架注射模具设计.rar
基于json文件数据驱动的的接口测试框架
铁丝缠绕包装机设计-缠绕盘设计.rar
linux
圆柱体相贯线焊接专机工作台设计.rar
硬币分拣机设计.rar
内容概要:本文探讨了开发行业级机器学习和数据挖掘软件的经验与教训,指出当前研究界与工业界之间的脱节问题。作者分享了开发LIBSVM和LIBLINEAR的经验,强调了用户需求的重要性。大多数用户并非机器学习专家,期望简单易用的工具来获得良好结果。文章还详细介绍了支持向量机(SVM)的实际应用案例,包括数据预处理(如特征缩放)、参数选择等步骤,并提出了为初学者设计的简易流程。此外,作者讨论了在设计机器学习软件时应考虑的功能选择、选项数量、性能优化与数值稳定性等问题,强调了软件开发与实验代码的区别以及鼓励研究人员参与高质量软件开发的重要性。 适合人群:对机器学习软件开发感兴趣的科研人员、工程师及从业者,尤其是那些希望了解如何将学术研究成果转化为实际可用工具的人士。 使用场景及目标:①帮助非机器学习专家的用户更好地理解和使用机器学习方法;②指导开发者在设计机器学习软件时考虑用户需求、功能选择、性能优化等方面的问题;③促进学术界与工业界之间的合作,推动高质量机器学习软件的发展。 其他说明:本文不仅提供了具体的开发经验和技巧,还呼吁建立激励机制,鼓励更多研究人员投入到机器学习软件的开发中,以解决当前存在的研究与应用脱节的问题。
一天入门pandas代码
该资源为joblib-0.12.0-py2.py3-none-any.whl,欢迎下载使用哦!
内容概要:本文档《xtuner_requirements.txt》列出了用于支持特定项目(可能是机器学习或深度学习项目)运行所需的所有Python包及其版本。其中不仅包括常见的数据处理和科学计算库如numpy、pandas,还包括了与深度学习密切相关的库如torch、transformers等。值得注意的是,文档中还特别指定了NVIDIA CUDA相关组件的具体版本,确保了GPU加速环境的一致性和兼容性。此外,文档中也包含了从GitHub直接安装的xtuner库,明确了具体的提交哈希值,保证了代码来源的精确性。 适合人群:对机器学习、深度学习领域有一定了解并需要搭建相应开发环境的研发人员,尤其是那些希望复现特定实验结果或基于已有模型进行二次开发的研究者和技术爱好者。 使用场景及目标:①帮助开发者快速搭建完整的开发环境,确保所有依赖项正确无误;②为研究人员提供一个稳定的实验平台,以便于重复实验和验证结果;③作为项目协作的基础,确保团队成员之间的环境一致性,减少因环境差异带来的问题。 阅读建议:由于该文档主要为技术性依赖列表,在阅读时应重点关注所需安装的库及其版本号,特别是CUDA相关组件和自定义库(如xtuner)的安装方式。对于非技术人员而言,可能需要额外查阅相关资料来理解各库的作用。同时,在实际操作过程中,建议按照文档中的顺序逐一安装依赖,避免版本冲突等问题的发生。
j