体绘制中的光学模型

体绘制技术的主要思路是计算数据场中的全部采样点在投影过程中对屏幕像素的贡献,在彩色图像中,对红、绿、蓝这3个彩色分量会有不同的强度 I 值,我们可以用光学模型来模拟计算着三个颜色不同的强度 I 值。光学模型是用来描述和模拟三维数据是如何产生、反射、阻挡以及散射光线的,并从而计算出全部采样点对屏幕图像最后结果的贡献,它是基于假设连续分布的三维数据场中的单元粒子具有发光、吸收、反射的特性,从而使得光线在通过三维数据场时发生变化。下面描述常见的几种光学模型,并由此得到体绘制方程和显示方程的基本原理。

1.光吸收模型

光吸收模型是光学模型中最简单的一种,这种模型的三维空间中的粒子可以完全吸收射入光线,从而无反射和发光功能。可以用下式说明:

式中,s 为光线投射方向的长度参数,I(s)是距离s处的光线强度,是光线强度的衰减系数,是光线进入三维数据场时的光线强度。

2.光线发射模型

在三维空间数据场及悬浮状物质的可视化中,三维空间小粒子均具有吸收、反射或发射光线的功能。对于特别情况下,在火焰、高温气体等场的可视化中,可以认为小粒子是很小的和透明的,但是发射的光线却很强。此时我们可以认为这种小粒子具有发射光线的功能,可以用下式描述这种发光现象:

式中,为光源项,为出示光强度值,s 为沿光线射入方向的长度参数,I(s)是距离s处的光线强度。

3.光线吸收与发射模型

光线吸收与发射模型是把光线吸收模型与发射模型有机地结合起来,比较客观地反映了光线在充满粒子的三维空间中的综合现象,这种光线吸收与发射的复合现象可以用下面的式子描述:

上式中C为发光强度,1-T(D)表示不透明度,T(D)表示背景光与所赋颜色值C在透明度T(D)作用下的合成纸。

转载于:https://www.cnblogs.com/unsigned/archive/2010/08/14/1799545.html

学习笔记草稿版——体绘制中的光学模型相关推荐

  1. 【C++】学习笔记草稿版系列10(友元)

    采用类的级之后实现了数据的隐藏和封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界的通信接口.但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数 ...

  2. Go语言开发学习笔记(持续更新中)

    Go语言开发学习笔记(持续更新中) 仅供自我学习 更好的文档请选择下方 https://studygolang.com/pkgdoc https://www.topgoer.com/go%E5%9F% ...

  3. 【Python学习笔记—保姆版】第四章—关于Pandas、数据准备、数据处理、数据分析、数据可视化

    第四章 欢迎访问我搞事情的[知乎账号]:Coffee 以及我的[B站漫威剪辑账号]:VideosMan 若我的笔记对你有帮助,请用小小的手指,点一个大大的赞哦. #编译器使用的是sypder,其中&q ...

  4. C语言学习笔记Day3——持续更新中... ...

    上一篇文章C语言学习笔记Day2--持续更新中- - 八. 容器 1. 一维数组 1.1 什么是一维数组 当数组中每个元素都只带有一个下标(第一个元素的下标为0, 第二个元素的下标为1, 以此类推)时 ...

  5. oracle停止job任务视图,【学习笔记】Oracle dba_datapump_jobs中not running作业的清除方法...

    天萃荷净 Oracle研究中心学习笔记:分享一篇关于Oracle数据库JOBS作业控制的文章.关于dba_datapump_jobs中的not running的作业的清除的方法. not runnin ...

  6. Java快速入门学习笔记9 | Java语言中的方法

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  7. Java快速入门学习笔记8 | Java语言中的数组

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  8. Java快速入门学习笔记7 | Java语言中的类与对象

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  9. Java快速入门学习笔记3 | Java语言中的表达式与操作符

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

最新文章

  1. 写代码时发现......还是 SpringBoot 牛逼!一篇拿下
  2. 论文浅尝 | 一种用于新闻推荐的深度知识感知网络
  3. 运筹学作业(一)——线性规划
  4. team网卡配置_主流服务器网卡Teaming模式配置(上)
  5. vue方法传值到data_Vue组件创建和传值的方法
  6. Swift代码实现加载WEBVIEW
  7. unity模型制作(四):绘制一个凹多边形
  8. 010Editor逆向及注册机实现
  9. 银行招聘计算机考试时间,秋季银行招聘考试时间是什么时候?
  10. 空间直线同球体交点求解
  11. 陈风莲(帮别人名字作诗)
  12. 大数据分析服务器硬件配置如何选择
  13. 基于STM32的智能快递箱(快递驿站)设计
  14. Peer-to-Peer 综述
  15. 网狐大联盟脚本还原数据库
  16. CSP-S 2021 游记
  17. R语言对dataframe行数据进行筛选(row selection)、筛选数据行、基于条件筛选数据行
  18. 入侵介绍: 1。上传漏洞 2。暴库 3。注入 4。旁注 5。COOKIE诈骗
  19. 剖析nsq消息队列(一) 简介及去中心化实现原理
  20. element-ui 中的el-table表格默认的“暂无数据”修改

热门文章

  1. Golang实践录:利用反射reflect构建通用打印结构体接口
  2. 我的docker随笔12:docker源码编译
  3. Linux安装使用redis
  4. PHP实现的服务器端,用PHPStorm实现在本地实时编辑服务器端的代码
  5. 【hadoop】hadoop 安装 kerberos
  6. 【java】java 定时任务线程池 ScheduledThreadPoolExecutor 源码阅读
  7. Spring : spring-jcl-5.1.2.RELEASE.jar日志包
  8. 95-140-118-源码-transform-算子connect
  9. 【Flink】Could not complete the operation,Number of retries has been exhausted
  10. 95-270-020-源码-指标监测-概述