这是非常有趣随笔模型动画创作的项目,项目主页:
Monster Mash: A Single-View Approach to Casual 3D Modeling and Animation (cvut.cz)
google提供的源码只能在ubuntu 20上运行。我的任务把代码平台无关化,并且把有争议的许可协议的Triangle.c改用为TriWild。
最终项目效果图:
Monster Mash 项目运行视频
分析过程:
系统的输入的是笔画,通过深度,分层,系统做连接和连同操作。但源码对输入没有做过滤导致会出现异常,我做了补充:
MonsterMash 主要贡献:初步看了一下论文,不能发现作者也是基于前人的基础上 做出了自己优化,建模是基于泊松方程,,通过ARAP-L 求解优化 解决了“扁平”的问题。
从原文和源码不难看出,如果下图:
移植过程(重点):
作为小码农,我的主要工作还是专注于技术的落地问题,此项目为cmake构建,从此项目github的 issue 可以看出很多人在移植到window上都卡在编译上,因为源项目没有为window做匹配。
难点1:此项目cmake 的window适配:
所以cmake是需做一些修改的如下图:重点是window基础库 以及MSVC 编译器的版本 以及相关的宏指令(重要)还有一些语言的平台差异,在调试过程就能解决。
难点2:opengl 与 opengles的差异:
window下用模拟器的opengles 不能兼容sdl2 重点是shader的修改 和一些绘图api的修改,比如:
难点3:对数字几何处理基本方法感到比较陌生
对数字几何处理基本方法有些陌生的朋友对 Eigen3 会有些抵触
还有triangle.c库,可以参考 Windows下编译Triangle - bigeo - 博客园 (cnblogs.com) 另外在win64位系统偶尔会触发错误,我已经修复:
对于Eigen3 线性代数运算库 其实我觉得,多用就好。其实是很好用的库:下面是非常经典图形学矩阵变换,但Eigen3能做的远不至此:
写在后面:
如果认真阅读源码的朋友会发现,其实官方提供的demo功能并不完整,项目是支持精细度调整,和非对称纹理,以及z方向的动画的。