- 博客(363)
- 资源 (2)
- 收藏
- 关注
原创 【持续更新】总结国内外图形学物理模拟相关学者和网站
总结图形学物理模拟相关学者和个人网站仅做个人笔记所用。欢迎在评论区补充!国外学者Matthias MüllerNV物理组的leader,1999年博士毕业于苏黎世理工博士论文是研究聚合物分子动力学模拟的,后研究图形学。XPBD作者之一。早期曾经研究SPH模拟变形体研究领域:PBD、SPHhttps://matthias-research.github.io/pages/Theodore Kim耶鲁大学副教授,曾任皮克斯高级研究员.曾参与寻梦环游记等动画制作PS: 2020年有一篇S
2022-03-30 12:23:39 4033 6
原创 推导 Primal Residual XPBD
原本的XPBD(Macklin 2016)Chen2023主张左边的红色二阶项可以舍掉,但右边的g(也就是Primal residual) 应该恢复。因为左端那个是Quasi Newton的常见做法。而舍弃右边需要保证lambda很小才成立。舍掉会导致XPBD残差下降停滞,仿真不稳定。
2024-05-20 13:57:58 244
原创 pyamg Smoothed Aggregation算法流程
设置如下算例。分两步,第一步是setup,第二步是solve。第一步的目的就是得到P等。
2024-05-16 17:14:45 279
原创 Newton法求解布料
【GAMES103-基于物理的计算机动画入门】 【精准空降到 1:25:38】 https://www.bilibili.com/video/BV12Q4y1S73g/?
2024-03-18 16:36:00 796
原创 Debug Eigen
(下载地址: https://gitlab.com/libeigen/eigen/-/blob/master/debug/msvc/eigen.natvis )(如果你git clone过Eigen文件夹,就发现它就在Eigen源码的Debug目录下面)假如我们直接想要检查Eigen中的VectorXf的值,我们会发现无法看到内部的值,如图。(其中%VSINSTALLDIR%是Visual studio的安装目录)只需要下载eigen.natvis这个文件,然后放到下面的目录即可。
2024-02-01 23:59:28 494
原创 houdini vex中的属性类型(attribute)
https://www.sidefx.com/docs/houdini/vex/snippets.html#parameters
2023-08-04 16:20:34 755
原创 ziran2019调用栈
admm1所处文件所处函数行号执行语句main.cppmain98h.start();AdmmInit.hstart38sim.simulate();SimulationBase.hsimulate347advanceOneFrame();AdmmSimulationFoam.hadvanceOneTimeStep813admmStep();AdmmSimulationFoam.hadmmStep781FStep(local_t
2023-08-04 11:52:25 510
原创 wsl安装ziran2019
是为了翻墙的话走代理。否则github clone的很慢。但是在Windows的硬盘创建文件的时候会出现权限问题,参考这个帖子。首先从windows商店搜索ubuntu18。注:WSL可以访问windows上的硬盘。然后重启WSL或重启windows即可。(我是用的wsl一代,二代没测试过)然后照着README安装即可。(亲测Ubuntu20不行)新安装的系统首先要更新apt。然后第一次打开会自动安装。
2023-08-03 22:21:20 1050
原创 【splishsplash】volumeSampling:粒子化采样的小工具
输出的vtk可以使用paraview预览或者使用python的meshio库读入。功能:输入一个obj文件,输出一个在体积内采样好的粒子文件(vtk)以查看粒子的平均半径是多少。类似于Houdini的。或者trimesh的。
2023-07-27 15:45:59 603
原创 如何将矩阵乘法改写成matrix free的形式
M存储:实际上存每个M的倒数。inv_mass数组为Nx1的。例如之前是1,2,3, 扩容后是1,1,1,2,2,2,3,3,3。col_ind: col_ind是从tet_indices得到的。它也需要扩容, 例如之前是1,2,3, 扩容后是1,2,3,4,5,6,7,8,9。其中gradC是mx3n的矩阵,它是CSR格式的,每行有12个非零值。M是对角矩阵,3nx3n。alpha_tilde是对角矩阵。同时有一个辅助的数组为col_ind,也是Mx12。col_ind记录的是每行的列下标。
2023-07-21 17:38:29 606
原创 使用scipy的kdtree寻找最近邻点
因为第一个点必定是自己所以找俩。返回的是两个np array。第一个是所有的最小距离,第二个是所有的最近点index。
2023-07-18 14:20:24 890
原创 使用cProfile来对python程序进行性能调优(各个函数耗时/火焰图)
性能调优就是打印出来每个函数的耗时。用一个图来表示的话,叫做火焰图。flamegraph。
2023-07-06 10:04:28 1218
原创 vscode launch.json与tasks.json
launch.json: 用于debug。tasks.json: 用于执行一切任务。
2023-05-18 15:05:39 1014
原创 houdini vex 查找最近点的距离
值得注意的是,不能使用nearpoint,因为会找到最近的点是自己(很无语)。所以用nearpoint的maxpts参数设为2,则找到的第二个点恰好就是最近点(第一个点是自己)
2023-04-05 23:06:50 1096
原创 Neohooken PBD 文献笔记
以上的能量密度分为CH与CD两项。CD就是应力偏量造成的弹性力。由于constraint对应的是单元能量,而能量密度只是与单元能量差了一个体积。所以通过对应关系我们可以找到deviatoric alpha与材料参数的对应关系。实际上,为了保证rest stability(也就是变形为0的时候不受力),需要对Hydrostatic项进行修正。显然CD是无法完全对应到psiD的,主要就是差了一个减去常数3。所以CD对应于平移了3mu/2的能量密度。定义能量密度为cosntraint的函数。
2023-04-03 11:39:04 1050
原创 Everything about PBD:关于PBD的一切!
原始PBD可以认为是alpha为0的系统,因此是刚度无穷大的系统,条件数比较大。但是它是能够产生三维的变形的。根据刘天添的fast simulation of mass-spring system 中的论证,XPBD相当于是隐式的欧拉时间积分。或者说是沿着绳子的截面的法向量,它是四元数的函数。描述刚体与粒子系统的不同之处在于,我们要求解的变量不再是粒子的位置,而是刚体的平移和旋转。我们可以设计出多种多样的constraints,比如体积约束,距离约束,应变约束,流体密度约束,刚体约束,塑性约束等等…
2023-03-29 17:48:45 2398
原创 【读文献】primal dual PBD
上市可以认为是广义坐标系下的速度(实际上是广义坐标的时间导数)与直角坐标系下的速度u的关系。又因为我们采用了最简单的显式时间积分,速度和位置之间只不过是乘以个dt的关系,而dt是个常数,因此是线性的。上市可以认为是广义坐标系下的速度(实际上是广义坐标的时间导数)与直角坐标系下的速度u的关系。又因为我们采用了最简单的显式时间积分,速度和位置之间只不过是乘以个dt的关系,而dt是个常数,因此是线性的。我们这里不加上标的q都默认是q+. 因为q-是已知量(上一时刻的广义位置),而只有下一时刻的位置q+是未知量。
2023-03-27 16:20:24 699
原创 【Houdini】fluid particle surface 节点
需要在Regions中打开subtract from collision volumes。第三个输入端口可以在表面重建前减去部分。
2023-03-25 22:09:13 1185
原创 【Houdini】使用karma赋予材质
这是因为USD的文件存储结构和旧的材质旧不太一样。所以任何旧的东西(包括材质、表面等)都要先导入到USD当中,相当于做一次格式转换,然后后续使用的时候,都要使用转换后的。也就是说,USD目前是出于一种半封闭状态的,其他的不太和它兼容,要想使用,就得先转换一下。一个很常见的混淆是Material VOP和Material Path。前者是用来导入旧的材质的(除了MTLX材质以外的任何材质)至于为什么要分这两步,并且还要分开旧材质和新材质呢?后者是专门导入MTLX新材质的。
2023-03-20 17:08:17 684
原创 Houdini 组(group)的详细讲解
内容参考Houdini101首先,group可以看做是一种特殊的attribute,只是他的值只是0-1。因此他其实就是一种mask而已。在vex中,我们只要用这样的写法就能自动创建一个名为mygroup的组。这和attrb基本一致。我们键入group关键字,会发现以下节点与之有关。
2023-03-11 21:41:25 2240
原创 Houdini polyextrude讲解
既然是poly extrude,所操作的对象必然要是polygon或者polygon mesh的。首先选择要extrude的面或者是线。我们先以面为例。
2023-03-10 21:55:53 938
原创 使用Houdini输出四面体网格并输出tetgen格式
我们的目标是从houdini输出生成的四面体,希望是tetgen格式的。众所周知,houdini是不能直接输出四面体的。我探索并试验了以上所有三种方案。优缺点如下:第一种方案的缺点是四面体是不可控的,因为是tetgen现生成的。第二种方案的缺点是你要保证geo里面没有多余的数据。例如还存储的颜色或uv等信息,或者houdini的prim上还存了其他信息,就会导致解析失败。当然我们可以使用clean节点清除掉这些多余信息。我会把脚本放到文末。第三种方案是最好的。可控性最好。因此后面我们会说这种方法。
2023-03-10 15:39:22 1026 1
原创 推导能量对广义坐标的导数
其中G是广义坐标到一般坐标的Jacobian矩阵。其中能去掉外面的T是因为矩阵求导时,假如。则U对u的导数就是A,而非A的转置。其中符号表示内积。
2023-03-03 15:34:57 647
原创 【taichi】在Window10上从源码编译太极(用于AOT)
如果出现问题,就手动运行最后一条命令来调用VS安装器。vulkan貌似不需要显示安装,只需要确保你的NV driver的版本比较新即可。driver中貌似自带vulkan。为了防止与user side已经安装好的taichi冲突,建议新建一个conda环境。建议取消中文语言包,只选英文的(因为中文有几率会出现BUG)说明:C++游戏开发是为了UE AOT用的。vulkan也是UE AOT要用的。第二是说要用Vulkan。中有安装好的python包。就有安装好的c_api。然后代码中的安装脚本。
2023-02-17 10:53:37 1031
biomass_papers_noPDF_2020-8-19.enlx
2020-08-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人