利用扩大模型以及摄像机空间法线贴图来实现盔甲的发光。
2005-02-22 20:30
465 查看
老大要我看了段MU奇迹的游戏中视频,说里面盔甲的发光效果很炫。
初一看,有点摸不着头脑,不知道是如何做的,于是就坐在显示器前一次又一次的看着模型发呆,后来发现在奇迹中的盔甲有一种水晶般的光,随着法线的变化在变化,而且有一定的体积感。沉思一阵后,想出以下方法:
1,首先按照缺省的渲染方式渲染原模型
2,把需要加高光的模型中的每个顶点沿法线方向拉伸一定的距离
3,把拉伸后的模型的贴图换成一张颜色渐进的贴图
4,将贴图的D3DTSS_TEXCOORDINDEX设置为D3DTSS_TCI_CAMERASPACENORMAL,并且把D3DTSS_TEXTURETRANSFORMFLAGS设置为D3DTTFF_COUNT2
5,设置渲染选项,打开alphablending将src和dest blend都设置为d3dblend_one
6,开始渲染
得到了以下效果:
其中的披风贴图坐标有些问题,而且是针对整个模型进行发光处理的,所以看起来效果并不是只针对盔甲等装备来的。
其原理就是渲染两次,第一次渲染原图,第二次将模型放大了贴上渐变的贴图并设置贴图方式为摄象机空间法线方式,意思就是模型的贴图坐标会根据法线和摄象机的位置变化而变化,在做一些动作的时候就会出现闪闪发光的效果了。
初一看,有点摸不着头脑,不知道是如何做的,于是就坐在显示器前一次又一次的看着模型发呆,后来发现在奇迹中的盔甲有一种水晶般的光,随着法线的变化在变化,而且有一定的体积感。沉思一阵后,想出以下方法:
1,首先按照缺省的渲染方式渲染原模型
2,把需要加高光的模型中的每个顶点沿法线方向拉伸一定的距离
3,把拉伸后的模型的贴图换成一张颜色渐进的贴图
4,将贴图的D3DTSS_TEXCOORDINDEX设置为D3DTSS_TCI_CAMERASPACENORMAL,并且把D3DTSS_TEXTURETRANSFORMFLAGS设置为D3DTTFF_COUNT2
5,设置渲染选项,打开alphablending将src和dest blend都设置为d3dblend_one
6,开始渲染
得到了以下效果:
其中的披风贴图坐标有些问题,而且是针对整个模型进行发光处理的,所以看起来效果并不是只针对盔甲等装备来的。
其原理就是渲染两次,第一次渲染原图,第二次将模型放大了贴上渐变的贴图并设置贴图方式为摄象机空间法线方式,意思就是模型的贴图坐标会根据法线和摄象机的位置变化而变化,在做一些动作的时候就会出现闪闪发光的效果了。
相关文章推荐
- [导入]利用扩大模型以及摄像机空间法线贴图来实现盔甲的发光。
- Java多线程15:Queue、BlockingQueue以及利用BlockingQueue实现生产者/消费者模型
- ios开发runtime学习五:KVC以及KVO,利用runtime实现字典转模型
- Java多线程15:Queue、BlockingQueue以及利用BlockingQueue实现生产者/消费者模型
- Java多线程15:Queue、BlockingQueue以及利用BlockingQueue实现生产者/消费者模型
- Queue、BlockingQueue以及利用BlockingQueue实现生产者/消费者模型
- Java多线程系列-Queue、BlockingQueue以及利用BlockingQueue实现生产者/消费者模型
- Java多线程15:Queue、BlockingQueue以及利用BlockingQueue实现生产者/消费者模型
- Qt中Ui名字空间以及setupUi函数的原理和实现
- 利用RadioButton以及ViewPager实现仿小米联系人页面
- 利用mmap实现用户空间与内核空间的共享内存通信
- 用js实现分页功能以及利用xml实现分页功能——数据岛
- 24_ElasticSearch TF&IDF算法以及向量空间模型
- 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内。以及两点间的测距功能
- Canvas与Image互相转换示例以及利用该技术实现微信长按自动识别二维码功能
- java@ 利用ArrayList实现dijkstra算法以及topological 排序算法(java.util.ArrayList)
- python 利用sklearn自带的模块 快速简单实现文章的 tfidf向量空间的表示
- C++中的虚继承,以及利用虚继承实现的sealed类
- ASE15.0中利用代理表实现统计用户表存储空间大小的功能
- Qt中利用TCP实现多个客户端之间相互发送消息系以及服务器的群发信息