快速导航:   教程资源  | 经典范例  | 友情链接  | 联系我们  | 官方微博
登陆 | 注册

 flash 3d 研究所
flash3d 研究所 pv3d 教程 研究所小贴士: Flash11下任然应该以cpu下的效率开发为主










最近更新:
● ScottJep阁下在讨论区里 发表新主题“En France Sildenafil...”(13:57:30)
● ScottJep阁下在讨论区里 发表新主题“Sans Ordonnance Pril...”(13:25:06)
● Antuanettiz阁下在讨论区里 发表新主题“sex dating adult sit...”(13:01:14)
浏览主题:《贴图,更深一点》

《贴图,更深一点》
DDM君 (2012-03-16 05:50:42)

DDM君,Flab3D.com (允许转载,转载请注明)


我们的超简易教程里很少专门讲到贴图方面的问题,因为贴图要细说本身就不是一件简单的事情。在加上pv3d的各种贴图还没有具体很确定,到处都是bug和重复的东西。需要注意的是,我们这篇教程没有涉及到"材质",仅仅是贴图。(这句话是写给对三维了解稍稍多一些的朋友的,初学者朋友华丽的无视掉它就是)

基本原理
所有的贴图都是在用graphics.beginBitmapFill(),在填充三角形。如果有一些稍稍深入的actionscript3研究就会知道,beginBitmapFill()一共接受4个参数:
1) 用来填充的位图信息bitmapData(不知道什么是bitmapData的朋友可以查flash帮助,或去讨论区求助)
2) 一个控制这个位图位置,缩放,倾斜的二维3*3矩阵,
|a b tx |
|c d ty |
|0 0 1 |
a,d控制缩放,b,c控制倾斜,tx,ty控制位置。矩阵方面的变换我们会具体在《图形原理 矩阵变化》里分析。
3)位图是否重复并排tile排列
4)位图是否抗锯齿(抗锯齿非常消耗资源)
我们目前flash3d的贴图都是靠假设的三维数据换算成的各种信息来确定这个3*3矩阵,每1/30秒重复1次让场景中所有三角形都根据不同的3*3矩阵的变换填充一遍。


这次我们主要要介绍一下几种常用贴图类:
MaterialsList
当我们创建立方体,或者外部dae的时候,我们都用到了这个类。它到底是干什么的呢?
他就是把很多我们建立新各种贴图都加入到同一个像数组一样的材质群里。有什么意义呢?
在我们制作中,很多时候可能需要一个立方体每个面的贴图不一样,那么这里materialsList就是救世者了。
MaterialsList构造是可以用数组Array,也可以用Object。(不熟悉这两个的朋友可以去查flash帮助文档, 或者到讨论区询问),我们建议使用Object,也就是类是这样的申明
{all:贴图1, front:贴图2,back:贴图3……}
对了,上面的front,back,right,left等等object名就是专用于给立方体各个面添加不同的贴图。

MovieMaterial
这也是一个一定会对您帮助非常大的类,它让我们能使用MovieClip作为贴图。对了,任何movieclip能完成的效果,半透明,模糊,辉光甚至按钮,动画等等等等都能作为贴图
构建它,我们一般最常用前三个参数:
1)你要用来做贴图的MovieClip
2)是不是‘真的’透明(不是真的透明就是加点灰色而已=_=)
3)是不是动画

GouraudMaterial
这是最简单的能给与真实光影效果的贴图(注意,这是个‘贴图’,不是真的材质)
构建它需要三个参数:
1)光源,这个决定了亮部暗部的分布,就像光的效果一样。
2)光部的颜色,默认0xFFFFFF(在下不想讲解这个数据是什么意思了,这么大人了,这个该知道=_=)
3)暗部(普通)的颜色,默认0x000000
建立光源是非常简单的:
pointLight = new PointLight3D();
然后移动到需要的位置就可以了。

EnvMapMaterial
要模拟一个金属的反射效果(假的),最便宜的办法就是靠它。在下不想在这里过多讲解环境反射等等,知道它和一般贴图的区别是它在模型上的位置不是固定的就是了,它相对于‘世界’是固定的。这个类目前是不太完善的,只能说暂时能帮助你完成某些特殊需要的效果。
构造他需要4个参数
1)光源(还是它,构造方法上面说了^^),在下一直不理解为什么这个需要光源=_=,目前是应该是多余的。
2)lightMap,是一个bitmapData,也就是这个模型要反射的场景图片信息(不知道什么是bitmapData的朋友可以查flash帮助,或去讨论区求助)
3) backEnvMap,多数情况和上面的写同一个就是了。
4)本色,说实话,在下都没看出来目前这个有什么用,华丽的无视吧。

