经常有人问我你最近在干什么,但一句话真的很难说明白,最近两个月一直在尝试将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项目小结的更多相关文章

  1. 记一次SSM项目小结(一)

    记一次SSM项目小结(一) ssm框架 环境配置 服务器配置 解决方法  拦截器重定向到localhost nginx和tomcat中session失效 mybatis的xml文件不生效 数据库用户创 ...

  2. [2017BUAA软工助教]个人项目小结

    2017BUAA个人项目小结 一.作业链接 http://www.cnblogs.com/jiel/p/7545780.html 二.评分细则 0.注意事项 按时间完成并提交--正常评分 晚交一周以内 ...

  3. [2017BUAA软工助教]结对项目小结

    2017BUAA结对项目小结 一.作业链接 http://www.cnblogs.com/jiel/p/7604111.html 二.评分细则 1.注意事项 按时间完成并提交--正常评分 晚交一周以内 ...

  4. ABP入门系列(2)——通过模板创建MAP版本项目

    一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打 ...

  5. ABP入门系列(1)——通过模板创建MAP版本项目

    ABP入门系列目录--学习Abp框架之实操演练 一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包 ...

  6. mono for android 百度map binding项目(转)

    好丫小子之前发布过百度地图android SDK的mono for android绑定dll,许多朋友看过之后说想理解是怎么绑定的,现我把绑定的代码发出来. 针对2.1.2版本百度地图android ...

  7. 1.通过模板创建MAP版本项目

    1.选择mpa+ef+module-zero 取名字 2.用vs打开项目后,在解决方案上右键 还原nuget包 3.打开程序包管理器控制台,选择以EntityFramework结尾的项目,并执行upd ...

  8. GPS项目小结

    GPS项目中涉及到的技术有地图纠偏,js与winform c#的交互等方面:  1   google地图纠偏,能够私下call我...QQ(964877814)....,事实上主要由于考虑到政治以及军 ...

  9. .NET项目开发—浅谈面向对象的纵横向关系、多态入口,单元测试(项目小结)

    阅读目录: 1.开篇介绍 2.使用委托消除函数串联调用 2.1.使用委托工厂转换两个独立层面的对象 3.多态入口(面向对象继承体系是可被扩展的) 4.多态的受保护方法的单元测试(Protected成员 ...

随机推荐

  1. Openresty 源码安装脚本

    Openresty 中文官网地址 http://openresty.org/cn/ #! /bin/bash function openrestyinstall() { cd /opt/openres ...

  2. vue-router 重难点总结笔记

    1,使用动态路由配置的(如:‘:id’),可以在this.$router.params.id获得. 官网例子: 模式 匹配路径 $route.params /user/:username /user/ ...

  3. 前端测试时,常用SQL

    与后台联调页面,经常会验证数据正确性,这时候就需要会点SQL语句,以下是常用的SQL: 单表查询 select * from table 条件查询 select * from table where ...

  4. maven 常用备忘录

    1.maven 国内的常用中央仓库地址配置: <mirror> <id>alimaven</id> <name>aliyun maven</nam ...

  5. contos7 go 环境搭建

    安装包下载地址为:https://golang.org/dl/.(网址打不开请FQ) 根据不同系统,选择对应的安装包: 解压安装 1.下载源码包:go1.10 linux/amd64 2.将下载的源码 ...

  6. BUAAOO P5-P7 Elevator Simulation

    目录 Abstract Introduction Topic Request Elevator Analysis Reading Requests Coordinating Scheduling an ...

  7. 服务器搭建lamp环境

    使用的例子:服务器版本内核centos 7.04     Xshell连接到您的服务器上,使系统处于最新状态执行以下命令, yum update -y     利用yum命令安装Apache执行命令, ...

  8. 更改Windows更新源(解决公司内部网络无法下载语言包或更新的问题)

    打开注册表 找到HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate 将WUServer.WUStatusServe ...

  9. 机器视觉:MobileNet 和 ShuffleNet

    虽然很多CNN模型在图像识别领域取得了巨大的成功,但是一个越来越突出的问题就是模型的复杂度太高,无法在手机端使用,为了能在手机端将CNN模型跑起来,并且能取得不错的效果,有很多研究人员做了很多有意义的 ...

  10. QWaiteCondition思考4

    引用 http://blog.csdn.net/flyoxs/article/details/54617342 简单用法 QWaitCondition 用于多线程的同步,一个线程调用QWaitCond ...