《vtk9 book》 官方web版 第3章 - 计算机图形基础 (2 / 6)

3.4 表面特性

        当光线穿过空间时,其中一些光线会与我们的物体相交。当这种情况发生时,光线会与物体表面相互作用,产生一种颜色。部分由此产生的颜色实际上并不是由直接光线产生的,而是来自其他物体反射或散射的环境光。环境光照模型对此进行了考虑,它是对现实世界中复杂光线散射的简单近似。它将光源的强度曲线应用于物体的颜色,也表示为强度曲线。结果就是我们在观察物体时所看到的光的颜色。在这样的模型中,重要的是要意识到,白色光照射到蓝色球上与蓝色光照射到白色球上是无法区分的。环境光照方程如下:

 

这段 大概是:

“ 在这里, Ra 是由环境光引起的最终强度曲线,Lc是环境光的强度曲线,而Oa是物体的颜色曲线。为了简化方程,我们假设所有方向向量都被标准化了(即,具有单位长度)。”

 

        得到的颜色的两个组成部分取决于直接光照。漫反射光照,也称为兰伯特反射,考虑了光线入射到物体上的角度。图3-7显示了一个圆柱体的图像,随着从中心向侧面移动,圆柱体变暗。圆柱体的颜色是恒定的;击中圆柱体表面的光的数量会发生变化。在中心,入射光几乎垂直于圆柱体表面,每个表面积收到更多的光线。当我们向侧面移动时,这个数量会减少,直到最终入射光线与圆柱体侧面平行,结果强度为零。

        图3-7. 平面和高拉德着色。不同的着色方法可以显著改善用多边形表示的物体的外观。顶部的平面着色使用每个多边形上的恒定表面法线。底部的高拉德着色插值多边形顶点的法线,使外观更加平滑。请参阅FlatVersusGouraud.cxx和FlatVersusGouraud.py。

        漫反射光照的贡献在方程3-2中表示,并在图3-8中进行了说明。

        镜面光照代表了光源在光滑物体上的直接反射。图3-10显示了一个漫反射光照的球体,具有不同的镜面反射。镜面强度(在顶部和底部行之间变化)控制了镜面光照的强度。镜面功率O_{sp}表示物体有多光滑,更具体地说,它表示了当反射角度偏离完美反射时镜面反射迅速减弱的速度。较高的值表示衰减更快,因此表面更光滑。参考图3-9,镜面光照的方程如下:

  这段原文大体:(请高手多指教)
“我们已经分别介绍了不同的光照模型的方程。我们可以同时或者结合应用所有的光照模型。方程3-4将环境光、漫反射光和镜面光结合成一个方程。

    结果是物体表面上的一个点的颜色。常数ka、kd和ks控制了物体环境光、漫反射光和镜面光的相对量。常数Ia、Id和Is指定了每种类型的光要使用的颜色。这六个常数以及镜面功率是表面材质属性的一部分。(其他属性,比如透明度,将在文本的后面部分介绍。)这些属性值的不同组合可以模拟出暗淡的塑料和抛光的金属。该方程假设了一个无限点光源,正如“光源”部分所描述的。然而,该方程可以很容易地修改以包含其他类型的定向光照。

图3-10. 镜面系数的效果。镜面系数控制物体的明亮度。顶部行具有镜面强度值为0.5;底部行为1.0。沿水平方向,镜面功率发生变化。数值(从左到右)分别为5、10、20和40。请参阅SpecularSpheres.cxx。

