Skin Microstructure Deformation with Displacement Map Convolution项目小结
经常有人问我你最近在干什么,但一句话真的很难说明白,最近两个月一直在尝试将Skin Microstructure Deformation with Displacement Map Convolution这篇论文以离线渲染的形式搬运到现有三维工具中,优先就是maya。首先非常感谢论文发表团队无私的贡献了自己的研究成果及过程,附一个论文introduce:http://gl.ict.usc.edu/Research/SkinStretch/。
概述:在cg制作中脸部写实渲染一直是体现水准的领域,随着硬件、扫描技术及渲染器的进步,脸部写实的静帧渲染已经趋向完美,但脸部动作导致的皮肤微观结构拉伸挤压效果的模拟依然存在瑕疵,因为微观结构往往是由扫描贴图置换surface获得,而这个扫描贴图往往是单帧,静态的贴图只会跟着脸部顶点做缩放变换,并不能产生动态的拉伸挤压效果。Skin Microstructure Deformation with Displacement Map Convolution这篇论文就高效的解决了这个问题。但论文中采用的是实时的方案,这种方案虽然效率高,执行快,但对于vfx公司来讲,能够生成动态贴图序列并输出才是最佳方案。我解决的就是这个问题。
以下简要记录一下我的实现过程。
一:使用maya变形器的过程中一般会有原始shape及变形shape两个模型,首先要做的是提取任一shape的顶点信息,再迭代获取顶点相连的三角面列表,将单一三角面信息存储为向量信息,再将该三角面向量翻转到TangentSpace,这样就可以在uv空间中计算原始shape到变形shape的transform矩阵了,平均该顶点相连的三角面列表的transform矩阵即可获得当前顶点的transform信息。
二:利用顶点transform信息,即可计算拉伸轴s、t及拉伸量了。旋转矩阵的计算及拉伸轴的计算都可以通过svd分解获得,2x3矩阵及2x2矩阵的svd分解都可以不借助计算库完成,所以整个过程会很干净。
三:获得所有顶点的s、t轴及拉伸量后,即可将着手前片元处理了。在这里我并未利用opengl来绘制stmap图,而是自行写了一个片元方法来解决插值步骤,大致思路是对模型中所有三角面遍历,翻转三角面到uv空间中,沿y轴进行扫描,逐行计算st轴及拉伸量。此处略。
四:现在已经有了st片元信息,就可以开始后片元操作了。利用前片元信息,对原始置换贴图做两次卷积,即可获得动态贴图。实际上这一步是一个近似计算,因为此处只是近似的将二维卷积算子分解为两个一维算子,但考虑算法复杂度的大幅优化,这种近似是可以接受的。
这四步就是我的基本实现步骤,完成这个研发项目的过程波折不断,既要冒着项目失败的风险,也要顶住其他因素的干扰。在最后时刻惊险完成工具原型的同时,也离开了公司。
放几张成果图吧:



冒险是件很有意思的事,但就到这里吧。
Skin Microstructure Deformation with Displacement Map Convolution项目小结的更多相关文章
- 记一次SSM项目小结(一)
		
记一次SSM项目小结(一) ssm框架 环境配置 服务器配置 解决方法 拦截器重定向到localhost nginx和tomcat中session失效 mybatis的xml文件不生效 数据库用户创 ...
 - [2017BUAA软工助教]个人项目小结
		
2017BUAA个人项目小结 一.作业链接 http://www.cnblogs.com/jiel/p/7545780.html 二.评分细则 0.注意事项 按时间完成并提交--正常评分 晚交一周以内 ...
 - [2017BUAA软工助教]结对项目小结
		
2017BUAA结对项目小结 一.作业链接 http://www.cnblogs.com/jiel/p/7604111.html 二.评分细则 1.注意事项 按时间完成并提交--正常评分 晚交一周以内 ...
 - ABP入门系列(2)——通过模板创建MAP版本项目
		
一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打 ...
 - ABP入门系列(1)——通过模板创建MAP版本项目
		
ABP入门系列目录--学习Abp框架之实操演练 一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包 ...
 - mono for android 百度map binding项目(转)
		
好丫小子之前发布过百度地图android SDK的mono for android绑定dll,许多朋友看过之后说想理解是怎么绑定的,现我把绑定的代码发出来. 针对2.1.2版本百度地图android ...
 - 1.通过模板创建MAP版本项目
		
1.选择mpa+ef+module-zero 取名字 2.用vs打开项目后,在解决方案上右键 还原nuget包 3.打开程序包管理器控制台,选择以EntityFramework结尾的项目,并执行upd ...
 - GPS项目小结
		
GPS项目中涉及到的技术有地图纠偏,js与winform c#的交互等方面: 1 google地图纠偏,能够私下call我...QQ(964877814)....,事实上主要由于考虑到政治以及军 ...
 - .NET项目开发—浅谈面向对象的纵横向关系、多态入口,单元测试(项目小结)
		
阅读目录: 1.开篇介绍 2.使用委托消除函数串联调用 2.1.使用委托工厂转换两个独立层面的对象 3.多态入口(面向对象继承体系是可被扩展的) 4.多态的受保护方法的单元测试(Protected成员 ...
 
随机推荐
- Rabbit 集群部署
			
1.RabbitMQ是用erlang语言编写的,所以我们先安装erlang语言环境 配置erlang语言环境 # vim /etc/yum.repos.d/rabbitmq-erlang.repo [ ...
 - dede织梦系统接入熊掌号推送api,完整详细教程
			
第一步: 根据熊掌号要求完成校验页面,官方文档很详细,照着弄就行了 第二步: 开始后台改造 1.进入后台文件夹dede(自己实际的文件夹),然后进入templets目录,打开body_inde ...
 - WPF popup自动关闭
			
var tileMore = new Tile { Height = , Width = , Background = , , )), Title = "更多...", }; ti ...
 - IDEA创建简单SpringBoot项目
			
环境:jdk 1.打开IDEA -->New --> Project -->Spring Initalizer-->next 2.此处,只做创建示例,所以next后Group等 ...
 - 面试中linux常见的20个命令
			
1.查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件. 2.查看一个程序是否运行 ps –ef|grep tomcat 查看所有有关to ...
 - erlang开发工具之intellij idea基本使用
			
其他废话就不多说了,接下来主要是介绍怎么来用idea搭建项目让我们能更好的使用好开发工具. (这边假设你已经下载好了intellij idea关于erlang的插件,如果没有安装好,请先去google ...
 - python中用psutil模块,yagmail模块监控CPU、硬盘、内存使用,阈值后发送邮件
			
import yagmailimport psutildef sendmail(subject,contents): #连接邮箱服务器 yag = yagmail.SMTP(user='邮箱名称@16 ...
 - spring cloud_1_mm_eureka
			
有的人不知道导什么包 什么版本好 可能教程版本十几根本不能用 这里建议直接用idea生成 避免麻烦 eureka-sever application.yml #注册中心端口 server: port: ...
 - cocos creator 刚体卡顿问题(边界会卡住)
			
**问题描述:**在项目开发中,使用到了刚体, 在搭建地图过程中,发现两个相邻的砖块,即使贴合的再紧密,但星星人在上面走动的时候还是会有很大概率发生卡顿(被两个刚体的边界处卡住).为了解决这个问题,我 ...
 - 20164322 韩玉婷-----Exp5 MSF基础应
			
Exp5 MSF基础应用 1.基础问题回答 exploit: 是指攻击者或渗透测试者利用一个系统.应用或服务中的安全漏洞所进行的攻击行为, 包括利用缓冲区溢出.Web应用程序漏洞攻击,以及利用配置错误 ...