问题:怎样才能为我的创建的物体创建纹理贴图?
- p
- package
- {
- import flash.display.Sprite;
- import flash.display.Bitmap;
- import flash.display.BitmapData;
- import flash.events.*;
- import sandy.core.Scene3D;
- import sandy.core.scenegraph.*;
- import sandy.core.data.*;
- import sandy.materials.*;
- import sandy.materials.attributes.*;
- import sandy.primitive.*;
- public class MyTexture extends Sprite
- {
- private var scenne:Scene3D;
- private var camera:Camera3D;
- private var img:BitmapData=new BrickWall(0,0);
- private var bitmap:Bitmap=new Bitmap(img);
- private var plane:Plane3D;
- public function MyTexture()
- {
- camera=new Camera3D(400,300);
- camera.z=-400;
- var root:Group=createScene();
- scenne=new Scene3D("scene1",this,camera,root);
- addEventListener(Event.ENTER_FRAME,Run);
- }
- private function createScene():Group
- {
- var g:Group=new Group();
- var material:BitmapMaterial=new BitmapMaterial(bitmap.bitmapData);
- var ape:Appearance=new Appearance(material); //添加材质
- plane= new Plane3D( "thePlane",300, 300 );
- plane.appearance=ape;//表面贴图
- g.addChild(plane);
- return g;
- }
- private function Run(event:Event):void
- {
- scenne.render();
- //plane.rotateX+=5;
- plane.rotateY+=1;
- //plane.roll+=5;
- }
- }
- }
这里所做的事情并不多,制作思路很简单,首先导入贴图所需要的类库
- import sandy.core.Scene3D;
- import sandy.core.scenegraph.*;
- import sandy.core.data.*;
- import sandy.materials.*;
- import sandy.materials.attributes.*;
- import sandy.primitive.*;
- 其中 import sandy.materials.*;
- import sandy.materials.attributes.*;
- 是负责材质方面工作。我们要关注这个包里面的方法方便我们调用。
制作思路:
老的思路,创建一个摄影机,创建一个场景,创建一个平面,这个平面是为我们贴图所用的。
-
private var img:BitmapData=new BrickWall(0,0);
-
- private var bitmap:Bitmap=new Bitmap(img);
看这里面
- var material:BitmapMaterial=
- var ape:Appearance=new Appearance(material); //添加材质
- plane= new Plane3D( "thePlane",300, 300 );
- plane.appearance=ape;//表面贴图
- 赋给了纹理给平面后,为了显示出来,最后一步骤就是场景渲染。
- scenne.render();
综述过程:
创建摄影机,创建带摄影机的场景,为场景场景对象物体,(还可为对象物体添加一个些简单的效果)渲染场景。