3.5 相机


        我们有发射光线的光源和具有表面属性的角色。在我们角色表面的每个点上,这种相互作用会产生一些复合颜色(即来自光线、物体表面、镜面和环境效果的组合颜色)。现在我们渲染场景所需要的就是相机。有一些重要因素决定了3D场景如何投影到平面上形成2D图像(见图3-11)。这些因素包括相机的位置、方向和焦点,相机投影方法以及相机裁剪平面的位置。

        图3-11 相机属性。


        相机的位置和焦点定义了相机的位置和指向位置。从相机位置到焦点定义的矢量被称为投影方向。相机图像平面位于焦点处,通常垂直于投影矢量。相机的方向由位置和焦点加上相机视角向量控制。这些完全定义了相机视图。

        投影方法控制了角色如何映射到图像平面。正交投影是一种平行映射过程。在正交投影(或平行投影)中,进入相机的所有光线都与投影矢量平行。透视投影发生在所有光线通过一个公共点(即视点或投影中心)的情况下。要应用透视投影,我们必须指定透视角度或相机视角。

        前后裁剪平面与投影矢量相交,通常垂直于它。裁剪平面用于消除距离相机太近或太远的数据。因此,只有在裁剪平面内的角色或角色部分是(可能)可见的。裁剪平面通常垂直于投影方向。它们的位置可以使用相机的裁剪范围来设置。平面的位置是从相机位置沿投影方向测量的。前裁剪平面位于最小范围值处,后裁剪平面位于最大范围值处。在第7章 - 高级计算机图形学中,当我们讨论立体渲染时,我们将看到不垂直于投影方向的裁剪平面的示例。

        综合起来,这些相机参数定义了一个矩形金字塔,其顶点位于相机的位置,沿投影方向延伸。金字塔在顶部被前裁剪平面截断,在底部被后裁剪平面截断。由此产生的视锥定义了相机可见的3D空间区域。

        虽然相机可以通过直接设置上述属性来进行操作,但也有一些常见的操作可以简化工作。图3-12和图3-13将帮助说明这些操作。改变相机的方位角会围绕其视角向量旋转其位置,以焦点为中心。可以将其视为将相机向左或向右移动,同时始终保持到焦点的距离不变。改变相机的仰角会围绕其投影方向和视角向量的叉积在焦点处旋转其位置。这相当于向上和向下移动相机。要旋转相机,我们围绕视平面法线旋转视角向量。旋转有时被称为扭转。

        接下来的两个动作保持相机的位置不变,而是修改焦点。改变偏航会围绕以相机位置为中心的视角向量旋转焦点。这类似于方位角,只是焦点移动而不是位置。俯仰的变化会围绕投影方向和视角向量的叉积在相机位置为中心旋转焦点。拉近和拉远会沿着投影方向移动相机的位置,靠近或远离焦点。此操作被指定为其当前距离与新距离的比值。大于一的值会拉近,小于一的值会拉远。最后,缩放会改变相机的视角,使场景的显示范围更多或更少。

 

Figure 3-12

图3-12. 环绕焦点的相机运动。请参阅CameraModel1.cxx和CameraModel1.py。

Figure 3-13

图3-13. 环绕相机位置的相机运动。请参阅CameraModel2.cxx和CameraModel2.py。

        一旦我们安置好相机,就可以生成我们的2D图像。穿过相机镜头的一些光线会穿过镜头。然后这些光线会击中一个平面,产生一幅图像。这实际上将我们的3D场景投影到2D图像中。相机的位置和其他属性决定了哪些光线被捕获和投影。更具体地说,只有与相机位置相交并在其视锥内的光线会影响最终的2D图像。

        这就结束了我们对渲染的简要概述。光线从光源传播到角色,被反射和散射。其中一些光线被相机捕获并产生一幅2D图像。现在我们将看一些这个过程的细节。

