Away3d材质实战——旋转的地球
发布时间:2020-12-15 06:41:53 所属栏目:百科 来源:网络整理
导读:这篇文章已经过期,请使用最新版的Away3d并查看相关资料 使用现有的flash player API能够实现三维旋转的地球,但是比较麻烦,主要使用的是flash player10新增加的绘图API drawTriangles ,这里我使用Away3d来实现旋转的地球。 Away3d能使用多种材质,都在Away
这篇文章已经过期,请使用最新版的Away3d并查看相关资料 使用现有的flash player API能够实现三维旋转的地球,但是比较麻烦,主要使用的是flash player10新增加的绘图API drawTriangles,这里我使用Away3d来实现旋转的地球。 Away3d能使用多种材质,都在Away3d.materials.*包里面,这个包里面有不下20种材质,它能够使用位图、视频、外部swf文件以及线框等等来作为材质。而且在使用swf作为材质时,还能够保有其交互性,可以说是只有你想不到,没有你做不到。但是不同的材质对系统需求不同,毫无疑问,视频文件以及swf文件作为材质消耗系统资源要比位图、线框材质多一些,废话少说下面看代码(地球的贴图文件我会传上来,大家可以试试): package { import away3d.cameras.HoverCamera3D; import away3d.containers.View3D; import away3d.core.utils.Cast; import away3d.materials.BitmapMaterial; import away3d.primitives.Sphere; import flash.display.Sprite; import flash.events.Event; /** * ... * @author aisajiajiao * 旋转的地球 */ public class MaterialDemo extends Sprite { //这是我机器上的文件路径,在自己实验的时候一定要确保路径正确 [Embed(source="../assets/map.jpg")] private var Earth:Class; private var _view:View3D; private var _camera:HoverCamera3D; private var _sphere:Sphere; private var _material:BitmapMaterial; public function MaterialDemo() { //配置摄像机 _camera = new HoverCamera3D(); //Camera的仰角,单位度而非弧度,默认为0 _camera.tiltAngle = 10; //Camera在y轴上的旋转角度,默认为0单位也是度 _camera.panAngle = 180; //摄像头与指定目标之间的距离,默认是800 _camera.distance = 1000; _view = new View3D(); _view.x = stage.stageWidth / 2; _view.y = stage.stageHeight / 2; _view.camera = _camera; addChild(_view); //使用Cast类将位图数据转化为BitmapData数据,Cast类是工具类,使用很方便实现各种数据之间的转化 //当然你可以使用原生的Bitmap类来获得BitmapData数据. _material = new BitmapMaterial(Cast.bitmap(Earth)); _sphere = new Sphere(); _sphere.radius = 200; //设置分段数 _sphere.segmentsH = 20; _sphere.segmentsW = 20; //设置材质,将地球贴图复制给球体 _sphere.material = _material; //添加至舞台 _view.scene.addChild(_sphere); addEventListener(Event.ENTER_FRAME,onEnterFrame); } private function onEnterFrame(e:Event):void { //下面一句被注释掉了,它确保的是地球自身在旋转(自西向东转) //_sphere.rotationY--; //hover()函数在每一帧上刷新显示,使之产生动画,如果将其注释,则不会产生动画,大家可以试试 _camera.hover(); //根据鼠标的位置旋转地球 _camera.panAngle += (stage.mouseX - stage.stageWidth / 2)/60; _view.render(); } } } 效果截图: 贴图文件: Away3d坐标系解析(与Flash二维坐标系不同): (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – 何时适合使用CacheItemRemovedCallback?
- Flex Base64 md5 123456后得到4QrcOUm6Wau+VuBX8g+IPg==
- ruby-on-rails – Rails Checkout SSL heroku
- 4.3 创建拥有任意数量参数的函数 [Swift原创教程]
- 总是在主线程上破坏C静态变量吗?
- flex&bison
- ruby-on-rails – 在Ruby on Rails中引用当前用户
- [BerkeleyDB&SQLLite]BerkeleyDB与SQLite评测对比
- 未能锁定文件无法打开磁盘..\*.vmdk或者某一个快照所依
- [NoSQL] 海量数据解决思路之Hash算法