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

Papervision3D(PV3D)笔记&教程(5)-线条

阅读更多

还是看下文档先:
Line3D:Package org.papervision3d.core.geom.renderables
Class public class Line3D
Inheritance Line3D AbstractRenderable
Implements IRenderable
  
Line3D is used by Lines3D to store and render the lines.
Line3D被用来在Lines3D中创建出可以被渲染的线条
 
构造函数
Line3D(instance:Lines3D, material:LineMaterial, size:Number, vertex0:Vertex3D, vertex1:Vertex3D)
instance:Lines3D — The containing Lines3D object
要加入到的Lines3D实例
material:LineMaterial — The material for the line
材质
size:Number — The line weight
粗细
vertex0:Vertex3D — The start vertex
起点
vertex1:Vertex3D — The end vertex
终点
  
再看下它常用的属性和方法:

cV : Vertex3D 控制点
material : LineMaterial 材质
size : Number 粗细
v0 : Vertex3D 起点
v1 : Vertex3D 终点
  
addControlVertex(cx:Number, cy:Number, cz:Number):void
给线条添加一个控制点,感觉好像就是贝塞尔曲线里面那种控制点
  
Lines3D:Package org.papervision3d.core.geom
Class public class Lines3D
Inheritance Lines3D Vertices3D DisplayObject3D DisplayObjectContainer3D flash.events.EventDispatcher
Subclasses UCS

  Lines3D是继承了DisplayObject3D,所以可以直接添加到scene或者其他3D显示对象容器中渲染显示。我们可以把Line3D的实例添加到Lines3D中(使用addLine()方法),也可以直接在Lines3D中画线(使用addNewLine()方法),前一种方法可以添加许多颜色不同的线,而后一种方法只可以画预先定义好材质的线
 
构造函数
Lines3D(material:LineMaterial = null, name:String = null)
material:LineMaterial (default = null)
使用addNewLine()方法添加进来的线条材质
name:String (default = null)
名字
 
属性
lines:Array Lines3D中所有线条的数组
 
方法
addLine(line:Line3D):void
添加一条线
addNewLine(size:Number, x0:Number, y0:Number, z0:Number, x1:Number, y1:Number, z1:Number):Line3D
添加一条线,使用Lines3D中定义的材质,默认为纯红色0xff0000
removeAllLines():void
删除里面的所有线条
removeLine(line:Line3D):void
删除线条
  
下面我们来看一段代码.
  首先我们用addLine()方法画圆,画完以后使用removeAllLines()方法删除刚才画的圆,然后又画了一条线,添加了一个控制点,同时开始用addNewLine()开始重新画圆。
运行代码看效果,然后自己动手做一些练习吧!

ActionScript代码:

package
{
	import flash.events.Event;
	import org.papervision3d.core.geom.Lines3D;
	import org.papervision3d.core.geom.renderables.Line3D;
	import org.papervision3d.core.geom.renderables.Vertex3D;
	import org.papervision3d.materials.special.LineMaterial;
	import org.papervision3d.view.BasicView;
 
	public class DrawCircle extends BasicView
	{
		private static var _segment:int=500;
		private static var _radius:Number=400;
		private static var _offset:int=0;
		private static var _beginVertex:Vertex3D;
		private static var _endVertex:Vertex3D;
		private static var _lineMaterial:LineMaterial;
 
		private var _lines:Lines3D;
 
 
		public function DrawCircle()
		{
			init();
		}
 
		private function init():void
		{
			createLines();
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
 
		private function createLines():void
		{
			_lines = new Lines3D();
			_lines.addNewLine(10, 0, _radius, 0, 0, -_radius, 0);
			scene.addChild(_lines);
 
			_lineMaterial = new LineMaterial(Math.random() * 0xffffff);
			_beginVertex = new Vertex3D(Math.sin(2*Math.PI*_offset/_segment)*_radius, Math.cos(2*Math.PI*_offset/_segment)*_radius, 0);
		}
 
		private function drawCircle():void {
			_offset += 1;
			_endVertex=new Vertex3D(Math.sin(2*Math.PI*_offset/_segment)*_radius, Math.cos(2*Math.PI*_offset/_segment)*_radius, 0);
			_lines.addLine(new Line3D(_lines, _lineMaterial, 10, _beginVertex, _endVertex));
			_beginVertex = _endVertex;
		}
 
 
		private function onEnterFrame(e:Event):void
		{
 
 
 
			if (_offset < _segment) {
				drawCircle();
			}else {
				_lines.pitch(1);
			}
 
			singleRender();
		}
 
 
 
	}
 
}

 效果图:

分享到:
评论

相关推荐

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

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

    Papervision3D 教程打包下载

    这个教程集合提供了深入学习Papervision3D所需的知识,包括PV3D的基本概念、对象模型、渲染技术以及与Flex框架的集成。 1. **Papervision3D基础**:Papervision3D是Flash平台上的3D引擎,它允许开发者在网页和桌面...

    papervision 3D-20-alpha-great-while

    ### Papervision 3D-20-alpha-great-while 关键知识点解析 #### 标题解析:“Papervision 3D-20-alpha-great-while” 此标题表明了文档是关于Papervision 3D的一个版本介绍,即2.0 Alpha Great While版本。...

    《Papervision3D+Essentials》中文翻译

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

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

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

    papervision3d_868.swc

    此外,官方文档、社区论坛和各种教程资源都是学习PV3D的好去处。 总结,通过MyEclipse、Flex和PV3D的结合,开发者可以创建出引人入胜的3D Web应用程序。虽然初学者可能会觉得3D编程有些复杂,但随着对PV3D的深入...

    Papervision3D-demo.rar_DEMO_Papervision3D demo_Papervision3D mxm

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

    Papervision3D.Essentials

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

    Papervision3D_1_5 Flash3D运行环境

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

    Papervision3D

    原文推荐了一个名为“pv3d傻瓜包”的资源包,这个包包含了Papervision3D的核心库文件和其他辅助工具。 2. **创建项目**:在Flash CS3或CS4中新建一个FLA文件,并将其命名为`test01.fla`。设置文件属性如下:帧频30...

    PaperVision3D

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

    papervision3D

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

    papervision3d 精髓

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

    Papervision3D的API

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

    papervision3D学习资料

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

    Papervision3D Essentials 中文PDF及书中源码

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

Global site tag (gtag.js) - Google Analytics