source: http://cgangs.com/article/2557?source=weibo

就我们的目的来说,海洋环境仅由四部分组成:水表、空气、阳光和水表以下部分。在本节中,我们在数学和图示的基础上,通过环境,从光源到相机追踪了光线的 流动。一般来说,此处的光能传递方程与任何其他光能传递问题一样都是耦合。然而,在合理范围内,这种耦合可以缩短,简化的热能传递问题就有了相对快速的解 决方案。

相机看到的光线依赖于光能的流动,从源头(即太阳和天空)流动到水表并进入相机。除了直射阳光的镜面反射和来自水表的天空光,一些入射光碎片通过水表发 射。最终,一部分传入光被水容量散射回空气中。在表面反射或折射的一些光线再次撞击表面,产生更多的反射和折射事件。在某些外观条件下,多次反射和折射可 以对图像产生显著影响。所以,对于我们而言,我们一次忽略的不只是表面的一个反射或折射。

在表面上方环境中的任何点,包括在相机上,来自任何方向的总光强度(辐射率),都有三个贡献:

LABOV E = rLS + rLA + tU LU

所用术语定义如下:

(1)r为菲涅耳反射率,即从海洋表面上一点到相机的反射。

(2)tU是传输系数,来自海洋体积的光线LU,在表面折射后,进入相机。

(3)LS是直接来自太阳的光线总量,通过大气,到海洋表面上一点,而这一点就是从海洋表面反射到相机的点。

(4)LA是(漫反射)大气天空光。

(5)LU是通过表面发射到空气中的水表以下的光线。

方程故意用速记法写,隐藏了对空间位置的依赖,及光线运行的方向。

而方程似乎有相对简单的结构,原则上,术语LS , LA, 和LU相互依赖,错综复杂,反射率和透射率也是如此。大量的研究资料详细调查了这些依赖关系,但我们此时不会崇尚这些定量方法。但是,我们可以进一步阐述耦合。

然而继续用同样的简化符号来写。来自太阳的直射光线LS为:

