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

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(使用前将#替换为@)

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

  • 计算机图形及分类的相关知识,“计算机图形学”课程教与学

    摘 要 xff1a 本文针对作者几年来在 计算机图形学 课程教学过程中实际遇到的问题 xff0c 从教师如何教授知识和学生如何学习知识两个方面进行深入分析和研究 xff0c 提出了改进课堂教学 实验教学以及学生学习的方法 教学实践表明 xf
  • MFC计算机图形学(3)

    之前我们已经可以画出直线和曲线了 但是算法虽容易理解 xff0c 但是复杂度高 xff0c 今天就介绍比较流行的DDA画线法 xff0c 还有 xff0c 对鼠标进行事件有所响应 xff0c 即 xff0c 在画板上 xff0c 鼠标左键单
  • 计算机图形学期刊影响因子,计算机图形学 | CCF推荐期刊专刊信息2条

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

    之前我们已经可以画出直线和曲线了 但是算法虽容易理解 xff0c 但是复杂度高 xff0c 今天就介绍比较流行的DDA画线法 xff0c 还有 xff0c 对鼠标进行事件有所响应 xff0c 即 xff0c 在画板上 xff0c 鼠标左键单
  • C#软件开发实例.私人订制自己的屏幕截图工具(九)使用自定义光标,QQ截图时的光标

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

    引言 我们已经了解到 我们可以为每个顶点添加颜色来增加图形的细节 从而创建出有趣的图像 但是 如果想让图形看起来更真实 我们就必须有足够多的顶点 从而指定足够多的颜色 这将会产生很多额外开销 因为每个模型都会需求更多的顶点 每个顶点又需求一
  • 计算机图形学 期末复习 微课版 孔令德 五、三维变换与投影 期末复习

    三维几何变换矩阵 为3 3阶子矩阵 对物体进行比例 旋转 反射和错切变换 对图形进行平移变换 三维基本变换 平移变换 比例变换 旋转变换 反射变换 平行投影 平行投影分为正投影和斜投影 投影方向垂直于投影面的平行投影称为正投影 投影方向不垂
  • 计算机图形学 期末复习 微课版 孔令德 七、建模与消隐 期末复习

    计算机中三维物体的表示有线框模型 表面模型和实体模型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
  • 计算机图形学基础:双向反射分布函数 BRDF

    文章目录 光照 照明 Illumination 预备知识 球面坐标 Spherical Coordinate 立体角 Solid Angle 投影面积 Foreshortened Area 光能 Radiant Energy 光通量 Rad
  • PCL点云边界特征检测 (附完整代码 C++)

    一 概述 点云特征在定义上 以我个人理解 大致可以分为两大类 一类是类似于深度学习的featrue map意义 通过计算一些算子来描述点云局部 这种描述只是一种标识符 并没有实际的几何意义 比如 PFH或者 FPFH 之类的 它们只是通过对
  • OBJ格式简单用法

    参考 https www cnblogs com hont p 5239725 html https zhuanlan zhihu com p 342244212 http zwqxin com archives opengl obj mo
  • 多边形的扫描转化算法

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

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

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

    详情请看我的个人博客的体素化Voxelization 基于GPU的三维体素化
  • BRDF

    前言 现实世界中的表面绝大多数都是凹凸不平的 在这种情况下 可以把表面看成是大量朝向各异的微小光学平面的集合 我们肉眼可见的每个点都包含了很多个这样的微小光学平面 光线照射到这些微小表面上时 同样一部分在表面发生反射 这些朝向不同的微表面把
  • 62.[GIS基础]笛卡尔坐标系

    文章目录 笛卡尔坐标系 多坐标系 坐标系的嵌套 坐标变换 坐标系转换 转载请注明原始链接 http blog csdn net a464057216 article details 54578069 后续此博客不再更新 欢迎大家搜索关注微信
  • 判断一个点是否在圆内(三点确定一个圆)

    三角形的外接圆圆心是任意两边的垂直平分线的交点 三角形外接圆圆心叫外心
  • OpenGL超级宝典 纹理(一)

    文章目录 纹理 创建并且初始化纹理 更新纹理数据 从着色器中读取数据 采样器类型 控制纹理数据的读取方式 创建采样器对象和绑定到纹理单元 纹理过滤 设置过滤器 加载纹理 完整代码展示 shader vertex shader fragmen
  • C#软件开发实例.私人订制自己的屏幕截图工具(一)功能概览

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

随机推荐

  • 【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