当前位置: 首页 > news >正文

沈阳网站制作企业合肥百度竞价推广代理公司

沈阳网站制作企业,合肥百度竞价推广代理公司,企业通讯软件app,温州微网站制作公司哪家好光照的组成 环境光:这种类型的光经其他表面反射到达物体表面,并照亮整个场景,要想以较低代价粗略模拟这类反射光,环境光是一个很好的选择 漫射光:这种类型光沿着特定的方向传播。当它到达某一表面时,将沿…

光照的组成

环境光:这种类型的光经其他表面反射到达物体表面,并照亮整个场景,要想以较低代价粗略模拟这类反射光,环境光是一个很好的选择

漫射光:这种类型光沿着特定的方向传播。当它到达某一表面时,将沿着各个方向均匀反射,无论从哪个方位观察,表面亮度均相同,所以采用该模型时无须考虑观察者的位置,这样,漫射光方程中仅需考虑光传播的方向以及表面朝向,从一个光源发出的光一般都是这种类型的。

镜面光:这种类型的光沿特定方向传播,当此类光到达一个表面时,将严格地沿着另一个方向反射,从而形成只能在一定角度范围内才能观察到的高亮度照射,所以在镜面光照方程中不仅需要考虑光线的入射方向和图元的表面朝向,还需要考虑观察点的位置。镜面光可用于模拟物体上的高光点,例如当光线照射到一个抛光的表面所形成的高亮照射。

镜面光比其他类型光计算量大,因此Direct3D提供了开关选项,默认状态下Direct不进行镜面反射计算,如果想启用镜面光,必须调用接口进行设置

Device->SetRenderState(D3DRS_SPECULARENABLE, true);

每种类型的光都可用结构D3DCOLORVALUE或者D3DXCOLOR来表示,描述光线的颜色时,D3DXCOLOR类中的Alpha值都将被忽略

D3DXCOLOR redAmbient(1.0f, 0.0f, 0.0f, 1.0f);
D3DXCOLOR blueDiffuse(0.0f, 0.0f, 1.0f, 1.0f);
D3DXCOLOR whiteSpecular(1.0f, 1.0f, 1.0f, 1.0f);

材质

现实世界中,我们所观察到的物体的颜色是由该物体所反射的光的颜色决定的,例如一个纯红色的球体反射了全部的红色入射光,并吸收了所有非红色的光,所以呈现为红色。当一个物体吸收了所有的光时,便呈现为黑色,如果一个物体能够100%地反射红色光、绿色光、蓝色光,它将呈现为白色,Direct3D通过定义物体的材质来模拟同样的现象,材质允许我们定义物体表面对各种颜色光的反射比例,材质用结构D3DMATERIAL9来表示。

typedef struct D3DMATERIAL9 {D3DCOLORVALUE   Diffuse;  D3DCOLORVALUE   Ambient;  D3DCOLORVALUE   Specular; D3DCOLORVALUE   Emissive; float           Power;    
} D3DMATERIAL9;

Diffuse:指定材质对漫射光的反着率
Ambient:指定材质对环境光的反射率
Specular:指定材质对镜面光的反射率
Emissive:该分量用于增强物体的亮度,使之看起来好像可以自己发光
Power:指定镜面高光点的锐度,该值越大,高光点的锐度越大

//只反射红色光
D3DMATERIAL9 red;
::ZeroMemory(&red, sizeof(red));
red.Diffuse = D3DXCOLOR(1.0f, 0.0f, 0.0f, 1.0f);
red.Ambient= D3DXCOLOR(1.0f, 0.0f, 0.0f, 1.0f);
red.Specular = D3DXCOLOR(1.0f, 0.0f, 0.0f, 1.0f);
red.Emissive = D3DXCOLOR(0.0f, 0.0f, 0.0f, 1.0f);
red.Power = 5.0f;

设置材质接口SetMaterial

D3DMATERIAL9 blueMaterial;
Device->SetMaterial(&blueMaterial);
//draw...

顶点法线

顶点法线描述的是构成多边形的各个顶点的法线,Direct3D需要知道顶点的法线方向,以确定光线到达表面时的入射角,由于光照计算是对每个顶点进行的,所以Direct3D需要知道表面在每个顶点处的局部朝向(法线方向),描述一个顶点法线需要修改顶点结构

struct Vertex
{float _x, _y, _z;float _nx, _ny, _nz;static const DWORD FVF;
};
const DWORD Vertex::FVF = D3DFVF_XYZ | D3DFVF_NORMAL;

计算三角形三个顶点的法线,可由计算该面的法向量得到,首先计算位于三角形平面内的俩个向量

void ComputeNormal(D3DXVECTOR3* p0, D3DXVECTOR3* p1, D3DXVECTOR3* p2, D3DXVECTOR3* out)
{D3DXVECTOR3 u = *p1 - *p0;D3DXVECTOR3 v = *p2 - *p0;D3DXVec3Cross(out, &u, &v);D3DXVec3Normalize(out, out);
}

当用三角形单元逼近表示曲面时,将面片法向量作为构成该面片的顶点法向量不可能产生很平滑的效果,一种更好的求取顶点法向量的方法是计算法向量均值,我们需要求出共享点v的所有三角形的面法向量,然后将这些法向量相加后除以个数进行平均。

在变换过程中,顶点法线有可能不再是规范的所以最好的方法是在变换完成后,通过设置绘制状态来重新规范化

Device->SetRenderState(D3DRS_NORMALIZENORMALS, true);

http://www.khdw.cn/news/36148.html

相关文章:

  • 大鹏网络网站建设东莞网站建设优化技术
  • 在北京注册公司在哪个网站上seo北京优化
  • 网站后台编辑教程网络推广运营主要做什么
  • 青海西宁制作网站专业重庆森林讲了什么故事
  • wordpress主题授权方式宁波品牌网站推广优化
  • 古交市住房和城乡建设局网站百度识图扫一扫
  • 做水电到哪个网站找信息高端企业网站模板
  • 做网站时给图片添加链接网络营销策划的方法
  • 网赌网站怎么做网络营销运营公司
  • 免费素材图库seo简单优化操作步骤
  • 常熟建设局网站首页宁波seo关键词优化报价
  • 郑州专业网站优化百度识图在线使用
  • 个人网站号备案吗网络推广的主要内容
  • 大连建设网站营销策略的思路
  • bl做视频网站马鞍山网站seo
  • 便宜手机网站建设印度疫情最新消息
  • 企业网站开发怎么样上海关键词排名优化怎样
  • 阿里云个人备案可以做企业网站网络推广是什么意思
  • 网站内容和备案不一泰州网站优化公司
  • jsp动态网站开发案例教程源码百度网盘搜索引擎入口在哪
  • 地方门户网站有哪些廊坊快速优化排名
  • 网站设计面试问题成都新一轮疫情
  • 可以做书的网站郑州seo技术服务顾问
  • php网站开发 实战教程搜索引擎优化seo专员
  • 网站建设备案哪家好北京网站优化常识
  • 江苏省昆山市网站制作专业关键词排名软件
  • 如何导入旧网站数据库公关公司提供的服务有哪些
  • 武汉有个人做网站的域名注册网
  • 黄山网站建设找哪家公司网站营销
  • 网站策划书籍推荐实时疫情最新消息数据