[计算机图形学入门]9.几何
目录
一.隐式几何
1.隐函数(一个简单的理解)
2.隐式几何
3.一些隐式的几何表示法
二.显式几何
1.显函数(一个简单的理解)
2.显式几何
3.一些显示表示的几何
三.曲线 --显示几何表示方法
1.贝塞尔曲线
2.样条曲线
四.曲面
1.贝塞尔曲面
2.网格表示曲面
五.曲面细分
1.Loop Subdivision用于细分三角形
2.Catmull-Clark Subdivision
六.曲面简化
1.边坍缩
一.隐式几何
1.隐函数(一个简单的理解)
2.隐式几何
用隐函数表示的集合,表示将一堆点归类.给一组坐标,隐式表示能看直接看出是否在几何表面.但若要找哪些点在隐式几何上,相对较难.
3.一些隐式的几何表示法
①.数学公式表示,不适合复杂几何
②.CSG,对几何做布尔运算
③.距离函数
用某一点到几何表面最近距离的函数来表示几何.
图例是将两个几个的距离函数blend融合后,在恢复成原来的样子所得到的.
适合几何间圆滑的过渡.
应用距离函数的例子:
把混合后的距离函数,值为0的地方全找出来,就可以恢复物体表面.
-水平集表述法恢复几何
类似地理等高线,找到函数值相同的多个点.
④.分形几何
类似递归
二.显式几何
1.显函数(一个简单的理解)
2.显式几何
能很快知道有哪些点在平面上,但难判断一个点是不是在平面上.
3.一些显示表示的几何
①.点云(不常用)
将物体表面由无数个点表示,list if points(x,y,z)
点云之后会被变成多边形的面.
②.多边形面(常用)
obj文件:
三.曲线 --显示几何表示方法
1.贝塞尔曲线
用一系列的控制点来定义曲线.
曲线起始方向p1p0,结束方向p3p2. 曲线不一定要经过控制点.
. ①.如何用控制点画出贝塞尔曲线
-几何理解
-三个控制点的二次贝塞尔曲线
-四个控制点
-代数理解
b01 = (1-t)b0 + tb1,t==0时,b01==b0
接着递归,继续插值(第一张图t与1-t反了)
下图资料来源计算机图形学十:几何2—贝塞尔曲线(Bézier Curves)与贝塞尔曲面(Bézier Surfaces)
贝塞尔曲线不一定要在平面内,空间上也可以.
-贝塞尔曲线性质:
t==0一定在起点,t==1一定在终点.一定过起点终点与初末控制点连线的切线.
贝塞尔曲线若要仿射变换,则对控制点仿射变换,再画出曲线即可.但还是不满足投影不变.
贝塞尔曲线一定在控制点围成的凸包内
②.逐段贝塞尔曲线
当控制点数量多时,控制效果并不好
则引入逐段贝塞尔曲线,对于长曲线,可以分为一个控制点一组来控制一段曲线,最后将多段曲线拼接.拼接处若切线方向共线则可以平滑拼接.
拼接点位置相同叫c0连续,若切线共线叫c1连续.
2.样条曲线
-B-样条
-基函数
-具有局部性,不会一点动,曲线全动.
四.曲面
1.贝塞尔曲面
在两个反向分别用贝塞尔曲线
不断扫描,变成一个面.
2.网格表示曲面
根据需要选择合适的几何表述方法.
五.曲面细分
-分出更多三角形 -三角形位置发生变化
细分方法:
1.Loop Subdivision用于细分三角形
一个三角形被拆成了四个.
分出新老顶点,分别进行不同操作.
如果更新新的顶点的位置?
对于某新点(白色),用右边的加权平均来更新位置
对于某旧点(图中白点),用公式更新位置.
公式: pos = (1-n*u)original_pos + u * neighbor_pos_sum(相邻旧点的位置和)
n为顶点的度(出度入度的度),若n=3,u=3/16,否则u=3/(8n).
2.Catmull-Clark Subdivision
对于非三角形面的细分.
先定义一些概念:非四边形面,奇异点(度不为四的点).
取非四边形面边上的中点,与非四边形面中点连接.这之后,奇异点增加了2(与之前的非四边形面的数量有关),非四边形面消失了.就好像非四边形面在细分后变成了奇异点.之后的细分不会再增加奇异点数了.
关于点的位置更新公式:
新面中的点,新边中的点,老的点(按顺序对于图中公式)
两种细分对比:
六.曲面简化
提高程序性能
如何简化?
1.边坍缩
将多个顶点捏在一起合成一个新顶点
-二次误差度量Quadric Error Metrics
使简化后的模型能最大程度还原原本的模型.
找到点的一个最优位置,使其到原本平面距离平方和最小
可以对于每一条边,坍缩后选二次误差度量小的边坍缩.利用到堆数据结构,选取最小,更新堆结构,再取...(贪心算法)
资料来源Games101
[计算机图形学入门]9.几何相关推荐
- GAMES101-现代计算机图形学入门-闫令琪——Lecture 05 Rasterization 1 (Triangles)
GAMES101-现代计算机图形学入门-闫令琪--Lecture 05 Rasterization 1 (Triangles) 目录 GAMES101-现代计算机图形学入门-闫令琪--Lecture ...
- Games101计算机图形学入门基础之一:向量变换、矩阵变换、视图变换、欧拉角与四元数
Games101计算机图形学入门基础之一:向量变换.矩阵变换.齐次坐标.欧拉角与四元数 目录 Games101计算机图形学入门基础之一:向量变换.矩阵变换.齐次坐标.欧拉角与四元数 前言 向量 向量加 ...
- 计算机图形学十:几何2—贝塞尔曲线(Bézier Curves)与贝塞尔曲面(Bézier Surfaces)
贝塞尔曲线与贝塞尔曲面 1 贝塞尔曲线(Bézier Curves) 2 贝塞尔曲面(Bézier Surfaces) Reference (本篇文章同步发表于知乎专栏:https://zhuanla ...
- 计算机图形学入门-线性代数复习
本专栏内容整理了GAMES101的计算机图形学课程的主要内容,作为我学习计算机图形学的一份复习备份或叫做笔记.内容中如有错误,或有其他建议,欢迎大家指出. 附上GAMES101计算机图形学课程:GAM ...
- Games101计算机图形学入门基础之二:光栅化
Games101计算机图形学入门基础之二:光栅化 引言 三角形的离散化 采样 走样 走样带来的瑕疵 反走样 先模糊再采样 傅里叶变换 低通滤波 卷积 多重采样抗锯齿(超采样) 深度缓存 可见性与遮挡( ...
- 计算机图形学入门(一)-线性代数部分知识1
本部分主要介绍了向量的点乘与叉乘在图形学中的基本应用,介绍了图形学中常用的2D矩阵变换,例如缩放.对称.切变换.旋转.平移.逆变换.组合变换和分解变换.还有在图形学中为了简化操作而采取的添加维度的方法 ...
- 计算机图形学入门(二)-线性代数部分知识2视图变换和投影变换
本章主要进行了视图/相机变换的求解,和两种投影变换的求解(正交投影.透视投影),并且简单的完善了3D旋转变换的介绍. 主要的学习过程来自下面的视频,本文只会有主要的基础内容,默认一些知识大家是掌握的, ...
- OpenGl计算机图形学入门
OpenGl计算机图形学入门 前言 一.OpenGl及GLSL 二.语言 1.C++及C++应用程序 (1)C++ (2)C++应用程序 三.库 1.GLFW 窗口管理库 2.GLEW 扩展库 3.G ...
- 计算机图形学入门总结!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Albert,东南大学,Datawhale成员 Computer ...
最新文章
- 选中文字改变默认颜色
- java8 升级_java8升级
- U盘的挂载和卸载(也可以查看指令篇)
- 获取滚动条距离底部的高度
- Centos7 重启网卡
- 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(三)
- OpenFeign 的 9 个坑,每个都能让你的系统奔溃
- HTML5 FormData实现文件上传实例
- latex textbf没有用_把知乎改造成LaTex创作平台
- a form 出口享惠情况_进出口报关
- MySQL简单技巧(三):教你轻松用information_schema表+python实现表结构同步(上)——理论篇
- dede后台系统基本参数空白怎么办?
- 洛谷 P1725 琪露诺
- Faulty Odometer(进制转化)
- 协议大全 http协议 http://www.chinaitpower.com/Net/xieyi/HTTP/index.html
- PAT-B 1036. 跟奥巴马一起编程(15)(15 分) 画方型字符
- 老照片怎么修复?模糊照片如何变清晰?试试这些方法
- Python实验报告 实验16 - Python计算生态
- 【数据结构与算法】填空练习题
- 计算机改显存会有啥影响,显卡显存越大越好吗?显存对电脑速度的影响有哪些?...
热门文章
- 通过session爬取我要自学网会员中心的账号信息
- Alfred Workflow 入门指南
- 最新版安全狗(v4.0.2.665) 文件上传 绕过
- DAE模型——阅读和理解COLLADA文档(2)
- 数字图像处理实验——数字图像处理初步
- 油猴Tampermonkey及其脚本的安装
- 九针串口接线问题, 232, 485
- DMC-Net: Generating Discriminative Motion Cues for Fast Compressed Video Action Recognition 论文赏析
- 新H5中用canvas画一个数字钟表
- 【普】静态IP和动态IP有什么区别?