计算机图形学 期末复习 微课版 孔令德 七、建模与消隐 期末复习

2023-11-03

计算机中三维物体的表示有线框模型、表面模型和实体模型3种方法。

模型的数据结构

image.png
三表结构
立方体的点表

顶点 x坐标 y坐标 z坐标
P0 X0=1 Y0=0 Z0=0
P1 X1=1 Y1=0 Z1=0
P2 X2=1 Y2=1 Z2=0
P3 X3=0 Y3=1 Z3=0
P4 X4=0 Y4=0 Z4=1
P5 X5=1 Y5=0 Z5=1
P6 X6=1 Y6=1 Z6=1
P7 X7=0 Y7=1 Z7=1

立方体的边表

起点 终点
E0 P0 P1
E1 P1 P2
E2 P2 P3
E3 P3 P0
E4 P4 P5
E5 P5 P6
E6 P6 P7
E7 P7 P4
E8 P0 P4
E9 P1 P5
E10 P2 P6
E11 P3 P7

立方体的面表

第1条边 第2条边 第3条边 第4条边 说明
F0 E4 E5 E6 E7 前面
F1 E0 E3 E2 E1 后面
F2 E3 E8 E7 E11 左面
F3 E1 E10 E5 E9 右面
F4 E2 E11 E6 E10 顶面
F5 E0 E9 E4 E8 底面

消隐算法分类

  • 隐藏线消除算法:用于消除物体上不可见的边界线。隐藏线消除算法主要是针对线框模型提出的,只绘制物体的各可见棱边。
  • 隐藏面消除算法:用于消除物体上不可见的表面,隐藏面消除算法主要是针对表面模型提出的,使用指定颜色填充物体的各可见面。

凸多面体消隐算法

凸多面体的表面要么完全可见,要么完全不可见。
对于凸多面体的任意一个表面,可以根据其外法向量N与视角向量S(从表面上的一个顶点指向视点)的夹角a来进行可见性检测。
当a大于等于0度,小于90度,cosa大于0:表面可见
当a=90度,cosa=0:表面多边形退化为一条直线
当a大于90度,小于等于180度,cosa小于0:表面不可见

曲面体消隐算法

曲面体实质上是用多面体表示的。曲面体的表面细分为三角形网格或四边形网格,也就是用平面网格来逼近表示。曲面体消隐的主要任务是判断各三角形网格或四边形网格的可见性,可采用与凸多面体消隐类似的算法进行处理,利用小网格的外法向量的数量积来进行可见性检测。

隐藏面消除算法

隐藏面消除算法是指从视点的角度观察物体表面,离视点近的表面遮挡了离视点远的表面,屏幕上绘制的结果为所有可见表面投影的集合。
一种算法与表面的绘制顺序无关,但使用缓冲器记录了物体表面在屏幕上投影所覆盖范围内的全部像素的深度值和颜色值,依次访问屏幕范围内物体表面所覆盖的每一像素,用深度小的像素颜色取代深度大的像素颜色,可以实现消隐。
一种算法是与表面的绘制顺序无关,屏幕上先绘制离视点远的表面,再绘制离视点近的表面,最后绘制的表面遮挡了先绘制的表面,该算法称为深度排序算法(画家算法)

深度缓冲器算法

算法描述

  1. 设置帧缓冲器(fBuffer)初始值为背景色
  2. 确定深度缓冲器(zBuffer)的宽度、高度和初始深度。一般将初始深度置为最大深度值
  3. 对于多边形表面中的每一像素(x,y),计算其深度值z(x,y)
  4. 将z与存储在深度缓冲器中的(x,y)处的深度值zBuffer(x,y)进行比较
  5. 如果z(x,y)小于等于zBudder(x,y),则将此像素的颜色写入帧缓冲器fBuffer(x,y),且用z(x,y)重置zBuffer(x,y)

深度排序算法(画家算法)

