- 博客(374)
- 资源 (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 5714 6
原创 安装amgcl
你要把设置参数之类的放在main函数里面。每个case都是个单独的main函数。BOOST和MPI不需要安装也行。安装BOOST之后可以运行时指定参数。这是个header-only的库,不需要安装。编译poisson3Db example。下载数据(matrix maket格式)解压到amgcl根目录。
2024-10-18 12:00:46 174
原创 用一维数组存储不等长的二维数组的方法
start存储每行起始的下标。start[0]必定是0。start[-1]必定是n(一维数组长度)。在numpy或者gpu中,通常会遇到不等长的二维数组,如果都用其最大长度存储,就会浪费许多内存。原本我希望取val2d[1,2] 即第1行第2个值(=e)的时候,等价于在val1d中求。我们只需要把2d数组flatten成一维数组,然后用辅助数组start即可存储。2维数组记为val2d,1维数组记为val1d。第1行:[c, d, e]即val1d[4] = e。
2024-09-25 20:51:53 154
原创 使用vscode debug cpp/python混合编程的程序(从python调用的C++编译的dll)
拷贝自 https://marketplace.visualstudio.com/items?采用了attach process的方式,大致是根据dll的process id将debugger挂载上去。
2024-09-03 19:10:24 634
原创 Houdini 通过wedge来做模拟参数对比 (PDG TOP)
更改参数:attribute name处填入刚才那个变量的名字(如stretchstiffness), 其他的就表示要从-10变动到10,然后共10个点。在打开的窗口中输入P@streachstiffnessexp (只要是@后面随便起个名字就行, P@表示PDG能够找到的变量)这是个简单的布料悬挂的例子。指定输出的文件路径(这里P@wedgeindex表示是第几个小绿点,例如0到9)我们现在的目的是想要对比不同的streach stiffness对模拟的影响。这个节点是用来输出结果到文件的。
2024-06-27 02:08:39 592
原创 推导 Primal Residual XPBD
原本的XPBD(Macklin 2016)Chen2023主张左边的红色二阶项可以舍掉,但右边的g(也就是Primal residual) 应该恢复。因为左端那个是Quasi Newton的常见做法。而舍弃右边需要保证lambda很小才成立。舍掉会导致XPBD残差下降停滞,仿真不稳定。
2024-05-20 13:57:58 400
原创 pyamg Smoothed Aggregation算法流程
设置如下算例。分两步,第一步是setup,第二步是solve。第一步的目的就是得到P等。
2024-05-16 17:14:45 390
原创 Newton法求解布料
【GAMES103-基于物理的计算机动画入门】 【精准空降到 1:25:38】 https://www.bilibili.com/video/BV12Q4y1S73g/?
2024-03-18 16:36:00 893
原创 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 631
原创 houdini vex中的属性类型(attribute)
https://www.sidefx.com/docs/houdini/vex/snippets.html#parameters
2023-08-04 16:20:34 970
原创 ziran2019调用栈
admm1所处文件所处函数行号执行语句main.cppmain98h.start();AdmmInit.hstart38sim.simulate();SimulationBase.hsimulate347advanceOneFrame();AdmmSimulationFoam.hadvanceOneTimeStep813admmStep();AdmmSimulationFoam.hadmmStep781FStep(local_t
2023-08-04 11:52:25 605
原创 wsl安装ziran2019
是为了翻墙的话走代理。否则github clone的很慢。但是在Windows的硬盘创建文件的时候会出现权限问题,参考这个帖子。首先从windows商店搜索ubuntu18。注:WSL可以访问windows上的硬盘。然后重启WSL或重启windows即可。(我是用的wsl一代,二代没测试过)然后照着README安装即可。(亲测Ubuntu20不行)新安装的系统首先要更新apt。然后第一次打开会自动安装。
2023-08-03 22:21:20 1143
原创 【splishsplash】volumeSampling:粒子化采样的小工具
输出的vtk可以使用paraview预览或者使用python的meshio库读入。功能:输入一个obj文件,输出一个在体积内采样好的粒子文件(vtk)以查看粒子的平均半径是多少。类似于Houdini的。或者trimesh的。
2023-07-27 15:45:59 686
原创 如何将矩阵乘法改写成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 704
原创 使用scipy的kdtree寻找最近邻点
因为第一个点必定是自己所以找俩。返回的是两个np array。第一个是所有的最小距离,第二个是所有的最近点index。
2023-07-18 14:20:24 1129
原创 使用cProfile来对python程序进行性能调优(各个函数耗时/火焰图)
性能调优就是打印出来每个函数的耗时。用一个图来表示的话,叫做火焰图。flamegraph。
2023-07-06 10:04:28 1676
原创 vscode launch.json与tasks.json
launch.json: 用于debug。tasks.json: 用于执行一切任务。
2023-05-18 15:05:39 1131
原创 houdini vex 查找最近点的距离
值得注意的是,不能使用nearpoint,因为会找到最近的点是自己(很无语)。所以用nearpoint的maxpts参数设为2,则找到的第二个点恰好就是最近点(第一个点是自己)
2023-04-05 23:06:50 1268
原创 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 1251
原创 Everything about PBD:关于PBD的一切!
原始PBD可以认为是alpha为0的系统,因此是刚度无穷大的系统,条件数比较大。但是它是能够产生三维的变形的。根据刘天添的fast simulation of mass-spring system 中的论证,XPBD相当于是隐式的欧拉时间积分。或者说是沿着绳子的截面的法向量,它是四元数的函数。描述刚体与粒子系统的不同之处在于,我们要求解的变量不再是粒子的位置,而是刚体的平移和旋转。我们可以设计出多种多样的constraints,比如体积约束,距离约束,应变约束,流体密度约束,刚体约束,塑性约束等等…
2023-03-29 17:48:45 3355
原创 【读文献】primal dual PBD
上市可以认为是广义坐标系下的速度(实际上是广义坐标的时间导数)与直角坐标系下的速度u的关系。又因为我们采用了最简单的显式时间积分,速度和位置之间只不过是乘以个dt的关系,而dt是个常数,因此是线性的。上市可以认为是广义坐标系下的速度(实际上是广义坐标的时间导数)与直角坐标系下的速度u的关系。又因为我们采用了最简单的显式时间积分,速度和位置之间只不过是乘以个dt的关系,而dt是个常数,因此是线性的。我们这里不加上标的q都默认是q+. 因为q-是已知量(上一时刻的广义位置),而只有下一时刻的位置q+是未知量。
2023-03-27 16:20:24 943
原创 【Houdini】fluid particle surface 节点
需要在Regions中打开subtract from collision volumes。第三个输入端口可以在表面重建前减去部分。
2023-03-25 22:09:13 1388
原创 【Houdini】使用karma赋予材质
这是因为USD的文件存储结构和旧的材质旧不太一样。所以任何旧的东西(包括材质、表面等)都要先导入到USD当中,相当于做一次格式转换,然后后续使用的时候,都要使用转换后的。也就是说,USD目前是出于一种半封闭状态的,其他的不太和它兼容,要想使用,就得先转换一下。一个很常见的混淆是Material VOP和Material Path。前者是用来导入旧的材质的(除了MTLX材质以外的任何材质)至于为什么要分这两步,并且还要分开旧材质和新材质呢?后者是专门导入MTLX新材质的。
2023-03-20 17:08:17 878
biomass_papers_noPDF_2020-8-19.enlx
2020-08-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人