Home Forums GAMES在线课程(现代计算机图形学入门)讨论区 关于作业8的一些问题解答

Tagged: 

Viewing 4 reply threads
  • Author
    Posts
    • #6253 Score: 1
      禹鹏(助教)
      Keymaster
      9 pts

      1. 依赖安装命令中 “\\” 应该改为换行符”\”, 或者你可以忽略直接用下面的命令:

      $sudo apt install libglu1-mesa-dev freeglut3-dev mesa-common-dev

      2. 欧拉法Global Damping force的计算就是 f_d = -k_d * v。暂时不用实现弹簧两端结点之间相对速度产生的Damping。

      3. 显式欧拉法实现出来,绳子不稳定是正常的。这是因为显式欧拉法算法的问题,需要减小步长减轻不稳定性。

      4. 关于Verlet方法的实现问题,它其实是一种几何方法,不是基于物理的方法。本次作业的弹簧仿真其实是Position-based dynamics(PBD)方法的一种特例。弹簧系统,弹簧力是一种内力,这种内力用了一种约束来表示,比如p,q两点之间的距离约束就是 C(p,q)= ||p-q|| – restLength = 0。Verlet算法计算每个质点不受约束的时候位置的更新,然后对质点施加约束,使得质点位置满足约束。具体到弹簧的距离约束约束求解就是:

      This post has received 1 vote up.
    • #6260 Score: 1
      o_o_o_o_o
      Participant
      -1 pt

      感谢 Thanks♪(・ω・)ノ

      很有用的 clarification

      This post has received 1 vote up.
    • #6285 Score: 0
      Troy
      Participant
      -1 pt

      第四点没太搞懂,这么算类似于Gauss-Seidel,约束跟约束之间有数据依赖啊,计算顺序会导致结果不一样。还是说应该像Jacobi迭代一样,约束跟约束之间不想关联,最后把每个顶点上的ΔP求和?

      • #6294 Score: 0
        禹鹏(助教)
        Keymaster
        9 pts

        这个代码里面,从固定粒子开始求约束,所以直接Gauss-Seidel方法解一遍就可以稳定了。

        • #6345 Score: 0
          Troy
          Participant
          -1 pt

          我知道这是PBD里一个trick,用Gauss-Seidel求约束的时候从上往下求可以使重力产生的位移更快收敛,但这个东西只可意会…不严格哈。不过你这么一说我就明白了

          • This reply was modified 3 years, 11 months ago by Troy.
    • #6407 Score: 0
      SHERLOCK
      Participant
      -1 pt

      那半隐式的抖动厉害是错误的吗

    • #8968 Score: 0
      Chen
      Participant
      4 pts

      还是没有特别清楚。对这个0号质点固定的特例情况下,施加约束的过程如果从0开始遍历一遍质点,每个质点都向互相靠拢一半的弹簧拉长长度的话,最终的结果难道不是还是不满足约束的吗?第n个弹簧约束解完,第n+1个约束求解时使n和n+1共享的质点再次发生挪动,不会导致第n个约束被破坏么?
      试着把所有的偏移量都交给后一个质点来位移补偿,但结果似乎不是很真实,表现为质点杂乱抖动从0号元素开始逐渐静止。

Viewing 4 reply threads
  • You must be logged in to reply to this topic.