1,理论分析

怎么画一杯水呢?

场景中涉及三种介质:空气(eta_air)、玻璃(eta_glass)、水(eta_water)。

在用trace的过程中,需要特别注意的是:介质边界面的法向量的方向

因为,法向量的方向决定着光线折射过程中使用的是某折射率还是该折射率的倒数。

如下来两张截图是本人学习过程中的手稿:

补充一张相关参数的截图:

2,基本图形

这些基本图形是在学习“Q94:怎么用raytracing画部分圆环(PartTori)”章节时生成的。

章节链接:http://blog.csdn.net/libing_zeng/article/details/64131906

完整代码链接:http://download.csdn.net/detail/libing_zeng/9787740

Annulus:

Disk:

Concave Cylinder:

Convex Cylinder:

Concave Part Torus:

3,C++代码实现GlassOfWater

4,测试图形

相关测试代码:
输出图形:
图形a:(耗时7013s)
pinhole_ptr->set_eye(5, 6, 10);  // for a, c
pinhole_ptr->set_lookat(0, 1, 0);
pinhole_ptr->set_view_distance(2000.0); // for a, c

图形b:(耗时5568s)

pinhole_ptr->set_eye(2.5, 0, 5); // for b
pinhole_ptr->set_lookat(0, 1, 0);
pinhole_ptr->set_view_distance(1000.0); // for b

图形c:(耗时7408s)

给图形a加上阴影

5,其他说明

完整代码的下载链接:
http://download.csdn.net/detail/libing_zeng/9788299
Referrance:

[1]. Kevin Suffern, Ray Tracing from theGround Up, A K PetersLtd, 2007.

Q91:真实地模拟透明材质(Realistic Transparency)(3)——A Glass of Water相关推荐

  1. Q91:真实地模拟透明材质(Realistic Transparency)(2)——Triangle Meshes

    这一章节是在"Q91:真实地模拟透明材质(Realistic Transparency)"的基础上测试一下Triangle Mesh图形. 之前章节的链接:http://blog. ...

  2. Q91:真实地模拟透明材质(Realistic Transparency)

    在"Q90"中,我们认为折射系数kt是一个常数,对应反射系数kr=1-kt.但是,实际情况则是:kt会因入射角的不同而变化. 这一章节,我们将真实地模拟透明材质.主要考虑两个问题: ...

  3. Q91:真实地模拟透明材质(Realistic Transparency)(4)——Fish Bowl

    1,理论分析 这一章节要画的是鱼缸,其实和前面画的"一杯水"是差不多的. 只不过这里是用各种"基本图形"构建的是一个"鱼缸". 示意图如下: ...

  4. Q90:简易地模拟透明材质(Simple Transparency)

    为什么说是"简易地模拟"呢? 因为,在两种介质确定了的情况下,这一章节中认为折射系数kt是一个常数,对应反射系数kr=1-kt. 但是,实际情况则是:kt会因入射角的不同而变化. ...

  5. Q101:真实地模拟一个玻璃酒杯(Wine Glass)(回旋曲面)

    0,引入 其实,这一章节的标题原本想用"Q91:真实地模拟透明材质(Realistic Transparency)(5)--Wine Glass",以便和之前透明材质相关章节联系起 ...

  6. 带透明材质的描绘过程_透明的过程质量

    带透明材质的描绘过程 这次,我想看看软件开发过程中如何支持质量. 我们将分析此类过程的某些阶段,并检查各个步骤的明确存在如何支持团队和组织的质量维护. 以下是我多年的观察中的问题,在寻找有关质量控制的 ...

  7. 计算机网络透明网桥的算法,网基课程设计曼切斯特编码模拟透明网桥自习域转发帧算法模拟IP分片模拟.doc...

    网基课程设计曼切斯特编码模拟透明网桥自习域转发帧算法模拟IP分片模拟 计算机网络基础 课 程 设 计 报 告 学号: 姓名: 班级: 题号:01.06.07 题目:曼切斯特编码模拟.透明网桥自学习域转 ...

  8. Unity Shader UV动画之高光材质加上透明材质与UV动画

    理解,UV动画实质是对UV的坐标进行变化,从而使纹理产生动态变化 例子:从高光材质进行修改 1,加上透明材质的标签以及混合模式,再使用带透明通道的贴图,可以实现:不透明部分的图案,材质是高光材质,透明 ...

  9. android游戏备份农场,真实农场模拟

    打工是不可能打工,这辈子都不可能的,只能靠经营农场来维持一下生活!真实农场模拟带给玩家最真实的经营农场的体验,玩家们在农场中养殖各种动物,植物,照顾它们长大,换取钱财,来支持你农场日常的花销.享受农场 ...

最新文章

  1. 2020人工智能课程超级大列表:深度学习-强化学习-图神经网络-自然语言处理等...
  2. Ubuntu mysql连接错误10060/10061的方法
  3. 简易付微信收款提示支付失败
  4. idea项目没法继承httpservlet_SpringBoot项目发布为war
  5. 使用dbstart 和dbshut 脚本来自动化启动和关闭数据库
  6. Clion添加Posix消息队列的-lrt连接
  7. JavaScript的数据类型及其检测
  8. 管理感悟:学会推论及验证
  9. Numpy之文件存取
  10. 【AtCoder010】A - Addition(奇偶)
  11. 对称加密和非对称加密、公钥和私钥、单向认证和双向认证、数字签名、数字证书、根证书
  12. 【python】80行代码实现压缩包密码破解软件,支持zip和rar
  13. 山地车的结构及骑行注意事项
  14. 获取文件哈希值_哈希(hash)是个啥?
  15. 计算机一直在启动界面进不去怎么办,Win7系统开机一直停留在“Windows正在启动”界面怎么办...
  16. Windows命令行常用命令
  17. VUE echarts绘制省级/市级地图自动轮循tooltip
  18. 基于 Electron 实现 uTools 的超级面板
  19. 隔行扫描, 逐行扫描
  20. 【C深入】程序中的三国天下,栈,堆,静态内存

热门文章

  1. 数据库返回刚插入记录的ID
  2. 《剑指offer》第二章小结(1)——链表的基本操作
  3. tensorflow学习之常用函数总结:tensorflow.cast()函数
  4. python 读取并显示图片,用plt 同时显示多幅图像
  5. ndk-build官方使用说明
  6. RxJava2 方法总结
  7. Javascript和JQuery函数定义方式
  8. MYSQL数据库表操作pdf
  9. [业余项目]黄金点游戏
  10. js 自己常用的小小技巧(持续更新)