第九课,OpenGL光照之材质

2023-11-13

物体材质

在冯氏模型中,一个物体的材质由:全局光照系数,漫反射光照系数,反射光照系数,反射高光半径系数决定。
分别由:ambient,diffuse,specular,shininess表示。

材质系数

The numbers

Name Ambient Diffuse Specular Shininess
emerald 0.0215 0.1745 0.0215 0.07568 0.61424 0.07568 0.633 0.727811 0.633 0.6
jade 0.135 0.2225 0.1575 0.54 0.89 0.63 0.316228 0.316228 0.316228 0.1
obsidian 0.05375 0.05 0.06625 0.18275 0.17 0.22525 0.332741 0.328634 0.346435 0.3
pearl 0.25 0.20725 0.20725 1 0.829 0.829 0.296648 0.296648 0.296648 0.088
ruby 0.1745 0.01175 0.01175 0.61424 0.04136 0.04136 0.727811 0.626959 0.626959 0.6
turquoise 0.1 0.18725 0.1745 0.396 0.74151 0.69102 0.297254 0.30829 0.306678 0.1
brass 0.329412 0.223529 0.027451 0.780392 0.568627 0.113725 0.992157 0.941176 0.807843 0.21794872
bronze 0.2125 0.1275 0.054 0.714 0.4284 0.18144 0.393548 0.271906 0.166721 0.2
chrome 0.25 0.25 0.25 0.4 0.4 0.4 0.774597 0.774597 0.774597 0.6
copper 0.19125 0.0735 0.0225 0.7038 0.27048 0.0828 0.256777 0.137622 0.086014 0.1
gold 0.24725 0.1995 0.0745 0.75164 0.60648 0.22648 0.628281 0.555802 0.366065 0.4
silver 0.19225 0.19225 0.19225 0.50754 0.50754 0.50754 0.508273 0.508273 0.508273 0.4
black plastic 0.0 0.0 0.0 0.01 0.01 0.01 0.50 0.50 0.50 0.25
cyan plastic 0.0 0.1 0.06 0.0 0.50980392 0.50980392 0.50196078 0.50196078 0.50196078 0.25
green plastic 0.0 0.0 0.0 0.1 0.35 0.1 0.45 0.55 0.45 0.25
red plastic 0.0 0.0 0.0 0.5 0.0 0.0 0.7 0.6 0.6 0.25
white plastic 0.0 0.0 0.0 0.55 0.55 0.55 0.70 0.70 0.70 0.25
yellow plastic 0.0 0.0 0.0 0.5 0.5 0.0 0.60 0.60 0.50 0.25
black rubber 0.02 0.02 0.02 0.01 0.01 0.01 0.4 0.4 0.4 0.078125
cyan rubber 0.0 0.05 0.05 0.4 0.5 0.5 0.04 0.7 0.7 0.078125
green rubber 0.0 0.05 0.0 0.4 0.5 0.4 0.04 0.7 0.04 0.078125
red rubber 0.05 0.0 0.0 0.5 0.4 0.4 0.7 0.04 0.04 0.078125
white rubber 0.05 0.05 0.05 0.5 0.5 0.5 0.7 0.7 0.7 0.078125
yellow rubber 0.05 0.05 0.0 0.5 0.5 0.4 0.7 0.7 0.04 0.078125

How to use it

OpenGL

Multiply the shininess by 128!

  mat[0] = ambr;
  mat[1] = ambg;
  mat[2] = ambb;
  mat[3] = 1.0;
  glMaterialfv(GL_FRONT, GL_AMBIENT, mat);
  mat[0] = difr;
  mat[1] = difg;
  mat[2] = difb;
  glMaterialfv(GL_FRONT, GL_DIFFUSE, mat);
  mat[0] = specr;
  mat[1] = specg;
  mat[2] = specb;
  glMaterialfv(GL_FRONT, GL_SPECULAR, mat);
  glMaterialf(GL_FRONT, GL_SHININESS, shine * 128.0);
VRML97

