`
jy00314996
  • 浏览: 75706 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Papervision3D(PV3D)笔记&教程(6)-材质Material

阅读更多

PV3D中材质的种类非常多,都是MaterialObject3D的子类,每个显示对象都需要材质才能显示。我们先来大致看一下所有的材质类:

MaterialObject3D
————LineMaterial
————ParticleMaterial
————————BitmapParticleMaterial
————————MovieAssetParticleMaterial
————TriangleMaterial
————————AbstractLightShadeMaterial
————————————AbstractSmoothShadeMaterial
————————————————EnvMapMaterial
————————————————————CellMaterial
————————————————————PhongMaterial
————————————————GouraudMaterial
————————————FlatShadeMaterial
————————BitmapMaterial
————————————BitmapAssetMaterial
————————————BitmapColorMaterial
————————————BitmapFileMaterial
————————————BitmapViewportMaterial
————————————MovieMaterial
————————————————MovieAssetMaterial
————————————————VideoStreamMaterial
————————BitmapWireframeMaterial
————————ColorMaterial
————————CompositeMaterial
————————ShadedMaterial
————————WireframeMaterial
————VectorShapeMaterial
————————Letter3DMaterial

  上面列出了PV3D中所有的材质,大家可以先看一下,有个印象,以后用到的话方便查文档。下面看一下比较常用的几个。

ColorMaterial
  ColorMaterial是最常用的一个材质,它只有单纯的颜色和透明度,看下构造函数
ColorMaterial (color:Number = 0xFF00FF, alpha:Number = 1, interactive:Boolean = false)
主要说下interactive这个参数,如果你需要你的三维物体接收交互(例如鼠标点击)的话要将它设为true,还有就是经常问到的一个问题,怎么实现鼠标手型,首先要将viewport的interactive设为true,然后将材质的interactive也设为true以后,在显示对象上监听InteractiveScene3DEvent.OBJECT_OVER事件,监听器中将viewport的buttonMode设为true(前面说过viewport是Sprite的子类,所以可以设置buttonMode),鼠标离开事件里再设为false就可以了,关于交互以后会专门学习下给大家分享

package  
{
	import gs.TweenLite;
	import org.papervision3d.events.InteractiveScene3DEvent;
	import org.papervision3d.materials.ColorMaterial;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.view.BasicView;
 

	public class InteractivePlane extends BasicView
	{
		private var _plane:Plane
		private var _material:ColorMaterial;
 
		public function InteractivePlane() 
		{
			super();
			init()
		}
 
		private function init():void
		{
			initPanel();
			startRendering();
		}
 
		private function initPanel():void
		{
 
			_material = new ColorMaterial(0x1D9DAD, 1, true);
			_material.interactive = true;
			_plane = new Plane(_material,500,500);
			_plane.rotationX = 45;
 
			scene.addChild(_plane);
			viewport.interactive = true;
 
			_plane.addEventListener(InteractiveScene3DEvent.OBJECT_OVER, onOver);
			_plane.addEventListener(InteractiveScene3DEvent.OBJECT_OUT, onOut);			
			_plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onClick);			
 
		}
 
		private function onClick(e:InteractiveScene3DEvent):void 
		{
			_material.fillColor = Math.random() * 0xffffff;
		}
 
		private function onOver(e:InteractiveScene3DEvent):void 
		{
			viewport.buttonMode = true;
			TweenLite.to(_plane, 1, { rotationX:0 } );
		}
 
		private function onOut(e:InteractiveScene3DEvent):void 
		{
			viewport.buttonMode = false;
			TweenLite.to(_plane, 1, { rotationX:45 } );
		}
 
 
	}
 
}

 

代码中创建了一个平面,然后给它了一个ColorMaterial的材质,然后监听鼠标的OVER,OUT,CLICK事件,当鼠标移上去的时候平面转动一定角度并出现手型,移开的话转动复原手型消失,当点击的时候给ColorMaterial的fillColor属性重新赋值改变平面颜色。
 
  另外比较常用的还有位图材质BitmapMaterial和带阴影的材质FlatShadeMaterial,使用方法网上都很多大家google一下。
  目前蚂蚁的详细PV3D教程就告一段落,基础的已经基本讲得差不多了,后面还会有一些高级应用的专项笔记教程。现在你已经可以创造自己的3D世界啦~发挥你的想象力,have a try~

分享到:
评论

相关推荐

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

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

    Papervision3D 教程打包下载

    6. **PV3D+Flex集成**:Flex是一个用于构建富互联网应用程序(RIA)的开发框架,与Papervision3D结合使用,可以方便地创建具有3D元素的Flex应用。Flex的组件和事件模型可以与Papervision3D的3D元素无缝集成,提供更...

    papervision 3D-20-alpha-great-while

    这一章节将详细介绍如何在Papervision 3D中应用不同的材质和纹理效果。 **5. 3D中的基本运动** 对于动态3D场景来说,物体的运动是必不可少的。这一部分将涵盖如何使用Papervision 3D实现物体的移动、旋转等基本...

    《Papervision3D+Essentials》中文翻译

    Papervision3D(简称PV3D)是Flash平台上最早的3D渲染引擎之一,它为开发者提供了在Web浏览器中构建三维互动体验的能力。这本书的中文翻译版本,对于国内的开发人员来说,无疑是一个学习PV3D技术的重要资源。 1. **...

    PV3D学习资料-----PV3D Essentials(汉语)

    PV3D,全称为Papervision3D,是一款强大的开源3D图形引擎,专为Adobe Flash平台设计。它允许开发者在网页上创建复杂的3D场景,游戏以及交互式应用程序,从而突破了传统2D Flash的限制。PV3D Essentials是一份专门...

    Papervision3D-demo.rar_DEMO_Papervision3D demo_Papervision3D mxm

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

    papervision3d_868.swc

    3. 光照与材质:PV3D提供了多种光照模型(如点光源、平行光)和材质类型(如Lambert、Phong),能够模拟真实世界的光影效果。 4. 视图和投影:通过设置摄像机的视口和投影方式,可以控制用户在3D场景中看到的内容。...

    Papervision3D.Essentials

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

    Papervision3D

    Papervision3D是一个基于ActionScript 3.0的开源库,专为在Adobe Flash平台上构建三维(3D)图形和应用程序而设计。它利用了Flash Player的硬件加速功能,使得在Web浏览器中实现复杂的3D场景成为可能。Papervision3D...

    Papervision3D的API

    Papervision3D(PV3D)是Flash平台上的一款强大的3D图形库,它允许开发者在网页上创建丰富的、交互式的三维图形和应用程序。本篇文章将深入探讨Papervision3D的API,帮助读者理解并掌握这个工具的核心概念和功能。 ...

    PaperVision3D

    关于文件名列表中的"PaperVision3D",这可能是一个包含完整示例代码、文档或者教程的资源包。通常,这样的资源会帮助开发者快速上手,了解如何初始化场景、加载模型、设置动画以及处理用户交互等。开发者可以通过...

    papervision3D学习资料

    - **博客和文章**: 各种在线教程和博客文章提供了丰富的学习材料,解释了PV3D的基本概念和高级技巧。 - **示例代码**: 学习资料中的例子可以帮助理解和实践Papervision3D的各种功能。 - **社区支持**: 论坛和社区...

    papervision3D

    描述中的“FLASH,FLEX最新PV3D帮助文档”意味着这个压缩包包含的是Papervision3D的最新版官方文档。这份文档可能是开发者学习和理解Papervision3D的关键资源,提供了详细的API参考、教程和示例代码,帮助开发者快速...

    papervision3d 精髓

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

    学习PaperVision3D随行笔记,基础知识

    PaperVision3D(PV3D)是一款强大的3D图形引擎,专为Adobe Flash平台设计,旨在简化三维场景的创建与渲染。PV3D的核心在于其对3D场景、相机、渲染引擎以及各种3D对象的支持,使得开发者能够轻松地在Flash环境中构建...

    Papervision3D Essentials 中文PDF及书中源码

    《Papervision3D Essentials》是一本深入探讨Papervision3D(PV3D)的权威指南,中文版的出现使得更多中国开发者能够掌握这个强大的三维渲染库。Papervision3D是一个用于Adobe Flex和Flash平台的开源项目,它为Web...

Global site tag (gtag.js) - Google Analytics