查看: 5940|回复: 5
打印 上一主题 下一主题

away3d4.0 新手入门系列教程 第二讲 light (灯光)

[复制链接]

10

主题

3

听众

760

积分

初级设计师

Rank: 3Rank: 3

纳金币
3
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-8-22 20:14:13 |只看该作者 |倒序浏览
今天我们就讲讲away3d世界里的灯光。

away3d里的灯光分为2中。平行光(DirectionalLight)和点光源(PointLight)。我画图来说明

1.DirectionalLight



上图就是平行光.这个可以用来模拟我们平常的太阳光。平均的光照强度和方向。

平行光的创建方法为

var dlirectionalLight=new DirectionalLight();

dl的构造函数里三个值 用来描述平行光的方向 x y z 其范围都为 -1 到1。



2PointLight;





(我的图画的很粗糙 各位将就了)



PointLight经常用来模拟我们生活中的 蜡烛 灯泡这样的小型光源。

var _plointLight=new PointLight();

点光源不存在方向问题。



在3D世界里 我们通常不会只用一盏灯去模拟所有的光源。Away3d这里为我们提供了一个StaticLightPicker方法。我们可以将灯光放置于这个灯光容器里。 我们要将灯光用在贴图上时候只需要调用 StaticLightPicker 方法即可 这样可以减少我们的代码量

代码:var _light:StaticLightPicker=new StaticLightPicker([_dl,_pl]);   



然后我们需要将灯光运用在这个世界里

模型的贴图可以受到光的影响 不管是TextureMaterial还是ColorMaterial都有lightPicker属性。我们只需要将StaticLightPicker赋予给它即可例如 我们拿上一节的例子来写

_sphereMesh.material.lightPicker=_light;这样我们的模型就可以受到光照的影响了



我们可以建立个plane做地面来打开阴影 这样感觉就更酷了。阴影的添加方式是

planeColor.shadowMethod=new FilteredShadowMapMethod(_dl);

好了 我们输出渲染就可以看到下图





全部的代码为

package  {



import flash.display.MovieClip;

import away3d.containers.View3D;

import away3d.containers.Scene3D;

import away3d.cameras.Camera3D;

import flash.events.Event;

import flash.display.Sprite;

import away3d.materials.ColorMaterial;

import away3d.primitives.SphereGeometry;

import away3d.entities.Mesh;

import away3d.lights.DirectionalLight;

import away3d.materials.lightpickers.StaticLightPicker;

import away3d.primitives.PlaneGeometry;

import flash.geom.Vector3D;

import away3d.lights.PointLight;

import away3d.materials.methods.FilteredShadowMapMethod;




public class Main extends  Sprite {

  

  private var _view:View3D;

  

  private var _scene:Scene3D;

  

  private var _camera:Camera3D;

  

  private var _material:ColorMaterial;

  

  private var _sphere:SphereGeometry;

  

  private var _sphereMesh:Mesh;

  

  private var _dlirectionalLight;

  private var _plointLight;

  

  private var _light:StaticLightPicker;

  
  

  public function Main()

  {

   _view=new View3D();

   addChild(_view);

   

   _scene=new Scene3D();

   _view.scene=_scene;
   

   _camera=new Camera3D();

   _view.camera=_camera;

   

   _camera.y=500;

   _camera.lookAt(new Vector3D(0,0,0))

   
   _material=new ColorMaterial(0xffffff);

   _sphere=new SphereGeometry(100,32,32);

   _sphereMesh=new Mesh(_sphere,_material);

   _view.scene.addChild(_sphereMesh);

   

   var planelaneGeometry=new PlaneGeometry(500,500);

   var planeColor:ColorMaterial=new ColorMaterial(0xffffff);

   var planeMesh:Mesh=new Mesh(plane,planeColor);

   planeMesh.y=-100;

   _view.scene.addChild(planeMesh);

   

   _dl=new DirectionalLight(-1,-.5);

   _dl.diffuse=.8

   _dl.ambient=.05

   _dl.castsShadows=***e;

   _pl=new  PointLight();

   _light=new StaticLightPicker([_dl,_pl]);

   

   planeColor.shadowMethod=new FilteredShadowMapMethod(_dl)

   

   _sphereMesh.material.lightPicker=_light;

   planeMesh.material.lightPicker=_light;

   

   _view.scene.addChild(_dl);

   this.addEventListener(Event.ENTER_FRAME,enterFrameFunction)

  }

  

  private function enterFrameFunction(evt:Event):void

  {

   _view.render();

  }

}



}





(本人第一次写教程,有不足的地方欢迎大家提出来。有疑问欢迎跟帖)



今天的这一讲结束了 下一节的要点 位图贴图(BitmapMaterial)

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

wsk    

0

主题

1

听众

24

积分

设计初学者

Rank: 1

纳金币
24
精华
0

活跃会员 灌水之王

沙发
发表于 2012-9-7 11:58:00 |只看该作者
持续关注中!!!!!!!!!!!!!!!!
回复

使用道具 举报

0

主题

1

听众

123

积分

设计实习生

Rank: 2

纳金币
102
精华
0

最佳新人

板凳
发表于 2013-1-27 07:42:52 |只看该作者
   _sphereMesh.material.lightPicker=_light;
   planeMesh.material.lightPicker=_light;                  这两个大概意思懂。但是具体的不懂。能揭晓一下吗


回复

使用道具 举报

0

主题

0

听众

24

积分

设计初学者

Rank: 1

纳金币
24
精华
0
地板
发表于 2013-2-28 20:55:57 |只看该作者
必须顶~必须顶~必须顶~必须顶~必须顶~必须顶~必须顶~必须顶~必须顶~必须顶~必须顶~必须顶~
回复

使用道具 举报

long    

0

主题

0

听众

24

积分

设计初学者

Rank: 1

纳金币
24
精华
0
5#
发表于 2013-3-1 14:11:17 |只看该作者
ddddddddddddddddd
回复

使用道具 举报

0

主题

0

听众

18

积分

设计初学者

Rank: 1

纳金币
1
精华
0
6#
发表于 2013-10-14 23:13:26 |只看该作者
D叫兽,继续加油发!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-15 06:16 , Processed in 0.261464 second(s), 36 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部