Compute ambientIntensity as (0.212671ambr + 0.715160ambg + 0.072169ambb)/(0.212671difr + 0.715160difg + 0.072169difb)

Material {
  ambientIntensity  amb
  diffuseColor      difr digg difb
  specularColor     specr specg specb
  shininess         shine
}

引用地址-----
http://devernay.free.fr/cours/opengl/materials.html

http://web.archive.org/web/20100725103839/http://www.cs.utk.edu/~kuck/materials_ogl.htm

http://www.it.hiof.no/~borres/j3d/explain/light/p-materials.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第九课,OpenGL光照之材质 的相关文章

  • 通过推送通知唤醒

    Suppose 有一些对象 例如 一个数组a 和依赖于对象的条件 例如 a empty 当前线程以外的某些线程可以操作该对象 a 因此条件评估值的真实性会随着时间的推移而变化 如何让当前线程在代码中的某个时刻休眠 并在条件满足时通过推送通知
  • 如何计算带有偏移量的异或?

    我想用不同的偏移量进行异或计算以在计算中列出 例子 key 0 1 0 text 0 1 0 1 0 1 0 1 1 1 异或计算 key 0 text 0 key 1 text 1 key 2 text 2 key 0 text 3 ke
  • 在我的 ramaz 应用程序上显示 £ 符号时,我收到“不兼容的字符编码:CP850 和 UTF-8”

    显示时收到 不兼容的字符编码 CP850 和 UTF 8 我的 ramaz 应用程序上的符号 我怎样才能摆脱这个错误 我的 head 标签中有 UTF 8 元标签 当我输入 用键盘输入符号 看 我已将以下代码放入我的 ruby 文件中 但它
  • Rails 4:资产未在生产中加载

    我正在尝试将我的应用程序投入生产 但图像和 CSS 资源路径不起作用 这是我目前正在做的事情 图像资源位于 app assets images image jpg 样式表位于 app assets stylesheets style css
  • 多重要求和允许强参数rails 4

    在下面的情况下 我尝试使用强参数 我想要求email address password并允许remember me fields 但像下面这样使用它只允许最后一行在方法示例中 在下面的情况下 它只需要params permit rememb
  • OpenGL缓冲区更新[重复]

    这个问题在这里已经有答案了 目前我正在编写一个模拟水的程序 以下是我所做的步骤 创建水面 平面 创建VAO 创建顶点缓冲区对象 在其中存储法线和顶点 将指针绑定到此 VBO 创建索引缓冲区对象 然后我使用 glDrawElements 渲染
  • 使用 attr_accessor 动态创建类属性

    在Ruby中 有没有办法动态地将实例变量添加到类中 例如 class MyClass def initialize create attribute name end def create attribute name attr acces
  • 没有要加载的文件 - ffi_c (LoadError)

    这个问题困扰了我几天 每当我使用 bring to front 方法时 require rubygems require watir browser Watir Browser new browser bring to front 我收到此
  • 用户未定义的方法 attr_accessible 错误

    我正在尝试创建某种登录 我创建了一个用户脚手架并将此代码放在我的 user rb 中 class User lt ActiveRecord Base attr accessible name password digest password
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • 红宝石接球和效率

    catch在 Ruby 中意味着跳出深度嵌套的代码 在 Java 中 例如用Java也可以达到同样的效果try catch用于处理异常 但它被认为是糟糕的解决方案 而且效率非常低 在 Ruby 中 我们有处理异常的方法begin raise
  • 存根和 rspec 旧语法的问题

    我正在编写一些代码并使用 rspec 但收到警告 提示语法已过时 我不太清楚应该如何编写它 it should calculate the value correctly do mock cards Card new clubs 5 Car
  • RoR - Rails 中的大文件上传

    我有一个 Rails Web 应用程序 允许用户上传视频 视频存储在 NFS 安装的目录中 当前的设置适用于较小的文件 但我也需要支持大文件上传 最多 4GB 当我尝试上传 4GB 文件时 它最终会发生 但从用户体验的角度来看很糟糕 上传开
  • Shoulda/RSpec 匹配器 - 条件验证

    在我的代码中 我使用 Shoulda 匹配器进行了以下验证 效果很好 it should validate presence of name 在我的模型中 我已将条件添加到验证中 validates presence of name if
  • 为 RoR 中的每个用户创建新的 URL 路径

    如何在 Ruby on Rails 中实时创建新的 URL 路径 例如 我希望我的用户拥有 name XXX com 或 XXX com name 仅供参考 我在 Heroku 上托管代码 看看 subdomain fu 插件 https
  • 三角形纹理映射OpenGL

    我正在开发一个使用 Marching Cubes 算法并将数据更改为 3D 模型的项目 现在我想在 OpenGL 中为我的 3D 模型使用纹理映射 我首先尝试了一个简单的示例 它将图片映射到三角形上 这是我的代码 int DrawGLSce
  • 嵌套 has_one 关联的强参数

    我似乎遗漏了一些明显的东西 但我无法允许嵌套的属性has one协会 控制器 def create crossword Crossword new crossword params if crossword save render show
  • Ruby ActiveRecord 和 sql 元组支持

    ActiveRecord 是否支持 where 子句中的元组 假设底层数据库支持 结果 where 子句看起来像这样 where name address in John 123 Main St I tried Person where n
  • 在 Rails 中本地化嵌套虚拟属性

    怎么可能本地化嵌套虚拟属性在 Rails 中 该模型 class User lt ActiveRecord Base attr accessor company information This is used in callbacks e
  • rake db 问题:迁移 -

    我无法为 Ruby on Rails 设置 MySQL 数据库 设置数据库并确保 config database yml 文件匹配后 我遇到了以下错误消息 U Rails alpha gt rake db migrate trace in

