7 Plane的装扮

来源:互联网 发布:淘宝耐克旗舰店 编辑:程序博客网 时间:2024/04/29 03:58

Plane的装扮

我们可以使用PV3D提供的Plane类来显示平面:

代码清单1

package{       import flash.display.Sprite;       import flash.events.Event;       import org.papervision3d.objects.primitives.Plane;       import org.papervision3d.view.BasicView;       /**        * ...        * @author hellopv3d        */       public class Main extends BasicView       {              private var plane:Plane;//定义一个平面变量              public function Main():void              {                     if(stage) init();                     else addEventListener(Event.ADDED_TO_STAGE, init);              }              private function init(e:Event = null):void              {                     removeEventListener(Event.ADDED_TO_STAGE,init);                     //entry point                    //创建一个平面对象,并与plane名字关联                     plane = new Plane(null, 320, 200, 2, 2);                     //将创建的平面对象加载进3D场景                     scene.addChild(plane);                     //渲染场景,startRendering继承自BasicView                     startRendering();              }       }   }


运行的效果为一个平面。测试运行多几次,观察平面的外观,可以知道平面仅仅是其“骨架”显示了不同的颜色。如何让平面多姿多彩呢?

WireframeMaterial

默认情况下,即:

new Plane(null, 320,200, 2, 2);

null表示创建的Plane对象外观为WireframeMaterial(线框材质),它仅仅使用随机的颜色来装扮三角面的线条。

我们也可以自己指定颜色来装扮线条:

//创建线框材质,颜色为黑色,透明度为1

var m:WireframeMaterial = new WireframeMaterial(0x000000,1);

plane = new Plane(m, 320, 200, 2, 2);//创建一个平面对象,并与plane名字关联

这样,每次测试运行的时候,颜色都为黑色。


ColorMaterial

ColorMaterial(颜色材质),它和线框材质类似。只不过ColorMaterial装扮的是整个面,WireframeMaterial装扮的为三角面的线。

var m:ColorMaterial = new ColorMaterial(0x000000,1);

plane = new Plane(m, 320, 200, 2, 2);//创建一个平面对象,并与plane名字关联

测试运行,平面被贴上了颜色。


BitmaoFileMaterial(位图文件材质)

除了颜色材质外,我们还可以在平面上贴图片,下面看看实施步骤。

步骤1:打开FlashDevelop软件,新建一个AS3项目(AS3 Project),命名为PlaneExample,并导入PV3D。

步骤2:在项目中创建一个文件夹,命名为assets,并放入一张图片,如下图所示。


步骤3:打开Main.as文件,输入以下代码。

package{       import flash.display.Sprite;       import flash.events.Event;       import org.papervision3d.materials.BitmapFileMaterial;       import org.papervision3d.materials.ColorMaterial;       import org.papervision3d.materials.WireframeMaterial;       import org.papervision3d.objects.primitives.Plane;       import org.papervision3d.view.BasicView;       /**        * ...        * @author hellopv3d        */       public class Main extends BasicView       {              private var plane:Plane;//定义一个平面变量                           public function Main():void              {                     if(stage) init();                     else addEventListener(Event.ADDED_TO_STAGE, init);              }                          private function init(e:Event = null):void              {                     removeEventListener(Event.ADDED_TO_STAGE,init);                     //entry point                     var m:BitmapFileMaterial = new BitmapFileMaterial("../assets/2.jpg");                     //创建一个平面对象,并与plane名字关联                    plane = new Plane(m, 1200, 882, 10, 10);                     //将创建的平面对象加载进3D场景                     scene.addChild(plane);                     //渲染场景                     startRendering();//继承自BasicView              }              //重写刷屏方法              override protected function onRenderTick(e:Event = null):void {                     //调用父类的刷屏方法,因为哪里有渲染器渲染场景的功能                    super.onRenderTick();                     //下面输入你的代码                     plane.rotationY+= 2;              }       }}


步骤4:测试运行,能看到下图效果。


当平面转到背面的时候,没有任何东西显示。那是因为默认情况下材质只贴正面,如果要想显示背面,只需在创建对象之后设置材质双面效果即可。如上面的例子,在创建Plane对象后加入:

plane = new Plane(m, 1200, 882, 10, 10);//创建一个平面对象,并与plane名字关联

//让对象背面贴上材质

plane.material.doubleSided =true;


原创粉丝点击