`

Papervision3d QuadTree四叉树相机的示例

阅读更多
http://www.newflash3d.com---flash3D先锋队:北京贝武易科技公司】
有疑问请联系我QQ:363596350
在Papervision3d,新加入的QuadTree(四叉树)渲染方法,很好的解决了Papervision3d中交叉面的显示问题,面少的时候,效率还行。
“QuadrantRenderEngine确实解决了破面现象,但效率实在不敢恭维,特别是面多的时候(如人物)”
下面是一个实际的例子。
单击一下画面,我们就可以在Papervision3d BasicRenderEngine(默认的渲染驱动)与QuadrantRenderEngine(四叉树渲染驱动)之间切换。

代码如下,贴图您可以用自己的贴图。
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.utils.*;
	
	import org.papervision3d.cameras.*;
	import org.papervision3d.materials.*;
	import org.papervision3d.materials.special.*;
	import org.papervision3d.materials.utils.*;
	import org.papervision3d.objects.*;
	import org.papervision3d.objects.primitives.*;
	import org.papervision3d.render.*;
	import org.papervision3d.view.*;

	[SWF(width="640", height="480", backgroundColor = "0x000000", frameRate = "60")]
	
	public class QuadTreeExe01 extends BasicView
	{
		private var plane :DisplayObject3D;
		private var cube  :DisplayObject3D;
		
		[Embed(source = "assets/bvu.jpg")] private var BitmapClass:Class;
		
		public function QuadTreeExe01()
		{
			super(0, 0, true, false, CameraType.TARGET);
			
			cube = new Cube(new MaterialsList( { all:new BitmapMaterial(new BitmapClass().bitmapData, true) } ));
			cube.x = 400;
			
			var planeMaterial:CompositeMaterial = new CompositeMaterial();
			planeMaterial.addMaterial(new ColorMaterial(0xFFFFFF, .5));
			planeMaterial.addMaterial(new WireframeMaterial(0xFFFFFF));
			
			plane = new Plane(planeMaterial, 1500, 1500);
			plane.material.doubleSided = true;
			plane.material.tiled = true;
			
			plane.pitch(90);
			
			scene.addChild(plane);
			scene.addChild(cube);
			
			renderer = new QuadrantRenderEngine(QuadrantRenderEngine.ALL_FILTERS);
			
			startRendering()
			
			stage.addEventListener(MouseEvent.CLICK, clickHandler);
			
		}
		
		private function clickHandler(e:MouseEvent):void 
		{
			if(renderer is QuadrantRenderEngine)
				renderer = new BasicRenderEngine();
			else
				renderer = new QuadrantRenderEngine(QuadrantRenderEngine.ALL_FILTERS);
		}
		
		protected override function onRenderTick(e:Event = null):void
		{
			cube.y = Math.sin(getTimer() / 400) * 400;
			cube.x = Math.cos(getTimer() / 400) * 100;
			cube.roll(1);
		
			// rotate by mouse interactive
			camera.x += (Math.sin(mouseX / stage.stageWidth * 3 * Math.PI) * 1200 - camera.x) * .1;
			camera.z += (Math.cos(mouseX / stage.stageWidth * 3 * Math.PI) * 1200 - camera.z) * .1;
			camera.y += (mouseY / stage.stageHeight * 2000 - 500 - camera.y) * .05;
			
			super.onRenderTick(e)
		}
	}
}

http://www.newflash3d.com---flash3D先锋队:北京贝武易科技公司】
有疑问请联系我QQ:363596350
分享到:
评论

相关推荐

    Papervision3D 教程打包下载

    10. **社区与资源**:Papervision3D拥有活跃的开发者社区,这个教程可能还包括关于社区资源、示例代码和插件的信息,这些都是继续学习和解决问题的重要途径。 通过深入学习这个Papervision3D教程,开发者能够熟练...

    PaperVision3D

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

    Papervision3D.Essentials

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

    Papervision3D-demo.rar_DEMO_Papervision3D demo_Papervision3D mxm

    - **Papervision3D_mxml**标签则意味着这些示例可能使用了MXML,这是一种XML语法,用于构建Flex应用程序,它可以简化UI组件的布局和事件处理。 4. **学习与实践** 通过研究这些源码,开发者不仅可以掌握...

    papervision3d_868.swc

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

    初识Papervision3D

    《初识Papervision3D》这篇博文和其中的POne.swf文件可能包含一个简单的3D示例,读者可以通过查看和运行这个文件更好地理解Papervision3D的工作原理。在学习过程中,结合源码分析和实际操作是掌握技术的关键步骤。 ...

    papervision3D

    这份文档可能是开发者学习和理解Papervision3D的关键资源,提供了详细的API参考、教程和示例代码,帮助开发者快速上手并深入掌握3D编程技巧。"单一文档"意味着所有的信息都集中在一个文件中,便于查找和阅读。"...

    Papervision3D

    此外,Papervision3D社区提供了大量的教程和示例,帮助初学者快速入门。 总的来说,Papervision3D为Flash开发者提供了一个强大的工具集,让他们能够在Web浏览器中实现引人入胜的3D交互体验,尽管随着WebGL和现代...

    《Papervision3D+Essentials》中文翻译

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

    Papervision3D的API

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

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

    "papervision3d.rar"可能包含的是PV3D的基础教程、示例项目以及更全面的API文档。通过这些资源,开发者可以系统地学习PV3D的架构和工作原理,理解如何构建复杂的3D场景和交互。 全景案例,如"Ball360.zip",是PV3D...

    Papervision3D.swc

    Papervision3D_2.0.869.swc

    papervision3d 精髓

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

    Flash3D引擎-Papervision3D

    "nochump"和"org"可能是项目的一部分,可能包含源代码、示例、库或者其他相关资源,用于帮助开发者更好地理解和使用Papervision3D。 总的来说,Papervision3D是Flash 3D开发者的强大工具,它为Flash平台带来了全新...

    Papervision3D_1_5 Flash3D运行环境

    在压缩包文件“PV3D_1_5”中,可能包含了Papervision3D的库文件、示例项目、文档资料和开发工具等。通过这些资源,开发者可以快速上手,深入理解并熟练掌握Papervision3D的使用方法。无论是初学者还是有经验的开发者...

Global site tag (gtag.js) - Google Analytics