BitmapFileMaterial
还有当然就是这个我们可爱的天天都要用到烂的最方便的贴外部位图的类,一般来说这样写就可以了。
BitmapFileMaterial("地址");


要使用上面这些类,简单的在程序前面导入他们就可以了。
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.materials.*;
import org.papervision3d.materials.shadematerials.*;


如果我们要细细讲解各种贴图,映射,材质编写等等可能要讲到来年樱花盛开时了,所以这个教程就此打住。
贴图,材质在flash3d里还是很不完善的功能,所以您使用中会遇到成堆让你抓狂掀桌扯头发的问题,这时欢迎到我们的讨论区留言,大家帮忙共同研究一起掀桌吧~
希望大家有空能多多观看引擎代码,有一天成为独挡一面的大师。请继续加油!^_^



DDM君
Flab3D.com

Flash3d研究所推荐的Pv3d傻瓜包下载






flash 3d 研究所
(2008-11-27 18:58:20)
感觉只是介绍了一下贴图的类.
而没有讲解具体用法.


flash 3d 研究所
(2008-11-27 19:03:57)
连每个参数都写明确出来了,还不是用法吗?
如果看了这些还不能使用,请去恶补actionscript3基础知识。本来就是个中级教程。


flash 3d 研究所
(2008-11-27 19:09:08)
汗 毛不要这么说别人嘛 新人而已
如果讲的不大清楚,在下真是非常抱歉。主要是以为大家都从这么多次超简易教程里了解到最简单的声明办法了。

所有东西的声明都是这样的(确实是as3的基础,和pv3d没有关系的):
var 贴图1:GouraudMaterial=new GouraudMaterial(光源,颜色代号1,颜色代号2)

然后把这个
sphere=new Sphere(贴图1,....其他参数);就可以给球体换成这个贴图,这些在我们之前的教程都有写的。


flash 3d 研究所
(2008-11-28 02:07:58)
不错,真的挺好的,主要是原理讲清楚了,用起来也明白


flash 3d 研究所
(2008-11-28 17:51:05)
补充一个 NewX3D,WOW,papervision3D,还是Flash3D是什么关系?


flash 3d 研究所
(2008-11-28 17:52:27)
欢迎~
papervision3D是三维图形成像的;WOW物理引擎是自动模拟动力的
flash3d是所有用flash制作实时演算三维的相关程序的统称。

(以后请把和教程不大相关的问题发去讨论区,麻烦了)


flash 3d 研究所
(2008-11-28 18:04:29)

已经帮你回答在这里了,点击这里去



flash 3d 研究所
(2009-01-12 16:35:47)
写得so kawayi yo


flash 3d 研究所
(2009-01-15 15:39:37)
MovieMaterial和MovieAssetMaterial有什么区别?


flash 3d 研究所
(2009-01-19 15:21:29)
MovieAssetMaterial是MovieMaterial的子类
MovieMaterial从movieclip实例建立贴图
MovieAssetMaterial从库里的movieclip建立贴图


flash 3d 研究所
(2009-10-10 09:43:05)
楼主,我感激你。讲的非常清楚。


flash 3d 研究所
(2009-10-15 17:12:44)
新手请教:请问用3d max能自动导出模型的贴图吗?能的话怎么弄啊?拜托.........


flash 3d 研究所
(2009-11-02 21:59:18)
求助关于贴图阴影的问题。
我希望用用外部图片文件做贴图,但是有希望能在上面加上阴影效果,不知道有什么办法吗?我用了ShadedMaterial(bmpMaterial, shader);这样来混合阴影与图片,可是我不明白怎么才能将BitmapFileMaterial输出bitmapData,我看他有个bitmap属性,可是使用后返回永远是null


flash 3d 研究所
(2010-01-28 14:31:36)
Flash10里面有了UVT贴图,方便多了


flash 3d 研究所
(2010-02-25 11:18:30)
楼主,如果我想对导入的dae模型进行切换贴图要怎么办?如果用那种MaterialsList的话,导入的模型又没有像Cube那样6个面,要怎么来切换呢?



flash 3d 研究所
(2010-02-25 11:19:15)
普通的平面体,立文体的切换贴图我是会了,就是不会对导入模型进行切换贴图


评论人:
邮   箱: (填入邮箱,博客地址均可)

内   容: (广告和垃圾内容可能会被删除,望理解)
链接地址

验证码:(为防止机器人骚扰,请麻烦输入验证码^_^)
  

(目前需登陆方可发表)


不想添加了