最近搜问题搜到的一个有意思的主题
就是把要给模型变方
https://www.sidefx.com/forum/topic/71046/
就是效果如下图的一个开源项目,作者也是根据这个制作的hda
一开始发现可以直接玩玩,但是作者安装后发现还需要自己编译……
在下面记录下编译过程吧,毕竟好久不配库了(环境地狱,也给有兴趣的了解下什么是
不看简介一路莽着配环境方式,纯搜索解决问题,方法错误是肯定有的,毕竟不干程序好多年,给大家图个乐,欢迎吐槽)
作者也有详细步骤
一开始我电脑里有vs2019,githubdesktop
一开始本地下载
https://github.com/HTDerekLiu/CubicStylization_Cpp
注意一定要使用git方式,否则这个库下不来
目标编译的话选择Command line version
因为可以少一个libigl
开始以为很简单,原来是我想得多了
开始随便下了cmake3.1才发现找不到vs2019,需要后续版本才能支持
然后我下了cmake-3.20.0-rc2
Source指向D:\Github\houdini\CubicStylization_Cpp\cubicStylization_cmd文件夹
发现cmake报错
CMake Error at cmake/DownloadProject.cmake:171 (message):
查了以后发现libigl需要vs2017,等等不是需要这个吗,先忽略吧(我觉得我大概率这步是多余的),照着解决就行……
参考https://github.com/libigl/libigl-example-project/issues/19
https://www.freesion.com/article/9239673162/
于是下载visual studio installer安装vs2017
然后发现cmake还是找不到17 以为是cmake版本过高,其实不是的
参考https://www.zhihu.com/question/387803564/answer/1155308185
需要把vs2017cmake组件装好……
中间有重复报错,后来发现是缓存问题,本来是clone again来删了重下的(暴力解决)
但是看起来只要删了build就可以了,或者在cmake的file里选择(事后……)
缓存清理了就好了
然后错误换了Error at libigl/cmake/DownloadProject.cmake:171
很好可以继续了
参考https://github.com/libigl/libigl-example-project/issues/19
看来需要加入环境会自动下载,但貌似github desktop没有这功能
需要git shell
参考
https://www.cnblogs.com/esCharacter/p/7561287.html
于是下载了
Git-2.30.1-64-bit
安装后确实环境变量会自动加进去
注意安装时很多选择我都是选默认的
然后发现编译没问题
但是一直停留在CMake that the project does not need compatibility with older versions.
还以为是其他问题
后来发现是在下载库,但是网络问题,导致中断了
你会发现git-remote-https.exe进程会长时间运行着,下完就消失了
科学上网全局会比较快
然后又又报错Looking for pthread.h - not found
搜了发现貌似是linux头文件
赶紧又来了1G(事后发现这步骤大概率没用,应该是生成的目标问题)
中间还在D:\Github\houdini\CubicStylization_Cpp\cubicStylization_cmd\CMakeLists.txt文件里加了
option(CMAKE_USE_WIN32_THREADS_INIT "using WIN32 threads" ON)
option(gtest_disable_pthreads "Disable uses of pthreads in gtest." ON)
参考
https://stackoverflow.com/questions/13218646/cmake-pthread-h-not-found-in-windows
这步可以忽略的直接generate就可以了
会产生相应的vs工程
直接用vs2017打开使用release编译
然后配置好houdini的Cubify.hdalc,链接exe文件
尝试cook发现没有反应
我好像错过了什么?
明明就到这一步了
然后我本能生成一个obj拖入了生成的exe里闪过一段什么io错误
我突然有想到houdini论坛那个作者还提供了一个main.cpp(不看清简介一路莽的代价)
看来不是光带着发个源码这么简单,又仔细阅读说明后发现需要替换原本库的main文件
没啥好说的干就完事了,复制粘贴还不是常规操作
然后重新编译
完成后重新定位exe
点cook之后就有了下面的结果
开始结果如上,看起来模型需要合并到一起
简单转vdb再转回即可
Iterations是执行迭代次数,方块化的精度
Cache file就是缓存文件
App file就是编译出的执行文件
Lambda是方块化程度,越大越方,但是超过1太多会扭曲表面
Stopping criteria就是阈值,大了会提前结束迭代
Constraints约束启用后可以保留需要硬角的点,点集就是下面的