【GAMES101】Lecture 12 曲面

目录

贝塞尔曲面

曲面细分

Loop细分(Loop Subdivision)

Catmull-Clark 细分(Catmull-Clark Subdivision)

曲面简化


贝塞尔曲面

然后前面讲了贝塞尔曲线,这里讲一下这个贝塞尔曲面

那怎么样从贝塞尔曲线到贝塞尔曲面的转换呢,前面我们说到这个逐段的贝塞尔曲线是通过四个控制点来画的,这里贝塞尔曲面是通过16个控制点来画的

把这16个控制点排列成4×4网格,那么每行或者每列是不是有四个控制点就可以画出一条贝塞尔曲线,这样就可以画出四条并列的贝塞尔曲线,然后比分说有这样一个平面从另一个方向上扫过去,是不是会和这四条线有四个交点,那这四个点是不是又可以画出一条贝塞尔曲线,这样是不是就可以用贝塞尔曲线布满整个曲面

具体来说,在时间u时可以确定四条贝塞尔曲线上的四个点对不对,然后在时间u上的时间v是不是可以通过u的四个控制点确定的贝塞尔曲线v时刻的点,这样通过(u,v)就可以确定曲面上任意一点的位置,这个贝塞尔曲面就可以画出来了

曲面细分

我们可以通过将组成物体的多边形继续细分成更多的多边形来使这个物体产生更多的细节或者表面更加光滑

Loop细分(Loop Subdivision)

这个loop细分是针对三角形的,而且这个loop是个人名,和循环没关系

loop细分就分两步,第一步将一个三角形拆分成多个三角形,第二步移动这些新生成的三角形

具体怎么做呢?第一步拆分三角形好做,直接连接各条边上的中点,这样一下子就可以一个变多个小三角形

问题在于如何移动这些新的三角形的位置对吧,其实就是如何移动这些三角形的顶点问题,我们把顶点分成两种,一种是旧顶点,就是原本三角形的三个顶点,另一种是新形成的顶点,就是原来三角形三条边上的中点,这两种顶点需要分开处理

对于新生成的顶点,那这个点它肯定在一条三角形边上,那一条边会有两个三角形共享,那就可以找出这四个顶点ABCD,中间的白点就是我们要移动的点,这个白点的位置就是周围这四个顶点的加权平均值,我们认为它和AB更接近一些,因此AB权值更大

对于旧顶点,它肯定会是多个三角形的顶点是不是,我们定义两个值n和u,这个n就是这个旧顶点的度,所谓顶点的度是指它连接了多少条边,这个u呢,如果n=3那么u=3/16,否则u=3/(8n),好,同样是周围这些顶点以及它本身的一个加权平均,对于自己的权值是1-nu,对于周围顶点的平均值的权值是u

这样我们先拆分三角形,然后移动三角形的顶点就可以实现这个loop细分

Catmull-Clark 细分(Catmull-Clark Subdivision)

然后我们的loop细分其实可以知道它只能用于三角形对不对,那对于这个普通网格多边形怎么办呢,这就是Catmull-Clark 细分做的事情

对于这么些多边形我们定义这个不是四边形的叫非四边形,然后顶点的度(就是连接的边数)不是4的顶点叫作奇异点,就像下面这个图有两个非四边形,有两个奇异点

然后对于这些多边形,我们给每个面添加上一个顶点,先不管它放哪,然后每条边取中点,连接所有顶点,然后就会变成这样,可以发现这样操作之后呢,非四边形就会消失,取而代之的是多了奇异点,而且消失的非四边形数等于增加的奇异点数

我们就通过这种方式来细分这个曲面

然后我们需要解决的问题就是如何移动新增加的这些点的位置 

依然我们将顶点分成几类处理,对于这个在面上增加的点f,它的值就是周围四个顶点的平均值,然后对于边的中点,它的值是上下两个顶点再加上两边f点的平均值

还有就是原来的旧顶点,是通过这样的加权平均计算

这样就可以实现这个Catmull-Clark 细分

曲面简化

我们可以通过减少使用的多边形数量来近似的表示原来的物体

因为很多时候我们不需要知道这个物体的细节,或者说我从很远的地方看它,本就无需细节

怎么实现这种简化呢,是通过边坍缩的方式实现的,所谓边坍缩,指的是,将某条边的两个顶点融合,这样这条边就消失了

这样的问题在于,我如何去挑选哪些边来消失呢,即哪些边是价值比较小的需要消失

这里是通过这个叫二次误差度量的衡量方式来比较的,对于一条边坍缩后我去计算融合后的顶点和周围顶点的距离的平方和,我去选取这个距离平方和最小的来进行坍缩

这里的距离平方和使用了堆进行存储

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

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

相关文章

Windows系统本地安装Wnmp服务并结合内网穿透公网远程访问

