指定材质

1. 如何指定材质的值?

表面上的材质有可能会发生变化;也就是说,表面上不同的点可能会有不同的材质值。例如,一个轿车模型的车身、窗户、灯和轮胎反射和吸收光线的能力是不一样的,所以轿车表面的材质值也应该不一样。

(将轿车网格分为5个材质属性组)

要模拟材质值的不同,一种方法是在顶点级别上定义材质值。这些材质值会在三角形表面进行线性插值,使三角形网格的每个表面点都拥有材质值。但是,从第6章中的“山峰与河谷演示程序”中可以看到,在顶点级别定义材质颜色模拟出的效果还是太粗糙。而且,顶点颜色还会在顶点结构中添加额外的数据,我们还需要给每个顶点上色的工具。更普遍的方法是使用纹理映射,将会在下一章中介绍。还有,在频繁调用绘制的过程中我们还要修改材质。因此,我们将材质值设置为常量缓冲的一个成员,除非在两次绘制之间改变了这个材质值,所有在设置之后绘制的几何体都会使用这个材质。下面的伪代码展示了如何绘制一辆轿车:

设置主要车灯材质到常量缓存
绘制主要车灯几何体
设置辅助车灯材质到常量缓存
绘制辅助车灯几何体
设置轮胎材质到常量缓存
绘制轮胎几何体
设置窗户材质到常量缓存
绘制窗户几何体
设置车身材质到常量缓存
绘制车身几何体

我们的材质结构体定义如下,位于LightHelper.h中:

struct Material
{Material(){ ZeroMemory(this,sizeof(this));}XMFLOAT4 Ambient;XMFLOAT4 Diffuse ;XMFLOAT4 Specular;  //  w分量为高光强度XMFLOAT4 Reflect;
} ;

这里不讨论Reflect成员变量,这个变量会在以后模拟镜子时用到。我们在镜面高光指数p放置在材质高光颜色的第4个分量中。这是因为光照不需要alpha分量,所以空出的这个位置可以储存一些有用的东西。漫反射材质的alpha分量在后面的章节中可用于alpha混合。

最后,我们提醒读者,三角形网格表面上的每个点都需要法线向量,以使网格表面上的每个点都可以(根据兰伯特余弦定理)计算入射光的角度。为了在三角形网格表面上估算每个点的法线向量,我们在顶点级别上指定法线。在光栅化阶段中,这些法线会在三角形表面上进行线性插值。

到目前为止,我们已经讨论了光线的组成原理,但是还没有讨论特定的光源类型。在下面的三节中,我们将讲解平行光(parallel light )、点光(point light)和聚光灯(spotlight)的实现方法。

DirectX11 指定材质相关推荐

  1. MAYA插件 /指定材质/

    把插件拷贝到  --我的文档--MAYA--scripts中. 然后在MAYA的mel里输入以文本方式打开的插件内容. 在左下角的MEL中输入插件名-把名字拖到快捷方式选定区(这样下次启动MAYA时就 ...

  2. threejs 模型中指定材质更换为视频贴图

    使用的核心代码: let video = document.createElement('video');video.src = "js/sintel.mp4"; // 设置视频地 ...

  3. OpenGL材质和光照(转)part2

    10.4.3 材质RGB值和光源RGB值的关系 材质的颜色与光源的颜色有些不同.对于光源,R.G.B值等于R.G.B对其最大强度的百分比.若光源颜色的R.G.B值都是1.0,则是最强的白光:若值变为0 ...

  4. 从零开始学习OpenGL ES之五 – 材质

    从零开始学习OpenGL ES之五 – 材质 作者: iPhoneGeek 爱疯极客 09-Jan-10 iPhone Development 浏览次数: 411 |  评论 ↓ Tweet Shar ...

  5. 室外建筑表现3Dmax和vray常用材质参数设置

    一. 木纹材质调整方法: 1. 木纹材质的肌理调整: A.使用过度色通道贴图后加入凹凸通道贴图,使木纹有凹凸感,肌理更明显凹凸通道强度通常为30% B.材质球的高光强度(specular level: ...

  6. Unity网格合并_材质合并

    2019独角兽企业重金招聘Python工程师标准>>> 写在前面: 从优化角度,Mesh需要合并. 从换装的角度(这里指的是换形状.换组成部件的换装,而不是挂点型的换装),都需要网格 ...

  7. 【Visual C++】游戏开发笔记四十 浅墨DirectX教程之八 绘制真实质感的三维世界:光照与材质专场...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 作者:毛星云(浅墨)    邮箱: happylifemxy@163.com 本篇文章里,我们对Direct3D之中固定功能流水线中的3D ...

  8. 使用Three.js的材质

    1.three.js提供哪些材质? MeshBasicMaterial(网格基础材质)/基础材质,,可以用它富裕几何体一种简单的亚瑟,或者显示几何体的线框 MeshDepthMaterial(网格深度 ...

  9. Three.js基础探寻七——Lamber材质与Phong材质

    材质(Material)是独立于物体顶点信息之外的与渲染效果相关的属性.通过设置材质可以改变物体的颜色.纹理贴图.光照模式等. 本篇将介绍基本材质以及两种基于光照模型的材质(Lamber与Phong) ...

  10. Unity给模型添加逼真效果材质

    一.给模型添加多维材质 1.使用maya导入模型. 2.打开Hypershade窗口 3.新建材质 4.选中材质,右键选择重命名,输入材质名. 5.在模型中选中面. 6.选中材质,点击[为当前选择指定 ...

最新文章

  1. ubuntu虚拟机apt报错:No module named ‘uaclient‘(替换所有的python3为/usr/bin/python3)xftp、xshell不能连接
  2. 关于web前端的学习路线
  3. 数据库基础知识——存储过程和函数
  4. Unity Cinemachine智能相机教程(五):VirtualCamera的Extension扩展
  5. 深度学习技术在社会化推荐场景中的总结(附数据集)
  6. HDU 2444 The Accomodation of Students (二分图最大匹配+二分图染色)
  7. UA OPTI512R 傅立叶光学导论19 菲涅尔衍射
  8. ol xyz 加载天地图_OpenLayers 3 之 加载天地图
  9. 响应式布局基础知识详解
  10. 比扫描全能王还好用的OCR文字识别神器
  11. html清除图层,ps按delete不能删除图层怎么办?
  12. microbit python下mp3_语音 — BBC micro:bit MicroPython中文版 0.0.1 文档
  13. 创业 和 移动互联网
  14. 【演示文稿制作软件】Focusky教程 | 利用动画角色让演示文稿更生动
  15. python红楼梦人物词频统计_用 Python 分析《红楼梦》
  16. 使用python绘制标准心形线
  17. Fping的基本使用
  18. 20154327 Exp9 Web安全基础
  19. 国际电话区号--各国或地区电话国际区号对照表
  20. mongoose http 源码解析(1)

热门文章

  1. 全角半角英文字母及符号
  2. 恒生杭州历年软件测试笔试题,【恒生电子软件测试面试】首先做一个笔试题,然...-看准网...
  3. 【项目】区块链在电商领域中的应用-草莓糖(CMT)(二)
  4. MPB:遗传发育所刘永鑫等-易扩增子:易用、可重复和跨平台的扩增子分析流程...
  5. Editplus 使用技巧大全
  6. 单机塔防游戏推荐_给大家推荐六款爆好玩的塔防游戏
  7. 新库上线 | CnOpenDataA股上市公司裁判文书数据
  8. 四大会计事务所薪酬待遇及发展各个方面大比拼
  9. 一个在线五笔的例子的代码,很不错,转载过来共享
  10. 联想成为梦工厂动画的首选工作站创新合作伙伴