随机推荐

  • SAP调用HTTP和HTTPS

    HTTPS https archive sap com discussions thread 482084 Note 510007 SAP Kernel版本为721 SAP ECC 6 0 SAP BASIS700 调用公司的https还是
  • 常见hash加密及判定

    常见hash加密及判定 unix系系统 ES Unix 例子 IvS7aeT4NzQPM 说明 Linux或者其他linux内核系统中 长度 13 个字符 描述 第1 2位为salt 例子中的 Iv 位salt 后面的为hash值 系统 M
  • Xshell 执行python脚本

    XShell支持使用VB JS Python脚本去启动自动化任务 这里介绍如何写Xshell的Python脚本 首先要在脚本中定义一个Main 函数 Xshell会调用这个函数 也就是程序的入口 然后 通过官方提供的API去完成脚本的书写
  • 无线通信与编码_MATLAB实现OFDM载波频偏估计_含仿真代码

    为了解决频率选择性衰落信道引起的失真 OFDM系统在正交子载波上并行传输消息数据 然而 只有正交性得到保持时 OFDM才能够发挥其优势 在正交性得不到保持的情况下 系统会因为ISI和ICI而下降 总的来说 与载波信号相关的畸变有两种 一种是
  • 三个线程循环打印ABC

    思路 1 定义两个信号量 A的默认个数为1 B的默认值为0 一个用于打印A 一个用于打印B 2 A线程获取到信号量A后打印 A 打印完后释放一个信号量B 让B可以打印 3 B线程获取到信号量B后打印 B 打印完后释放一个信号量A 让A可以打
  • OpenCV教程——形态学操作。膨胀,腐蚀,开操作,闭操作,形态学梯度,顶帽,黑帽

    1 形态学操作 图像形态学操作 基于形状的一系列图像处理操作的合集 主要是基于集合论基础上的形态学数学 形态学有四个基本操作 膨胀 腐蚀 开 闭 2 膨胀与腐蚀 2 1 膨胀 跟卷积操作类似 假设有图像A和结构元素B 结构元素B在A上面移动
  • 微信小程序app.js onLaunch异步,首页onLoad先执行

    本来按照事件顺序 小程序初始化时触发App里的onLaunch 后面再执行页面Page里的onLoad 但是在onLaunch里请求授权信息本就为异步执行 等待返回值的时候Page里的onLoad事件就已经执行了 app js 代码 app
  • Java 并发编程

    目录 回顾线程 并发编程 并发编程 Java 内存模型 JMM 编程核心问题 可见性 原子性 有序性 可见性 有序性 原子性 valatile 关键字 CAS Compare And Swap 比较并交换 原子类 java中的锁 乐观锁 悲
  • JS逆向学习---简单的rsa

    今日目标 aHR0cHM6Ly9jbi5mYXdteC5jb20vaG9tZS9yZWdpc3Rlcg 登录接口有一个加密参数 也就是密码加密值 就是今天的小目标 直接搜索 只有一个js文件有结果 第一个便是加密位置 很明显 是把明文密码传
  • 炼丹速度×7!你的Mac电脑也能在PyTorch训练中用GPU加速了

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 来源 量子位 QbitAI 编辑 丰色 发自 凹非寺 一直以来 Pytorch在Mac上仅支持使用CPU进行训练 就在刚刚 Pytorch官方宣布 其最新版v1 12可以
  • 自然语言处理常用标识符<UNK>,<PAD>,<SOS>,<EOS>等

  • 系统架构设计高级技能 · 软件可靠性分析与设计

    系列文章目录 系统架构设计高级技能 软件架构概念 架构风格 ABSD 架构复用 DSSA 一 系统架构设计师 系统架构设计高级技能 系统质量属性与架构评估 二 系统架构设计师 系统架构设计高级技能 软件可靠性分析与设计 三 系统架构设计师
  • 这样统计代码执行耗时,才足够优雅

    一 前言 代码耗时统计在日常开发中算是一个十分常见的需求 特别是在需要找出代码性能瓶颈时 可能也是受限于 Java 的语言特性 总觉得代码写起来不够优雅 大量的耗时统计代码 干扰了业务逻辑 特别是开发功能的时候 有个感受就是刚刚开发完代码很
  • Java 关于时间、日历类

    一 相互转换 1 Calendar 转化 String 获取当前时间的具体情况 如年 月 日 week date 分 秒等 Calendar calendat Calendar getInstance SimpleDateFormat sd
  • 打印金字塔

    首先我们分解这个问题 由简到难循序渐进 先打印4层半个金字塔如图 public class demo1 打印半个金字塔 public static void main String args TODO Auto generated meth
  • 深度解析开源IDE的领头羊—【Eclipse 】--认识Eclipse

    认识Eclipse 阅读本文前 相信读者已经对Eclipse略知一二了 起码已经知道它是一个Java的集成开发环境 IDE 并且还是一个应用程序框架 可以通过开发插件 把Eclipse打造成各种应用软件 而且还打算通过学习本书的内容 在具体
  • vue2 webpack版批量注册全局组件

    使用背景 用vue开发的所有项目 都是采用组件化的思想开发的 分为公共组件和功能组件 又可以分为全局自定义组件和局部自定义组件 全局自定义组件在main js文件直接引入 这种是最简单的方式 使用缺点 如果我们需要注册的全局组件非常多 那么
  • 移动端 - 搜索组件(search-list篇)

    移动端 搜索组件 search input篇 移动端 搜索组件 suggest篇 这里我们需要去封装搜索历史组件 这一个组件还是很简单的 但是逻辑部分需要根据实际的需求来进行书写 所以这里我不太好去写实际的代码 不过可以提供我的思路 主要的
  • Spring的事务

    目录 一 Spring的事务 二 Spring事务如何实现 三 Spring事务的失效 一 Spring的事务 当我们在某个方法上添加了 Transactional注解后 就表示该方法在调用时会开启Spring事务 而这个方法所在的类所对应
  • 第九课,OpenGL光照之材质

    物体材质 在冯氏模型中 一个物体的材质由 全局光照系数 漫反射光照系数 反射光照系数 反射高光半径系数决定 分别由 ambient diffuse specular shininess表示 材质系数 The numbers Name Amb