目录 前言 1.Wnmp下载安装 2.Wnmp设置 3.安装cpolar内网穿透 3.1 注册账号 3.2 下载cpolar客户端 3.3 登录cpolar web ui管理界面 3.4 创建公网地址 4.固定公网地址访问 结语 作者简介: 懒大王敲代码,计算机专业应届生 今天给大家聊聊Windows…

vite+vue3+ts项目上线docker 配置反向代理API

这次重点的坑是反向代理。 1。项目中配置代理,为了跨域请求数据 项目根目录中新建vite.config.ts文件 在文件中添加配置代理 注意:其中 /api 和target 的地址后面没有 / 2。在项目根目录中新建Httprequest.ts文件,引入axios,并…

打击者H5小游戏

欢迎来到程序小院 打击者 玩法&#xff1a;点击飞机上下左右移动躲过子弹射击&#xff0c;打掉上方敌人飞机&#xff0c; 遇到药包会增加能量&#xff0c;弹药包会升级武器&#xff0c;快去射击吧^^。开始游戏https://www.ormcc.com/play/gameStart/262 html <div id"…

【XR806开发板试用】在 xr806 上用 ncnn 跑神经网络 mnist

在 xr806 上用 ncnn 跑神经网络 mnist 0x0 介绍 xr806 和 ncnn https://xr806.docs.aw-ol.com/ XR806是全志科技旗下子公司广州芯之联研发设计的一款支持WiFi和BLE的高集成度无线MCU芯片&#xff0c;支持鸿蒙L0系统 https://github.com/Tencent/ncnn ncnn是腾讯开源的高性…

uniapp瀑布流实现

1. 图片瀑布流&#xff1a; 不依赖任何插件&#xff0c;复制即可见效&#xff1a; <template><view class"page"><view class"left" ref"left"><image class"image" v-for"(item,i) in leftList" :k…

[GXYCTF2019]禁止套娃(特详解)

刚打开页面什么都没有&#xff0c;抓包也什么都没有 那就dirsaerch扫一下&#xff0c;发现状态码都是429&#xff0c;访问太快了&#xff08;这里很多师傅都没有说明或者说清楚&#xff09; 这里改了一下线程&#xff08;kali自带的&#xff0c;如果用的脚本要加前面要加python…

ETL能实现什么流程控制方式?

随着大数据时代的到来&#xff0c;数据处理工具成为各个行业中不可或缺的一部分。运用数据处理工具&#xff0c;能够大幅度帮助开发人员进行数据处理等工作&#xff0c;以及能够更好的为企业创造出有价值的数据。那在使用ETL工具时&#xff0c;我们往往会通过ETL平台所携带的组…

分布式系统面试的秘籍:深入探讨事务、幂等性和补偿事务,掌握二/三阶段提交,了解Sagas事务模型和分布式ID的实战应用!

1、分布式幂等性如何设计&#xff1f;并举例说明 设计分布式系统的幂等性是确保在面对重复请求或操作时系统能够产生相同结果的重要方面。以下是一些设计方法&#xff0c;并结合一个简单的例子说明&#xff1a; 设计方法&#xff1a; 唯一标识符&#xff08;ID&#xff09;:…

centos7上安装mysql5.7并自定义数据目录路径

1、卸载mariadb rpm -qa |grep mariadb #查出来的结果是mariadb-libs-5.5.68-1.el7.x86_64 rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps #卸载查到的结果 2、官网下载响应的tar.gz包&#xff0c;比如mysql-5.7.38-el7-x86_64.tar.gz &…

跨境ERP定制趋势预测:数字化转型助您赢得市场先机

随着全球贸易的不断融合和发展&#xff0c;跨境业务已成为许多企业拓展市场的重要途径。在这个背景下&#xff0c;ERP定制正逐渐成为企业数字化转型的关键利器。本文将为您预测跨境ERP定制的趋势&#xff0c;并探讨数字化转型如何助您赢得市场先机。 ERP定制趋势预测 1. 数据…

springboot3+vue3支付宝在线支付案例-渲染产品列表页面

springboot3vue3支付宝在线支付案例-渲染产品列表页面&#xff01;今天折腾了半天&#xff0c;完成了vue3前端项目的产品列表选染。 我们使用到了技术有axios&#xff08;发送跨域的请求获取产品&#xff09;。pinia&#xff08;绑定数据&#xff09;, import { ref } from vu…

pve宿主机更改网络导致没网,pve更改ip

一、问题描述 快过年了&#xff0c;我把那台一直在用的小型服务器&#xff0c;带回去了&#xff0c;导致网络发生了变更&#xff0c;需要对网络进行调整&#xff0c;否则连不上网&#xff0c;我这里改的是宿主机&#xff0c;不是pve虚拟机中的系统。 二、解决方法 pve用的是…