3.6 坐标系统

        计算机图形学中通常使用四种坐标系统以及表示其中点的两种不同方式(图3-14)。虽然这看起来有些多余,但每种坐标系统都有其特定用途。我们使用的四种坐标系统是:模型坐标系统、世界坐标系统、视图坐标系统和显示坐标系统。

        模型坐标系统是定义模型的坐标系统,通常是本地笛卡尔坐标系统。如果我们的一个角色代表一个足球,它将基于足球几何形状的自然坐标系统(例如,一个柱面坐标系统)。这个模型有一个固有的坐标系统,由生成它的人的决定确定。他们可能使用英寸或米作为单位,足球可能用任意轴作为其主轴进行建模。

        世界坐标系统是角色所处的3D空间。角色的一个职责是将模型的坐标转换为世界坐标。每个模型可能有自己的坐标系统,但只有一个世界坐标系统。每个角色必须将其模型缩放、旋转和平移到世界坐标系统中。(模型者可能还需要将其自然坐标系统转换为本地笛卡尔坐标系统。这是因为角色通常假定模型坐标系统是本地笛卡尔坐标系统。)世界坐标系统也是指定相机和光源位置和方向的系统。

        视图坐标系统表示相机可见的内容。它由一对x和y值组成,范围在(-1,1)之间,并且有一个z深度坐标。x、y值指定在图像平面中的位置,而z坐标表示距离或者说是相机的范围。相机的属性由一个四乘四的变换矩阵表示(稍后将描述),该矩阵用于将世界坐标转换为视图坐标。这是引入相机透视效果的地方。

        显示坐标系统与视图坐标系统使用相同的基础,但是不同于使用(-1,1)范围,它使用实际的x、y像素位置在图像平面上。诸如显示窗口大小的因素决定了(-1,1)视图坐标范围如何映射到像素位置。这也是视口产生作用的地方。

图3-14. 模型、世界、视图和显示坐标系统。

        您可能想渲染两个不同的场景,但在同一个窗口中显示它们。这可以通过将窗口分成矩形视口来实现。然后,可以告诉每个渲染器它应该使用窗口的哪个部分进行渲染。视口在x和y轴上的范围是(0,1)。与视图坐标系统类似,显示坐标系统中的z值也表示窗口的深度。这个z值的含义将在“Z缓冲区”部分进一步描述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/251798.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物联网与智慧景区的未来:机遇与挑战并存

随着科技的不断发展,物联网技术在智慧景区中的应用越来越广泛,为旅游业带来了巨大的变革。然而,在物联网与智慧景区的未来发展中,机遇与挑战并存。本文将探讨物联网与智慧景区面临的机遇和挑战,并提出应对措施&#xf…

Spring框架——主流框架

文章目录 Spring(轻量级容器框架)Spring 学习的核心内容-一图胜千言IOC 控制反转 的开发模式Spring快速入门Spring容器剖析手动开发- 简单的 Spring 基于 XML 配置的程序课堂练习 Spring 管理 Bean-IOCSpring 配置/管理 bean 介绍Bean 管理包括两方面: Bean 配置方式基于 xml 文…

网络空间内生安全数学基础(2)——编码信道数学模型

目录 (零)这篇博客在干什么(一)内生安全与香农信道编码定理(二)基本定义(三)编码信道存在定理(三.壹)编码信道存在第一定理(三.贰)编码…

[python] 过年燃放烟花

目录 新年祝福语 一、作品展示 二、作品所用资源 三、代码与资源说明 四、代码库 五、完整代码 六、总结 新年祝福语 岁月总是悄然流转,让人感叹时间的飞逝,转眼间又快到了中国传统的新年(龙年)。 回首过去&#xf…

LLM - Qwen-72B LoRA 训练与推理实战

目录 一.引言 二.模型简介 1.Qwen-Model 总览 2.Qwen-Chat-72B - PreTrain - Tokenizer - Base Line - SFT / RLHF 3.Qwen-72 模型架构 - Config.json - c_attn/c_proj - Attention Forward - ROPE - Qwen MLP - Qwen Block 三.QLoRA 与 Infer 实战 1.SFT 指…

JavaScript鼠标拖放(Drag and Drop)

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 拖放是现代界面不可或缺的交互方式之一。本文将介绍如何用JavaScript…

【蓝桥杯冲冲冲】 [SCOI2005] 骑士精神

