Away3D学习笔记之一:创建贴图
2012-06-04 12:07
309 查看
程序用到的两张图片,图片大小必须是2的n次方,否则提示:
Invalid bitmapData: Width and height must be power of 2 and cannot exceed 2048
具体可参考 bitmapData 源代码
bitmapData构造函数
public function set bitmapData(value : BitmapData) : void { if (value == _bitmapData) return; if (!TextureUtils.isBitmapDataValid(value)) throw new Error("Invalid bitmapData: Width and height must be power of 2 and cannot exceed 2048"); invalidateContent(); setSize(value.width, value.height); _bitmapData = value; setMipMap(); }
首先创建 assets包,把需要的图片copy到assets包下。
图片添加后assets显示如下:
源代码:
package { import away3d.cameras.Camera3D; import away3d.containers.ObjectContainer3D; import away3d.containers.Scene3D; import away3d.containers.View3D; import away3d.entities.Mesh; import away3d.materials.TextureMaterial; import away3d.primitives.PlaneGeometry; import away3d.primitives.SphereGeometry; import away3d.textures.BitmapTexture; import flash.display.BitmapData; import flash.display.Sprite; import flash.display.Stage3D; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Vector3D; [SWF(width="1024", height="768", frameRate="30", backgroundColor="#00AAAA")] public class Triaxe extends Sprite { private var view: View3D; private var camera: Camera3D; private var scene: Scene3D; private var group: ObjectContainer3D; //嵌入外部图片资料 [Embed( "assets/earth.jpg" )] private var EarthImage: Class; [Embed( "assets/checker.jpg" )] private var CheckerImage:Class; [Embed( "assets/away3d.jpg" )] private var Away3DImage: Class; public function Triaxe() { //TODO: implement function super(); this.init(); } private function init(): void { trace( "init" ); this.init3D(); this.createScene(); this.addEventListener(Event.ENTER_FRAME, onEnterFrame); this.addEventListener(Event.RESIZE, onResize ); } private function init3D(): void { trace( "createScene" ); camera = new Camera3D(); scene = new Scene3D(); view = new View3D( scene, camera ); view.antiAlias = 4; addChild( view ); } private function createScene(): void { group = new ObjectContainer3D(); scene.addChild( group ); //创建一个地球模型 this.createEarth(); this.createAway3dNote(); } private function createEarth(): void { var earthBitmap: BitmapTexture = new BitmapTexture( new EarthImage().bitmapData ); var texture:TextureMaterial = new TextureMaterial( earthBitmap ); var sphGeo: SphereGeometry = new SphereGeometry(); var sphere: Mesh = new Mesh( sphGeo, texture ); sphere.position = new Vector3D( 200, 0, 0 ); //设置名字为 earth, 以后可以通过这个名字来访问地球 sphere.name = "earth"; trace( "sphere'name: " + sphere.name + "Position: " + sphere.position ); group.addChild( sphere ); } private function createAway3dNote(): void { var away3dBitmap: BitmapTexture = new BitmapTexture( new Away3DImage().bitmapData ); var texture: TextureMaterial = new TextureMaterial( away3dBitmap ); var planeGeo: PlaneGeometry= new PlaneGeometry(200, 200, 10, 10, true ); var away3dNote: Mesh = new Mesh( planeGeo, texture ); away3dNote.pitch( -90 ); away3dNote.name = "away3dnote"; trace( "plane'name: " + away3dNote.name ); group.addChild( away3dNote ); } private function onEnterFrame( evt: Event ):void { group.roll( 2 ); // group.pitch( 1 ); // group.yaw( 1 ); view.render(); } private function onResize( evt: Event ): void { } } }
如果程序中TextureMatrial 使用的是 BtimapMatrial ,可能会提示3604:use texture composition instead of inheritance..
运行结果:
参考资料:
http://blog.tartiflop.com/2008/11/first-steps-in-away3d-part-3-texture-mapping/
http://away3d.com/forum/viewthread/2088/#6544
相关文章推荐
- Unity Shader 学习笔记(十二) 创建程序纹理贴图
- 操作系统学习笔记(35)--创建新进程并调度
- cocos2d-x 3.1.1 学习笔记[21]cocos2d-x 创建过程
- openerp学习笔记 搜索视图(自己创建的、自己的、本部门的、本部门及下属部门的、今日的、日期从,日期至、多条件模糊搜索、or、and)
- Hawq学习笔记 --- 创建带有自增字段的table,并插入数据
- ajax学习笔记:原生态js创建
- 移动端跨平台开发框架 Cordova 学习笔记(一) 环境搭建及创建第一个 Cordova Android APP
- grails学习笔记-7、Domain创建过程中注意的问题
- Androidx学习笔记(48)--- 创建Activity
- Servlet学习笔记—继承HttpServlet类(创建Servlet的第二种方法)
- 【MongoDB学习笔记5】MongoDB中的创建、读取、更新、删除(CRUD)
- 小韵游戏开发学习笔记——第三期:Unity工程创建及界面功能的基本介绍
- CUBRID学习笔记 9 创建示例数据库
- Quick cocos2dx-Lua(V3.3R1)学习笔记(1)----创建新项目
- openGL之纹理贴图---openGL学习笔记(十三)
- C# step by step 学习笔记8 CHAPTER 9 使用枚举和结构创建值类型
- MySQL学习笔记3(创建、修改、删除表)
- iOS学习笔记-100.彩票15——设置4_设置和推送提醒控制器创建
- [Redhat学习笔记]:软RAID创建的方式以及分析。(手把手教你做RAID)
- Android Service学习笔记--创建Service