原理
假定视点位于三维屏幕坐标系z轴负向的某一位置,则离视点远的表面具有较大的深度,离视点近的表面具有较小的深度。这里,三维平面多边形取所有顶点中的最大z坐标,代表该表面的深度。
算法描述
先将物体的各个表面按面的深度排序形成深度优先级表,z大者位于表头,z小者位于表尾。然后按照从表头到表尾的顺序,逐个取出多边形表面投影到屏幕上,后绘制的表面覆盖先绘制的表面,相当于消除了隐藏面

  1. 按z从大到小的顺序对所有多边形排序
  2. 解决z方向上出现的多边形深度二义性问题,必要时对多边形进行分割,获得一个确定的深度优先级
  3. 按z从大到小的顺序,依次光栅化每一个多边形
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机图形学 期末复习 微课版 孔令德 七、建模与消隐 期末复习 的相关文章

  • MFC计算机图形学(2)

    这里呢 xff0c 先把上一讲的联系讲一下 一般人都用是一个一个的去画 xff0c 但是那样好麻烦 xff0c 计算机的有点就是容易处理重复的事情 xff0c 那就定义成一个画正方形函数吧 xff0c 每次调用就可以了 怎么自定义函数呢 x
  • 计算机图形学(三维观察投影线、视图变换、投影变换)

    一 三维观察流水线 概念 xff1a 将建立的三维场景显示在二维视口的过程称为三维观察流水线 在三维观察流水线中 xff0c 也就是在将三维场景显示在二维视口的过程中 xff0c 需要在不同坐标系下进行不同的操作 xff0c 这些坐标系包括
  • 计算机图形学期刊影响因子,计算机图形学 | CCF推荐期刊专刊信息2条

    原标题 xff1a 计算机图形学 CCF推荐期刊专刊信息2条 图形学与多媒体 Computers amp Graphics Call for papers Shape Modelling International SMI 2019 全文截
  • OpenGL天空盒skybox

    目录 痛彻的感悟 天空盒可能的难题 天空盒代码 痛彻的感悟 今天考完试才发现自己和别人的差距还挺大的 四五六班下午的考试题目 我很快做了出来 但是自己的班级的考试题目 我竟然一道都没有成功 所以我决定把我之前准备的代码公布一下 也希望对一些
  • 实验一 实现改进Bresenham算法

    实验一 实现改进Bresenham算法 一 目的 1 了解直线生成基本原理和常用方法 2 掌握改进Bresenham算法的基本原理和步骤 3 使用C OpenGL编程实现如下内容 输入线段的起始点和终止点坐标位置 利用改进Bresenham
  • 路径追踪原理及实现

    路径追踪 Path Tracing 原理及实现 一 渲染方程 L o p w o
  • games101笔记 Shading

    什么是shading 不同的物体应用不同的材质的过程 就是计算出物体具体应该在的地方 物体的光照 物体本身应该有的材质 Blinn Phong Reflectance Model Blinn Phong反射模型 Blinn Phong Re
  • 几何检测

    概述 几何检测主要相交性检测 这里的内容大体上是根据 3D数学基础 图形与游戏开发 这本书来的 对于这本书来说 这一部分看完了后面内容就不看了 因为后面讲的太空泛了 有点像一本绝世武功的目录一样 看似很强 其实没什么卵用 1 2D隐式直线上
  • Finding the Control Points of a Bezier Curve

    原文链接 https blog sklambert com finding the control points of a bezier curve Finding the Control Points of a Bezier Curve
  • OBJ格式简单用法

    参考 https www cnblogs com hont p 5239725 html https zhuanlan zhihu com p 342244212 http zwqxin com archives opengl obj mo
  • leaflet常用插件库

    1 常用地图切换加载 osm google baidu gaode tianditu etc https github com htoooth Leaflet ChineseTmsProviders 2 切片地图加载 wmts 支持矢量切片
  • 多边形的扫描转化算法

    多边形的扫描转化算法 python 实现 实验目的 实现从多边形顶点表示到点阵表示的转换 从多边形给定的边界出发 通过扫描线的方式求出位于其内部各个像素 从而达到对多边形填充的作用 算法思想 按扫描线顺序 计算扫描线与多边形的相交的交点 这
  • 【OpenGL】机器人手臂的实现

    一 基本功能 实现了机器人的一只手臂 由上臂 下臂 五根手指共同组成 通过A S D F G键向上旋转 通过a s d f g键向下旋转 通过方向键left和right转向 通过up和down实现放缩 效果图如下 二 实现过程 1 实现手臂
  • C#软件开发实例.私人订制自己的屏幕截图工具(五)针对拖拽时闪烁卡顿现象的优化

    本实例全部文章目录 一 功能概览 二 创建项目 注册热键 显示截图主窗口 三 托盘图标及菜单的实现 四 基本截图功能实现 五 针对拖拽时闪烁卡顿现象的优化 六 添加配置管理功能 七 添加放大镜的功能 八 添加键盘操作截图的功能 九 使用自定
  • 基于GPU的三维体素化

    详情请看我的个人博客的体素化Voxelization 基于GPU的三维体素化
  • 计算机图形学GAMES101(十五)光线追踪(蒙特卡洛积分与路径追踪)

    本节涉及内容 蒙特卡罗积分 路径追踪 蒙特卡罗积分 蒙特卡罗积分的核心思想还是求一个不规则图形的面积 它的做法是 首先在a和b之间找一个值xi然后求f x 接着以f x 为高 ab为宽求矩形的面积 最后将所有的值求平均 当采样数量xi趋于无
  • 62.[GIS基础]笛卡尔坐标系

    文章目录 笛卡尔坐标系 多坐标系 坐标系的嵌套 坐标变换 坐标系转换 转载请注明原始链接 http blog csdn net a464057216 article details 54578069 后续此博客不再更新 欢迎大家搜索关注微信
  • Unity3d快速入门

    https www zhihu com question 313621072 Unity3d如何快速入门 前言 进入一个领域 最直接有效的方法就是 寻找相关综述性文章 首先你需要对你入门的领域有个概括性的了解 这些包括 1 主流的学习社区与
  • 图形学相关期刊和会议的基本信息

    目录 期刊 A类 ACM TOG A类 IEEE TIP A类 IEEE TVCG B类 TOMCCAP B类 CAGD B类 CGF B类 CAD B类 GM B类 TCSVT B类 TMM B类 SIIMS C类 CGTA C类 CAV
  • 全局光照算法:reflective shadow maps

    1 技术理解 RSM的全称是reflective shadow maps 受到Instant Radiosity这个离线技术的启发 其思想和ShadowMap的思想近似 在正式介绍和了解这个技术之前 我需要确定RSM用处何在 我想 RTR4

