Away3D实例教程 - 贴图(EnviroBitmapMaterial)
2009-06-01 22:33
302 查看
本篇包含内容:
3D基本元素-圆环
环境位图材质EnviroBitmapMaterial。
转载请注明出处:nooon.cnblogs.com
本例会用到的图片:
先看本例子最终效果:点击观看
从例子里我们看到,圆环反射环境里的金色光泽,但你细心观察可以发现不是真的实时反射。
再看完整代码(Flex):
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
3D基本元素-圆环
环境位图材质EnviroBitmapMaterial。
转载请注明出处:nooon.cnblogs.com
本例会用到的图片:
先看本例子最终效果:
从例子里我们看到,圆环反射环境里的金色光泽,但你细心观察可以发现不是真的实时反射。
再看完整代码(Flex):
package
{
importaway3d.cameras.HoverCamera3D;
importaway3d.containers.ObjectContainer3D;
importaway3d.containers.View3D;
importaway3d.core.math.Number3D;
importaway3d.core.utils.Cast;
importaway3d.materials.BitmapMaterial;
importaway3d.materials.EnviroBitmapMaterial;
importaway3d.primitives.Plane;
importaway3d.primitives.Sphere;
importaway3d.primitives.Torus;
importflash.display.Sprite;
importflash.events.Event;
importflash.events.MouseEvent;
[SWF(width="600",height="500",frameRate="60",backgroundColor="#FFFFFF")]
publicclassenviroBitmapMaterialextendsSprite
{
//定义变量
privatevarview:View3D;
privatevarcam:HoverCamera3D;
privatevarplaneMaterial:BitmapMaterial;
privatevartorusMaterial:EnviroBitmapMaterial;
privatevarplane:Plane;
privatevargroup:ObjectContainer3D;
privatevartorus:Torus;
privatevarmouseDown:Boolean;
privatevarlastMouseX:Number;
privatevarlastMouseY:Number;
privatevarlastPanangle:Number;
privatevarlastTiltangle:Number;
privatevarcameraSpeed:Number;
//嵌入图片,goldbackground.jpg用于背景及环境图;adobe_ico.jpg是圆环的皮肤
[Embed(source="resources/goldbackground.jpg")]privatevargoldImage:Class;
[Embed(source="resources/nooon.jpg")]privatevarskinImage:Class;
publicfunctionenviroBitmapMaterial()
{
//新建各贴图材质,备用。
createMaterial();
//inital3D
init3D();
//create3DScene
createScene();
//addLsitener
addEventListener(Event.ENTER_FRAME,update);
stage.addEventListener(MouseEvent.MOUSE_DOWN,m_down_h);
stage.addEventListener(MouseEvent.MOUSE_UP,m_up_h);
}
privatefunctioncreateMaterial():void
{
//背景的贴图材质为BitmapMaterial
planeMaterial=newBitmapMaterial(Cast.bitmap(newgoldImage()),{smooth:true,precision:5});
//圆环要反射环境,用EnviroBitmapMaterial
//EnviroBitmapMaterial构造函数EnviroColorMaterial(color:*,enviroMap:BitmapData,init:Object=null)
//第二个参数必须是BitmapData,用于设置反射环境图,本例与背景平面用同一张图goldBackground
torusMaterial=newEnviroBitmapMaterial(Cast.bitmap(newskinImage()),Cast.bitmap(newgoldImage()));
//设置EnviroBitmapMaterial的反射系数,数值为0~1,自行设定数值大小看看效果。
torusMaterial.reflectiveness=0.4;
//在这里顺便设置下后面要用到的一个参数cameraSpeed,这个参数影响:拖动鼠标是整个场景旋转速度。
cameraSpeed=.3;
};
privatefunctioninit3D():void
{
cam=newHoverCamera3D({focus:300});
cam.lookAt(newNumber3D(0,0,0));
cam.distance=900;
cam.panangle=cam.targetpanangle=30;
cam.tiltangle=cam.targettiltangle=15;
cam.mintiltangle=5;
view=newView3D({camera:cam,x:300,y:250});
addChild(view);
};
privatefunctioncreateScene():void
{
group=newObjectContainer3D();
//创建背景平面
plane=newPlane({material:planeMaterial,width:250,height:250,segmentsW:8,segmentsH:8});
//创建圆环
//radius:圆环总半径;tube:环的圆管半径
//所使用的材质为torusMaterial,它是EnviroBitmapMaterial
torus=newTorus({material:torusMaterial,radius:30,tube:20,segmentsR:15,segmentsT:12});
torus.y=55;
view.scene.addChild(group);
group.addChild(plane);
group.addChild(torus);
};
privatefunctionupdate(e:Event):void
{
if(mouseDown)
{
cam.targetpanangle=cameraSpeed*(stage.mouseX-lastMouseX)+lastPanangle;
cam.targettiltangle=cameraSpeed*(stage.mouseY-lastMouseY)+lastTiltangle;
};
torus.yaw(-1);
torus.pitch(-1);
torus.roll(-1);
cam.hover();
view.render();
};
privatefunctionm_down_h(e:MouseEvent):void
{
mouseDown=true;
lastMouseX=stage.mouseX;
lastMouseY=stage.mouseY;
lastPanangle=cam.targetpanangle;
lastTiltangle=cam.targettiltangle;
};
privatefunctionm_up_h(e:MouseEvent):void
{
mouseDown=false;
};
}
}
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
相关文章推荐
- Away3d实例教程 - 贴图(texture mapping)
- Away3D实例教程 - 贴图(Dot3BitmapMaterial)
- Away3D4.0入门教程(2)--那些贴图的Method
- [Away 3D] Away3D4.0入门教程(2)--那些贴图的Method
- 在Android中扫描wifi热点演示实例教程
- android ListView实现圆角实例教程二
- iOS基础教程-SQLite数据库操作(二简单实例学生信息增删改查数据库操作)
- 实例教程五:采用SharedPreferences保存用户偏好设置参数
- 实例教程十三:拍照
- Android 传感器(Sensor)API教程 (六) 加速度传感器运用实例
- C# 2.0 套接字编程实例初探_C#教程
- iptables详细教程:基础、架构、清空规则、追加规则、应用实例
- video4linux(v4l)使用摄像头的实例基础教程
- Java Web项目中实现文件下载功能的实例教程
- CSS3实例教程:详解calc()函数功能
- C#基础之Lambda表达式用法实例教程
- Expression Blend实例中文教程(1) - 开篇
- XAML实例教程系列 - 资源(Resources)
- Spring MVC+FastJson+hibernate-validator整合的完整实例教程
- 046_《中文Delphi实例全解教程》