LS = LT OA exp{−τ

其中LT OA是大气顶部直射阳光的强度,而τ是阳光方向和地球上点的大气的"光学厚度"。漫反射大气天空光LA和上升流光线LU都可以写为以下两个方程的总和:

这些方程揭示了问题的潜在复杂性。

LA 和 LU在都依赖阳光直射的同时,也相互依赖。例如,渗入到海洋中的光线总量来自直射阳光和大气阳光。一些进入海洋的光线被微粒和分子散射到海洋 中,并返回大气。一些上升流的光线反过来又被散射到大气中,成为照射在表面的天空光的一部分,而且持续不断。这是一个典型的光能传递问题。它不是专门为这 种情况设定的,与其他光能传递问题截然相反,除了这样一个事实,即上升流光线很难计算,因为它来自体积多重散射。

为了文章的目的,我们解决光能传递问题的方法很简单:使天空光仅仅依赖于来自太阳的光线,因为上升流贡献代表了对阳光的“第三方”依赖;完全用一个实验公式取代LU方程式,基于对海洋的科学观测,这种观测只依赖于阳光直射和一些其他指示水的类型和透明度的参数。

水表以下,光能传递方程有图解形式:

分别代表了:

(1)t是菲涅尔透射率,在表面上每个点和角度通过水面的传递。

(2)LD是渗透到水中的太阳直射光线。

(3)LI是渗透到水中的大气非直射光线。

(4)LSS是来自太阳和大气的单次散射光,在到达任何点之前,一旦进入水体就散射开来。

(5)LM是多次散射光。是单次散射光线经历更多的体积散射事件。

正如上述水的情况,这些方程式彼此都以相对复杂的方式相互关联。例如,单次散射光线依赖于直射光线和非直射光线:

LSS = P (tLI ) + P (tLD )

量P是它论证的线性函数运算符,其中包含有关单次散射事件的信息,以及当它通过散射点到达相机时,散射光线的衰减信息。同样,多次散射光线也依赖于单次散射:

LM = G(tLI ) + G(tLD ) .

函数图解的量P和G是相关的,因为多次散射就是一系列的单次散射。从形式上看,这两种依赖于运算符,形式如下:

图1  空气和水界面的多次反射和传递表达式

图2 光线方向的追踪

此时,图1通过空气和水界面的多次反射和传递的图示法可能就没什么用了,因为卷积状运算符⊗有复杂的含义(并非此处定义),而且依据P的G的表达式已经创建了一个更加清晰的示意图对P取幂。所以,现在我们不管示意图,而是继续应用一些更具体的量。

在这里提出的正式原理图的讨论,确实有数学和物理上精确对应的事物。对辐射传输领域的研究长久以来已被大量研究人员应用于水的光学中。引用的参考文献是获取更多信息的优秀读物。

如前所述,在某种情况下,可能有一种额外的光能传递情境会对海洋渲染很重要,但我们不会考虑。这种情况在图2有示意。按照箭头所示,追踪行进的方向光线, 我们看到,有时进入水面(从上方或下方)的光线可以不止一次的穿过水面,进行反射和/或透射。大量产生这种行为的条件是:浪高必须相当高,观看海浪的方 向、或光源的方向必须接近水面。海浪越高,越不需要接近光源或相机。这种现象已经通过实验并在计算机上模拟审查通过。

[zz] 海洋环境的光能传递的更多相关文章

  1. 2017-5-22 ASP六大 内置对象

    ASP内置对象:提供内建对象,这些对象使用户更容易收集通过浏览器请 求发送的信息.响应浏览器以及存储用户信息(如用户首选项). 1.Request  --- 获取请求对象 获取通过地址栏传值过来的对象 ...

  2. Lightscape

    Lightscape是一种先进的光照模拟和可视化设计系统,用于对三维模型进行精确的光照模拟和灵活方便的可视化设计. Lightscape是一个光照渲染软件,它特有的光能传递计算方式和材质属性所产生的独 ...

  3. 【Unity】3.3 用3ds Max 2015制作模型并将其导入到Unity

    分类:Unity.C#.VS2015 创建日期:2016-04-05 一.常用三维软件简介 由于游戏引擎本身的建模功能相对较弱,无论是专业性还是自由度都无法同专业的三维软件相比,所以大多数游戏中的模型 ...

  4. 3DSMAX中英文对比大全(从A-Z分类)

    A Absolute Mode Transform Type-in绝对坐标方式变换输入 Absolute/Relative Snap Toggle Mode绝对/相对捕捉开关模式 ACIS Optio ...

  5. 3ds Max从入门到精通

    1. 软件的下载与安装 这里用的是3ds Max2009简体中文版 32位 在 Win7上运行记得打上sp2补丁,不然会有bug. 2. 3ds Max的历史 3ds Max可以用在动画和游戏,点云数 ...

  6. Unity 手机屏幕适配

    ////如有侵权 请联系我进行删除 email:YZFHKM@163.com 1.游戏屏幕适配 屏幕适配是为了让我们的项目能够跑在各种电子设备上(手机,平板,电脑) 那么了解是适配之前首先要了解两个知 ...

  7. jsp页面间传递参数 中文乱码问题(zz)

      jsp页面间传递参数 中文乱码问题 1.传递参数 var url = "*****Test.jsp?param1="+encodeURI(encodeURI(str));//对 ...

  8. 大叔也说Xamarin~Android篇~Activity之间传递数组

    回到目录 我们在开发应用程序时,不可能只使用一个Layout或者一个Activity,比如你个管理系统,要求用户先登陆然后再使用,这时你至少要有两个activity吧,先登陆一个,然后成功后需要跳到别 ...

  9. Vue基础知识之组件及组件之间的数据传递(五)

    vue中的组件是自定的标签,可以扩展的原生html元素,封装可复用的代码 note: 1.在标签命中不要使用大写,标签名字必须用短横线隔开 2.模板中只能有一个根元素,不能使用并列标签. 定义组件 全 ...

随机推荐

  1. ASP.NET输出JSON格式数据

    找到一个方法,虽然返回的不是json,但是数据格式是可以的 ArrayList eventList = new ArrayList(); ; i < ;i++ ) { Hashtable ht ...

  2. Android Studio 个人常用设置

    1.主题 Darcula主题真的看起来舒服很多呢: 2.常用快捷键 "Toggle Case" "Quick Documentation" "Refo ...

  3. Maven指令

    mvn clean compile  //clean告诉Maven清理输出目录target/,compile告诉Maven编译项目主代码. mvn clean test  //清理输出目录target ...

  4. SqlServer不能将text列类型更改为ntext的问题

    可以先将text类型更改为nvarchar,在将nvarchar更改为ntext即可. alter db_note alter column [content] nvarchar; alter db_ ...

  5. PAT (Advanced Level) Practise:1002. A+B for Polynomials

    [题目链接] This time, you are supposed to find A+B where A and B are two polynomials. Input Each input f ...

  6. python 获取html源代码里标签之间的文本用get_text()

    例: 输出<span class="w-txt">分享</span>中的文本"分享" contents = bsObj.find_all ...

  7. LintCode Anagrams

    (记得import java.util.HashMap及Arrays, 首先字符串若为空或者数量为零, 则返回一个空的LinkedList) 1. 把string变为char数组, 再进行排序, 之后 ...

  8. akka实现的actor

    定义一个 Actor 类 要定义自己的Actor类,需要继承 Actor 并实现receive 方法. receive 方法需要定义一系列 case 语句(类型为 PartialFunction[An ...

  9. IplImage结构体

    一.IplImage的一些重要成员: 1.origin:图像原点的定义.=0,则图片的左上角是原点:=1,则左下角是原点.                                  IplIm ...

  10. SecWeek

    “叮铃铃,叮铃铃”清晨闹钟如期而至,每天的这个时候都会是一天中最头痛的时刻,每日坚持早起,渐渐已经开始习惯,扶着沉重的额头,侧身翻起,会觉得世界都在天旋地转. 一个人,悄悄的开门,悄悄的刷牙洗脸,然后 ...