随机推荐

  • 【python】运行/调用/执行/终止/重启.exe文件

    一 运行 调用 执行 打开 exe文件 1 os system cmd command 使用 import os os system cmd command 括号里输入的参数即为在cmd里面输入的内容 具体格式参照这个连接 python中o
  • UE5实现距离测量功能

    文章目录 1 实现目标 2 实现过程 2 1 Widget 2 2 蓝图实现 3 参考资料 1 实现目标 UE5在Runtime环境下测量两个空间点位之间的绝对距离 并支持多段线的距离测量 GIF动图如下所示 2 实现过程 实现原理比较简单
  • Django新增自定义模板函数

    Django新增自定义模板函数 1 创建templatetags文件 2 创建一个 py文件 coding utf 8 from django import template register名称不可改 register template
  • 【数据结构与算法】3、虚拟头节点、动态数组的缩容、动态数组和单链表的复杂度、数组的随机访问

    目录 一 虚拟头节点 二 数组的随机访问 三 动态数组 链表复杂度分析 四 动态数组 add E element 复杂度分析 五 动态数组的缩容 一 虚拟头节点 为了让代码更加精简 统一所有节点的处理逻辑 可以在最前面增加一个虚拟的头节点
  • mybatis-plus设置主键自增 ,获取自增主键id

    第一步 实体类加注解 在主键上加 TableId type IdType AUTO 注解 第二步 在数据库设置主键自增 第二种 可以在mapper插入标签中添加keyProperty id useGeneratedKeys true
  • Courses

    点击打开链接 Problem Description Consider a group of N students and P courses Each student visits zero one or more than one co
  • 网络编程-----socket函数

    1 Socket 函数 访问底层操作系统接口的全部方法 提供服务中心类 简化网络服务器的开发 语法 socket socket family type proto family 套接字家族可以是 AF UNIX 或者 AF INET typ
  • Vue.js 2 渐进式前端框架 的最佳学习方法

    Vue js作为一个后起的前端框架 借鉴了Angular React等现代前端框架 库的诸多特点 并且 取得了相当不错的成绩 Vue js的定位是一个渐进式框架 作者的说法是 与其他框架的区别就是渐进式的想法 也就是Progressive
  • 转:Python2字符编码问题汇总

    这篇文章的部分问题在Python3以后不再存在 老猿只是觉得文章的部分内容还是有参考价值 因此在此原文转发连接 Python2字符编码问题汇总
  • 第三章——Lyapunov理论基础

    文章目录 3 1 非线性系统和平衡点 非线性系统 自治与非自治系统 平衡点 常规运动 3 2 稳定性的概念 稳定性与非稳定性 渐进稳定性和指数稳定性 局部和全局稳定性 3 3 线性化和局部稳定性 3 4 Lyapunov直接法 正定函数和L
  • python的高级变量类型

    1 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 int 浮点型 float 布尔型 bool 真 True 非 0 数 非零即真 假 False 0 复数型 complex 主要用于科学计算 例如 平面场问题 波动
  • (C语言)关于浮点数和0比较大小

    对于浮点数a 不能用if a 0 来判断a与0的大小 应该判断a是否位于0附近的一个很小的区间 EPS EPS 中 或者说a的绝对值小于等于一个很小的数EPS 可定义EPS 1e 6 即用if fabs a lt EPS 正确的实数与0的比
  • 【PHP基础知识】——操作Email

    邮件已经成为我们生活中不可或缺的信息沟通方式 时常需要我们去群发或者定时发送一下邮件给指定对象 例如系统的故障报警邮件 批量回复一些服务信息等 因此 将发送邮件功能做到后台可配置或者自动化是程序开发的重要部分 像Java等语言一样 下面我们
  • 看完这篇 教你玩转渗透测试靶机Vulnhub——DriftingBlues-2

    Vulnhub靶机DriftingBlues 1渗透测试详解 Vulnhub靶机介绍 Vulnhub靶机下载 Vulnhub靶机漏洞详解 信息收集 暴力破解 漏洞利用 反弹shell nmap提权 获取flag Vulnhub靶机渗透总结
  • docker 端口映射错误解决方法

    COMMAND FAILED sbin iptables t nat A DOCKER p tcp d 0 0 dport 8111 j DNAT to destination 172 17 0 6 8111 i docker0 faile
  • [Android] 底部菜单布局+PopupWindows实现弹出菜单功能(初级篇)

    这篇文章主要是自己研究如何对底部菜单进行布局 并简单的实现点击不同 按钮 实现图片切换和背景切换的功能 最后通过PopupWindows实现弹出菜单 点击不同按钮能实现不同方法 相当于美图秀秀编辑图片的功能吧 它并没有涉及到Fragment
  • c++ 函数指针

    函数指针基础 1 获取函数的地址 2 声明一个函数指针 3 使用函数指针来调用函数 获取函数指针 函数的地址就是函数名 要将函数作为参数进行传递 必须传递函数名 声明函数指针 声明指针时 必须指定指针指向的数据类型 同样 声明指向函数的指针
  • 【Redis】深入理解 Redis 事务机制

    文章目录 前言 一 回顾 MySQL 事务 1 1 MySQL 事务的概念与特性 1 1 MySQL 事务的管理 二 对 Redis 事务的认识 2 1 什么是 Redis 的事务 2 1 1 Redis 事务的概念 2 1 2 对 Red
  • 虚拟机 Linux 系统自定义桌面分辨率且重启后保持不变

    这是原先写在博客园的 原标题为 Linux Ubuntu 虚拟机系统自定义桌面分辨率且重启后保持不变 现在做部分修改 适用于 Debian 系发行版 我用 VMware Workstation 12 Pro 安装的 Ubuntu MATE
  • 计算机图形学 期末复习 微课版 孔令德 七、建模与消隐 期末复习

    计算机中三维物体的表示有线框模型 表面模型和实体模型3种方法 模型的数据结构 三表结构 立方体的点表 顶点 x坐标 y坐标 z坐标 P0 X0 1 Y0 0 Z0 0 P1 X1 1 Y1 0 Z1 0 P2 X2 1 Y2 1 Z2 0