自由变形技术(Free-Form Deformation)
自由变形技术Free-Form Deformation是编辑几何模型的重要手段,它于80年代由Sederberg等人提出,目前许多三维建模软件中都有这种变形算法。自由变形方法在变形过程中并不是直接操作几何模型,而是把几何模型嵌入到变形空间,然后通过操作变形空间来使得嵌入其中的几何模型发生变形,如图所示。
自由变形算法主要过程如下:
1. 创建一个平行六面体的变形空间框架,将待变形几何模型嵌入这个框架中,同时建立局部坐标系,计算几何模型的顶点在局部坐标系下的坐标:
其中,S、T、U可以认为是这个变形框架的3个边长向量,并且0 < s < 1、0 < t < 1、0 < u < 1。需要注意的是,在变形过程中,几何模型顶点的局部坐标(s, t, u)都是固定不变的。
2. 移动变形框架控制点,利用几何模型顶点的局部坐标(s, t, u)、控制点世界坐标和Bernstein多项式重新计算几何模型每个顶点的世界坐标:
其中P(i, j, k)为框架控制点的新坐标,l、m、n分别为在S、T、U坐标轴上划分的格子数目。
本文为原创,转载请注明出处:http://www.cnblogs.com/shushen。
参考文献:
[1] Sederberg, Thomas W., and Scott R. Parry. "Free-form deformation of solid geometric models." international conference on computer graphics and interactive techniques 20.4 (1986): 151-160.
[2] https://en.wikipedia.org/wiki/Bernstein_polynomial
附录
n阶Bernstein基础多项式的表达形式为:
例如:。
Bernstein基础多项式的一个重要性质是其所有项之和为1:
n阶Bernstein基础多项式可以组成一个多项式向量空间Πn,那么空间中任意一点可以表示成Bernstein基础多项式的线性组合:
其中βv为Bernstein系数或Bézier系数,其实上面的表达式就是Bézier曲线的表达式。
自由变形技术(Free-Form Deformation)的更多相关文章
- Windows PE 第十二章 PE变形技术
PE变形技术 这章东西太多,太细了.这里我只记录了一些重点概念.为后面学习做铺垫. PE变形:改变PE结构之后,PE加载器依然可以成功加载运行我们的程序. 一 变形常用技术: 结构重叠技术.空间调整技 ...
- OpenGL实现3D自由变形
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...
- [SAP ABAP开发技术总结]Form(subroutine)、Function参数传值传址
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- 3ds max学习笔记(十四)-- (FFD自由变形)
FFD长方体,FFD圆柱体: 栗子2:通过对长方体进行自由编辑,松弛,和涡轮平滑的操作实现抱枕模型,抱枕表面的凹凸效果,可以通过贴图的方式来实现:
- Web自动化selenium技术快速实现爬虫
selenium是大家众所周知的web自动化测试框架,主要用来完成web网站项目的自动化测试,但其实如果要实现一个web爬虫,去某些网站爬取数据,其实用selenium来实现也很方便. 比如,我们现在 ...
- 虚拟现实中自由步行(free-space walking)
之前我们讲到了虚拟现实中漫游方式的分类.虚拟现实中的漫游(travel/navigate)方式,即是应用提供给用户的,在虚拟环境中移动的方式.虚拟现实的漫游方式中,有一种被称为“完全动作线索”1,即用 ...
- 2D动画如何做出3D体积感
https://cowlevel.net/article/1959026 <AngerForce>幕后故事 这篇文章是个老坑,最近有时间开始写,也是对之前项目的一个总结和记录吧. 本篇文章 ...
- ASP.NET MVC 5 02 - ASP.NET MVC 1-5 各版本特点
参考书籍:<ASP.NET MVC 4 高级编程>.<ASP.NET MVC 5 高级编程>.<C#高级编程(第8版)>.<使用ASP.NET MVC开发企业 ...
- PS网页设计教程XXIV——从头设计一个漂亮的网站
作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,“熟读唐诗三百首,不会作诗也会吟”. 本系列的教程来源于网上的PS教程,都是国外的,全英文的.本人尝试 ...
随机推荐
- TensorFlow笔记-初识
深度学习: 转换编程的思维(和传统的机器学习的编程方式不太一样) 测试链接 TensorFlow的安装 CPU版本: 只支持程序在CPU上计算/运算,默认运行就是CPU上运行 卸载: pip unin ...
- 【MySQL】(二)InnoDB存储引擎
InnoDB是事务安全的MySQL存储引擎,设计上采用了类似于Oracel数据库的架构.通常来说,InnoDB存储引擎是OLTP应用中核心表的首选存储引擎.同时,也正是因为InnoDB的存在,才使My ...
- 小白学python-day02-二进制、计算机单位、编程语言分类介绍、
今天是第二天,以下是学习内容总结. 但行努力,莫问前程. ----------------------------------------------------------------------- ...
- 名称空间(name space)
名称空间(name space) 函数编程中,有一个挥之不去的问题:变量名的定义. 我们知道,在相同的作用域内不能出现两个相同的变量名,否则前者被后者覆盖 我们还知道,局部变量的名字可以与全局变量的名 ...
- PHP与ECMAScript_6_常用运算符
优先级从上到下 PHP ECMAScript 特殊运算符 [ ] ,( ) [ ] ,( ) 自增减/类型 ++ -- ! int float string array object @ (错误抑 ...
- 第二章、Go-基础语法
2.1.变量定义 (1)第一个程序helloworld package main import( "fmt" ) func main() { fmt.Println("h ...
- 物联网网关MQTT应用与配置测试介绍
1.MQTT介绍: MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),作为除Modbus外最常用的协议之一,因其基于发布/订阅的模式,具有资源消 ...
- Apple放大绝进行反取证
取证说穿了其实就是攻防,这本是正义与邪恶的对决,亦即执法单位与嫌疑犯两者之间的事,但现实生活中要比这复杂多了. 怎么说呢?举个例子大家便理解了.取证人员费尽心思,用尽各种手法,努力地想要自手机上提取重 ...
- 四、Python基础(1)
目录 四.Python基础(1) 四.Python基础(1) 1.什么是变量? 一种变化的量,量是记录世界上的状态,变指得是这些状态是会变化的. 2.为什么有变量? 因为计算机程序的运行就是一系列状态 ...
- AppBoxFuture: 123挨个站-数据按序存储
最近几天在优化存储的编码规则,顺带把之前设计了但未实现的倒排序一并实现了.由于所有数据(元数据.实体.索引等)都映射至RocksDB的Key-Value存储,所以必须扩展RocksDB的自定义比较 ...