`
wsliujian
  • 浏览: 92646 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

PV3D处理3D矢量绘图与3D文本

阅读更多
Papervision3D主要以位图为基础,所以所有的渲染都被转换为位图。如果采取这种方式,呈现出外观
清晰光滑的文本会成为复杂问题,如在第四章所见的例子MovieAssetMaterial。渲染文本直接采取矢量图
的手段是个很好的选择。基于以下两个原因:
● 位图质量由分辨率决定,对其缩放会导致图片质量下降。矢量图的缩放却无图片质量损失。
● 在变化中的三角形中换行并保证良好的外观是很难的。为保证渲染,3D矢量文本不会在三角形中
绘制。
Papervision3D提供了一组可绘制矢量图形(vector shapes))(如简单图形,文本)的类。用于
绘制图形的方法名与FLASH的drawing API(如lineTo() 与 curveTo())相似,看来这些类便于使用,
所以建立3D矢量文本相当简单。
以下为即将讨论的主题:
● 建立3D矢量文本
● 建立在Papervision3D中使用的字体文件
● 绘制3D矢量图形与线条
● 添加交互到3D矢量图形与文本
本章主要关注已被集成进Papervision3D的VectorVision库。讨论该库的类后,将关注Lines3D类,
该类也能绘制3D线条(3D lines)。在VectorVision被集成前,该类已是Papervision3D的一部分。
某些API 类 属性。
VectorVision:3D矢量文本与3D矢量绘图
VectorVision,以ACTIONSCRIPT开发的类库,能够在Papervision3D中渲染矢量图形和给矢量图
形添加3D视图。这个项目是一个独立的类库,你能下载它和使用它。尽管如此,在2008年6月它被完全
集成进Papervision3D。
在理论上,使用矢量图形和文本意味着你可以绘制任何种类的矢量图,并给它们添加3D视图。本章
节关注:
● 建立3D矢量文本。
● 绘制3D矢量图形,比如线条,圆,矩形。
脑里一定要有3D字母可由3D矢量图形的形式——比如线条,圆,矩形组成的概念。以上的差异是因
为VectorVision在Papervision3D的实现所导致。该库提供一些类可以帮助你建立3D文本(3D text),
同时提供其它类帮助你建立矢量图形。
建立一个3D文本类的模版
因为我们发现3D文本的大量的例子大同小异,我们将见到类的模版,如下:
package
{
import flash.events.Event;
import org.papervision3d.materials.special.Letter3DMaterial;
import org.papervision3d.typography.Font3D;
import org.papervision3d.typography.Text3D;
import org.papervision3d.typography.fonts.HelveticaBold;
import org.papervision3d.view.BasicView;
public class Text3DTemplate extends BasicView
{
private var material:Letter3DMaterial;
private var font3D:Font3D;
private var text3D:Text3D;
private var easeOut:Number = 0.6;
private var reachX:Number = 0.5
private var reachY:Number = 0.5
private var reachZ:Number = 0.5;
public function Text3DTemplate()
{
stage.frameRate = 40;
init();
startRendering();
}
private function init():void
{
//code to be added
}
override protected function onRenderTick(event:Event = null):void
{
var xDist:Number = mouseX - stage.stageWidth * 0.5;
var yDist:Number = mouseY - stage.stageHeight * 0.5;
camera.x += (xDist - camera.x * reachX) * easeOut;
camera.y += (yDist - camera.y * reachY) * easeOut;
camera.z += (-mouseY * 2 - camera.z ) * reachZ;
super.onRenderTick();
}
}
}
定义一些将用于渲染方法的类的属性,而这些渲染方法用于随鼠标移动而改变镜头。同样,所导入的4个
类和定义的3个属性,能够让我们建立3D文本。
webdesign china
http://www.webdesign-cn.com
http://www.levs.cn
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics