DirectX11 指定材质
指定材质
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 指定材质相关推荐
- MAYA插件 /指定材质/
把插件拷贝到 --我的文档--MAYA--scripts中. 然后在MAYA的mel里输入以文本方式打开的插件内容. 在左下角的MEL中输入插件名-把名字拖到快捷方式选定区(这样下次启动MAYA时就 ...
- threejs 模型中指定材质更换为视频贴图
使用的核心代码: let video = document.createElement('video');video.src = "js/sintel.mp4"; // 设置视频地 ...
- OpenGL材质和光照(转)part2
10.4.3 材质RGB值和光源RGB值的关系 材质的颜色与光源的颜色有些不同.对于光源,R.G.B值等于R.G.B对其最大强度的百分比.若光源颜色的R.G.B值都是1.0,则是最强的白光:若值变为0 ...
- 从零开始学习OpenGL ES之五 – 材质
从零开始学习OpenGL ES之五 – 材质 作者: iPhoneGeek 爱疯极客 09-Jan-10 iPhone Development 浏览次数: 411 | 评论 ↓ Tweet Shar ...
- 室外建筑表现3Dmax和vray常用材质参数设置
一. 木纹材质调整方法: 1. 木纹材质的肌理调整: A.使用过度色通道贴图后加入凹凸通道贴图,使木纹有凹凸感,肌理更明显凹凸通道强度通常为30% B.材质球的高光强度(specular level: ...
- Unity网格合并_材质合并
2019独角兽企业重金招聘Python工程师标准>>> 写在前面: 从优化角度,Mesh需要合并. 从换装的角度(这里指的是换形状.换组成部件的换装,而不是挂点型的换装),都需要网格 ...
- 【Visual C++】游戏开发笔记四十 浅墨DirectX教程之八 绘制真实质感的三维世界:光照与材质专场...
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 作者:毛星云(浅墨) 邮箱: happylifemxy@163.com 本篇文章里,我们对Direct3D之中固定功能流水线中的3D ...
- 使用Three.js的材质
1.three.js提供哪些材质? MeshBasicMaterial(网格基础材质)/基础材质,,可以用它富裕几何体一种简单的亚瑟,或者显示几何体的线框 MeshDepthMaterial(网格深度 ...
- Three.js基础探寻七——Lamber材质与Phong材质
材质(Material)是独立于物体顶点信息之外的与渲染效果相关的属性.通过设置材质可以改变物体的颜色.纹理贴图.光照模式等. 本篇将介绍基本材质以及两种基于光照模型的材质(Lamber与Phong) ...
- Unity给模型添加逼真效果材质
一.给模型添加多维材质 1.使用maya导入模型. 2.打开Hypershade窗口 3.新建材质 4.选中材质,右键选择重命名,输入材质名. 5.在模型中选中面. 6.选中材质,点击[为当前选择指定 ...
最新文章
- ubuntu虚拟机apt报错:No module named ‘uaclient‘(替换所有的python3为/usr/bin/python3)xftp、xshell不能连接
- 关于web前端的学习路线
- 数据库基础知识——存储过程和函数
- Unity Cinemachine智能相机教程(五):VirtualCamera的Extension扩展
- 深度学习技术在社会化推荐场景中的总结(附数据集)
- HDU 2444 The Accomodation of Students (二分图最大匹配+二分图染色)
- UA OPTI512R 傅立叶光学导论19 菲涅尔衍射
- ol xyz 加载天地图_OpenLayers 3 之 加载天地图
- 响应式布局基础知识详解
- 比扫描全能王还好用的OCR文字识别神器
- html清除图层,ps按delete不能删除图层怎么办?
- microbit python下mp3_语音 — BBC micro:bit MicroPython中文版 0.0.1 文档
- 创业 和 移动互联网
- 【演示文稿制作软件】Focusky教程 | 利用动画角色让演示文稿更生动
- python红楼梦人物词频统计_用 Python 分析《红楼梦》
- 使用python绘制标准心形线
- Fping的基本使用
- 20154327 Exp9 Web安全基础
- 国际电话区号--各国或地区电话国际区号对照表
- mongoose http 源码解析(1)
热门文章
- 全角半角英文字母及符号
- 恒生杭州历年软件测试笔试题,【恒生电子软件测试面试】首先做一个笔试题,然...-看准网...
- 【项目】区块链在电商领域中的应用-草莓糖(CMT)(二)
- MPB:遗传发育所刘永鑫等-易扩增子:易用、可重复和跨平台的扩增子分析流程...
- Editplus 使用技巧大全
- 单机塔防游戏推荐_给大家推荐六款爆好玩的塔防游戏
- 新库上线 | CnOpenDataA股上市公司裁判文书数据
- 四大会计事务所薪酬待遇及发展各个方面大比拼
- 一个在线五笔的例子的代码,很不错,转载过来共享
- 联想成为梦工厂动画的首选工作站创新合作伙伴