蓝桥杯备赛 | 洛谷做题打卡day28 文章目录 蓝桥杯备赛 | 洛谷做题打卡day28[SCOI2005] 骑士精神题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示题解代码我的一些话[SCOI2005] 骑士精神 题目描述 输入格式 第一行有一个正整数 T T T( T ≤ 10

随机森林超参数的网格优化(机器学习的精华--调参)

随机森林超参数的网格优化(机器学习的精华–调参) 随机森林各个参数对算法的影响 影响力参数⭐⭐⭐⭐⭐几乎总是具有巨大影响力n_estimators(整体学习能力)max_depth(粗剪枝)max_features(随机…

系统架构设计师考试大纲2023

一、 考试方式(机考) 考试采取科目连考、 分批次考试的方式, 连考的第一个科目作答结束交卷完成后自动进 入第二个科目, 第一个科目节余的时长可为第二个科目使用。 高级资格: 综合知识科目考试时长 150 分钟&#xff…

使用goland IDE编写go windows ui

最近突发奇想,想实现一款工作节奏的提示安排小闹钟。那首先解决的就是UI。本人擅长go语言。那go在windows ui的探索肯定有人做过了吧。一查还真有,通过知乎,csdn等查到目前支持最好的就是walk库了。那走起试试。 一、拷贝go代码 将官网例子…

idea中找到所有的TODO

idea中找到所有的TODO (1)快捷键 Alt6 (2)View -> Tool Windows -> TODO

kafka客户端生产者消费者kafka可视化工具(可生产和消费消息)

点击下载《kafka客户端生产者消费者kafka可视化工具(可生产和消费消息)》 1. 前言 因在工作中经常有用到kafka做消息的收发,每次调试过程中,经常需要查看接收的消息内容以及人为发送消息,从网上搜寻了一下&#xff0…

css1基础选择器

大纲 一.标签选择器 比较简单,前面直接写目标标签 二.类选择器 应用 例子 三.多类名选择器(调用时中间用空格隔开) 四.id选择器 应用 五.通配符选择器 应用 六.总结

OpenResty 安装

安装OpenResty 1.安装 首先你的Linux虚拟机必须联网 1)安装开发库 首先要安装OpenResty的依赖开发库,执行命令: yum install -y pcre-devel openssl-devel gcc --skip-broken2)安装OpenResty仓库 你可以在你的 CentOS 系统中…

VUE开发记录

1、VUE模板传递参数到JS方法 <select-language :value"item.language" change"selectLanguage($event, key)"></select-language>selectLanguage(value, key){console.log(value, key) }, 2、Element框架el-form-item自定义label和内容 <…

2024 年 5 款适用于免费 iPhone 数据恢复的工具软件

搜索一下&#xff0c;你会发现许多付费或免费的iPhone数据恢复工具声称它们可以帮助你以很高的成功率找回所有丢失的数据。然而&#xff0c;这正是问题所在。真的很难做出选择。为了进一步帮助您解决数据丢失问题&#xff0c;我们在此列出了 5 款最好的免费 iPhone 恢复软件供您…

JS第二天、原型、原型链、正则

☆☆☆☆ 什么是原型&#xff1f; 构造函数的prototype 就是原型 专门保存所有子对象共有属性和方法的对象一个对象的原型就是它的构造函数的prototype属性的值。prototype是哪来的&#xff1f;所有的函数都有一个prototype属性当函数被创建的时候&#xff0c;prototype属性…

Palworld幻兽帕鲁自建服务器32人联机开黑!

玩转幻兽帕鲁服务器&#xff0c;阿里云推出新手0基础一键部署幻兽帕鲁服务器教程&#xff0c;傻瓜式一键部署&#xff0c;3分钟即可成功创建一台Palworld专属服务器&#xff0c;成本仅需26元&#xff0c;阿里云服务器网aliyunfuwuqi.com分享2024年新版基于阿里云搭建幻兽帕鲁服…

ele-h5项目使用vue3+vite+vant4开发:第四节、业务组件-SearchView组件开发

需求分析 展示切换动画搜索框输入文字&#xff0c;自动发送请求搜索结果展示搜索状态维护历史搜索展示&#xff0c;点击历史搜索后发送请求历史搜索更多切换动画效果 <script setup lang"ts"> import OpSearch from /components/OpSearch.vue import { ref } f…

视频播放器nPlayer

nPlayer是一款功能强大的媒体播放器&#xff0c;适用于各种操作系统&#xff0c;包括iOS、Android、Windows和Mac等。它支持多种音频和视频格式&#xff0c;包括MP4、AVI、FLV、MKV等&#xff0c;并提供了高质量的音视频播放和流畅的播放速度。 nPlayer具有多种功能和特点&…