• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
元某人的代码农场
博客园    首页    新随笔    联系   管理    订阅  订阅

PV3D学习笔记-光源

PV3D里的光源似乎只有点光源,PointLight3D,而且不能直接作用于物体,必须通过接受光源的材质来传递。

点光源的创建一条代码就够,引用路径org.papervision3d.lights.PointLight3D:

 

var lt:PointLight3D = new PointLight3D(true);

参数true是说明光源可见。

 

随后是创建一种接受光照的材质,PV3D里有这些材质可选:PhongMaterial,CellMaterial,GouraudMaterial

三种材质的创建参数都一样,第一个是光源对象,第二是光源颜色,第三个是氛围颜色,第四个是反光级别,典型代码如下:

var m:GouraudMaterial = new GouraudMaterial(lt,0xFFFFFF,0x000000,1);
然后就可以赋给各种模型,几何体了。

如果要使用贴图,也要光照,PV3D就不如Away3D灵活了,PV3D里必须创建一个着色器材质对象,同时包含贴图材质和光照材质,然后赋给模型,这样才能显示出来。三种光照材质都有对应的着色器材质:PhongShader,CellShader,GouraudShader,创建着色器材质的代码也相同。然后用ShaderMaterial对象混合两种材质即可。比如创建一个贴图材质和一个PhongMaterial,代码如下;

var mf:BitmapFileMaterial = new BitmapFileMaterial("test.jpg");
var ms:PhongShader = new PhongShader(lt);
var m:ShadedMaterial = new ShadedMaterial(mf, ms);
然后再将ShaderMaterial材质赋给模型。

 

需要说明的是,三个光照材质赋给立方体似乎有Bug,就是立方体的背光面边缘也莫名其妙地发光了,只有球体的光照效果最好。

还需要说明的是,上次的DAE模型导入方法还是不全对,Sketchup里把模型建的复杂一点,导入PV3D依然无法显示。

posted @ 2010-11-09 23:46  元某人  阅读(876)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3