Normap的初识
来源:互联网 发布:网页设计和淘宝美工 编辑:程序博客网 时间:2024/05/18 10:04
今天写了一个NormapXModel类,用来创建带有法线贴图效果的模型。在写完之后还是发现类的封装有很多不合理的地方。
#pragma once
#include <windows.h>
#include <d3dx9.h>
#include <strsafe.h>
#include "Util.h"
class NormapXModel
{
public:
LPDIRECT3DDEVICE9 pd3dDevice;
LPD3DXMESH mesh; //载入时用到
ID3DXMesh* finalMesh; //接收最后指定格式的mesh
D3DMATERIAL9* materials;
LPDIRECT3DTEXTURE9* textures;
IDirect3DTexture9* normaps;
DWORD materialNum;
D3DXMATRIX worldMatrix; //世界矩阵
D3DXVECTOR3 position; //位置
D3DXVECTOR3 rotation; //旋转
char* filename; //文件名
float scale; //缩放
ID3DXEffect* effect;
public:
NormapXModel(LPDIRECT3DDEVICE9 _pd3dDevice, char* _filename,char* _normapFilename);
~NormapXModel();
int Load();
void SetupMatrices();
void Render();
void Render(D3DXHANDLE* _textureHandle=0,D3DXHANDLE* _materialHandle=0,D3DXHANDLE* _normapHandle=0);
void SetPosition(D3DXVECTOR3 _position);
void Destory();
D3DXMATRIX GetWorld() {return worldMatrix;}
};
因为每个模型都要有它对应的发现贴图对象:IDirect3DTexture9* normaps; 所以这个成员变量是必不可少的,其实里面多余的成员变量是 ID3DXEffect* effect; 应该将effect及其用到的参数句柄变量放在主程序里。
下面是我用shader渲染的带有法线贴图效果的iceworld(cs经典地图):
左边的墙壁上带有闪烁的反射效果,其实这面墙只有四个顶点,之所以显现出墙面的细节是因为使用了法线贴图(Normal Map)。对于程序怎么写我就不多说了,任何一本游戏编程的书上都有。我只介绍一下法线贴图的制作吧,方法有很多,有的直接用maya或3dmax制作,但是那个比较麻烦,我用的photoshop。
首先要下载photoshop cs2,一定是cs2的,因为我们要用到NVIDIA提供的插件,这个插件只针对cs2,安装cs2后就去下载插件:http://www.nvidia.cn/object/photoshop_dds_plugins.html
找到网页的最下边,下载7.83.0628版本的。然后安装的时候指定你cs2的根目录,插件安装完成。
打开cs2,随便打开一张墙壁的纹理,然后点击filter->nvidia,选择好滤镜后会出现下面的对话框,比较有用的就是Min 0 Scale 15,不同的值代表着凹凸程度,可以边调整,边点击3D preview来预览效果。
最后导出该图片就可以了,最好是保存成dds格式的。
- Normap的初识
- 初识Python的感想
- Ajax的初识
- SOA的初识
- 堆的初识
- 初识STL的强大
- 迟来的初识
- 初识android的project
- Binder的初识
- 初识linux的shell
- Proxy代理的初识
- html 的初识
- wget的初识
- NoSQL的初识
- Fragment的生命周期初识
- 指针的初识
- 迭代器的初识
- 对于Hadoop的初识
- Struts2在OGNL基础上的增强
- 初始化Dropdownlist空间
- 从一个例子理解设计模式
- shell字符串比较判断是否为数字
- 个人的学习总结
- Normap的初识
- TOK 已经搬家,该博客停止更新。
- 各软件常用端口
- 聚光灯+法线贴图 shader
- 错误提示:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内
- asp.net将页面中gridview中的数据导入excel表中
- study1
- DirectX 框架(二)-- bsp场景管理
- 代码生成器(一)