YY

Forum Replies Created

Viewing 18 posts - 1 through 18 (of 18 total)
  • Author
    Posts
  • in reply to: HW8的一些问题 #6278 Score: 0
    YY
    Participant
    1 pt

    我的意思是,如果按照课件公式的话你的f_d_ab不应该是fb吗,或者我把课件公式理解错了。
    还有就是我很认同图形学不是仿真,所以在哪里damping,用什么方法算阻尼能够正常的停下来就行了。
    我以上只是对为什么停不下来的猜测,没有否定图形学的研究成果的意思。布料能停下来应为每个节点处在网络中而不是线中,多了两个约束,这个方法让相邻节点径向保持相对静止,但是可以圆周运动,不相邻的节点就有相对运动。

    in reply to: HW8的一些问题 #6275 Score: 0
    YY
    Participant
    1 pt

    上升沿曲线面积就是加载向弹簧做的功,下降沿曲线就是卸载时弹簧向外做的功,差值为能量耗散。

    in reply to: HW8的一些问题 #6273 Score: 0
    YY
    Participant
    1 pt

    我之前把你在springs里的代码看错了。。。我用你这种阻尼加半隐式方程,发现最后会发散,你的f_d_ab和f_d_ba好像犯了。我反过来之后不发散单也不会使得运动停止。我是这么理解的:
    我把节点数定位2,一端固定就成了钟摆运动。质点受到重力,拉力,阻力,其中阻力这项按照ppt计算:大小取决于相对速度,方向为相对速度沿弹簧方向的投影。实际只有两个方向的力:一个为弹簧方向的合力(阻力,拉力,重力分量)改变速度方向,一个为速度方向(重力分量),这样一来速度方向的加速度基本始终不变(每个周期不变)。假设由于弹簧伸缩,不是精确的圆周运动,将运动分解,一部分为圆周运动,一部分为径向运动,这样我们的阻力始终只影响径向运动。从能量守恒的角度,阻力为绳子径向,运动方向几乎垂直于径向,径向位移很小,阻力也很小,合起来的做工就更能小了,而且按照这种算法,这部分能量不一定是真的损失了,因为这个值可能正负交替。
    我回去又查了查这个能量耗散,一种就是类似空气阻力的外部分损失cv’,一种是内部能量耗散发热,这部分跟材料有关,主要取决于应力应变曲线(可以当作位移和力的曲线),斜率就是刚度,所围面积为做功。如果加载和卸载都是沿同一条曲线,那么就没有能量耗散,实际并不是这样,举其中一个情况:发塑形变形,当卸力时,只发生弹性恢复,塑形形变不回复,这部分就是耗散的能量。
    所以我觉得,老师上课讲的那种基于径向相对速度得到的阻力本身可能就不正确,从改变弹簧刚度的角度讲,无法区分卸载和加载。从速度的方向讲在质点运动方向做功微乎其微。

    Attachments:
    You must be logged in to view attached files.
    in reply to: HW8的一些问题 #6256 Score: 0
    YY
    Participant
    1 pt

    我输出了一下,mass和gravity大小都是1,好像当成什么都一样。
    力的作用是加速度,然后影响速度,最后反应到位移上。所以不论是先算合力,然后算速度位移,还是先分别计算每个分力的速度位移再相加最后都是一样的。
    所以可以在TODO dumping中用v*kd计算阻力→加速度→速度增量→速度。因为欧拉法本来就是近似,而且每个步长速度增量很小,所以放在哪里计算都一样;不过在masses中计算更简单,因为阻力实际是作用在质点上的,如果放在springs中一个弹簧两个质点,相邻弹簧由公共质点,可能计算重复。
    如果按照老师讲的阻尼取决于相对速度的话,在springs中计算更方便,但是我认为这个地方取绝对速度也可以,我以前上结构动力学的时候,粘滞阻尼是与运动方向相反,这里的运动方向都是基于地面(地球),而不是质点相对速度;因为阻尼最终导致运动停止,基于绝对速度可以达到这个效果(我记得阻尼系数是根据实验得来的,这里的实验应该是绝对速度,实验应该不会还分出各个质点求相对速度)。基于相对速度,各部分相对静止,最后也是基于地面静止,效果相同。我的理解是基于绝对速度,阻尼可以当作空气阻力,基于相对速度可以看出能量以热量耗散来损失。
    还有那个显示欧拉,我把Application::render() 里调用simulateEuler循环改成了i<1,速度放慢了,看见不是直接发散,而是正常运动了一会发散了,应该是老师讲的稳定性问题。

    in reply to: HW8的一些问题 #6250 Score: 0
    YY
    Participant
    1 pt

    矢量具有可加性,其实不论在springs中还是在masses中算都是一样的,只不过在springs中算的是力,这个力要用-kd*v得到;在masses中算的是力作用的结果,而不能算力,因为最后力清零了。

    in reply to: HW8的一些问题 #6249 Score: 0
    YY
    Participant
    1 pt

    阻尼与速度乘反比f=-kd*x’,你把Kd放在spring中,实际上是在削减弹簧的刚度ks,刚度不断衰减最多就是刚度为0,最终只受重力,自由落体;此外,也很难保证在速度方向上的衰减,加速度是弹力和重力的合力,速度是由加速度得到的,这样质点速度大概率与弹簧并不在同一条直线上,更不用说方向相反了。还有一个疑问,框架里的gravity到底是重力加速度还是重力啊,有点分不清了,翻译是重力,但是看见有人乘mass。

    in reply to: 作业8 构建rope时出错 #6201 Score: 0
    YY
    Participant
    1 pt

    应该放在节点构造之后,masses没有初始化。

    in reply to: 作业8 构建rope时出错 #6166 Score: 0
    YY
    Participant
    1 pt

    看你之前的截图,这条语句你好像加在了构造节点之前了,是这样吗?

    in reply to: 作业8 rope构造函数出来就是一个点 #6141 Score: 0
    YY
    Participant
    1 pt

    请问题主解决了吗?也遇到了同样问题

    in reply to: 作业六 一片蓝 #5107 Score: 0
    YY
    Participant
    1 pt

    计算x,y的时候是用的像素中心点,而不是端点,应该是这个问题

    in reply to: 作业6 做完了4步之后运行仍是一片蓝 #5069 Score: 0
    YY
    Participant
    1 pt

    十分感谢,终于成了。语言不熟,这个this卡了几个小时,一直找不到问题出在哪。

    in reply to: 作业5关于Render函数最后乘以scale的疑惑 #4942 Score: 0
    YY
    Participant
    1 pt

    这两天刚刚比较忙,刚看见,感谢你分享的资料。我发现我的实现方法跟这篇文章不一样,它是将场景映射到(0,1)×(0,1)的NDC space,在映射到(-1,1)×(-1,1)的screen space,最后在进行视角和长宽的缩放。而我的做法是直接计算长宽比缩放之前的(x,y),我在计算公式中找到了scale这一项,也就是我已经乘过了。代码框架中的注释应该是基于你分享的这篇资料的方法,十分感谢,我弄明白了。

    in reply to: 作业5关于Render函数最后乘以scale的疑惑 #4829 Score: 0
    YY
    Participant
    1 pt

    很感谢你的耐心解答,但是我还是不太理解这个1.0和2.0。
    对最终的x乘imageAspectRatio,使得原本到A点的射线像到了B点。(第一幅图)
    然后我现在对最终的y乘scale,假设scale大于1,射线由A到了B点。(第二幅图),这样的话射线覆盖区域大于原本的1280*960,多余的部分就与原来场景无关,而都是背景色,最终显示在1280*960的图像里,相当于把原图缩小了。
    不知道我的理解是不是有问题。

    Attachments:
    You must be logged in to view attached files.
    in reply to: 作业5关于Render函数最后乘以scale的疑惑 #4816 Score: 0
    YY
    Participant
    1 pt

    hight不是scene.hight吗

    in reply to: 作业五求生成光线 #4801 Score: 0
    YY
    Participant
    1 pt

    x*=scene.wietd/2 改成x/=scene.wietd/2
    y 也改

    in reply to: phong模型高光位置不对 #4483 Score: 0
    YY
    Participant
    1 pt

    也有可能是rasterize_triangle里面,插值计算法向量的时候没有单位化。

    in reply to: phong模型高光位置不对 #4482 Score: 1
    YY
    Participant
    1 pt

    可能因为在高光计算过程中的半程向量算错了,半程向量本来是求向量(方向)v和l的角平分线,如果v和l不等长,用公式h=(v+l)/|v+l|计算得到的h不是角平分线方向,而是平行四边形对角线方向,这样高光位置会有偏移,所以v和l必须都单位化。

    This post has received 1 vote up.
    in reply to: 作业二没报错但显示全黑 #4142 Score: 0
    YY
    Participant
    1 pt

    计算bounding box的时候,你的上下界都是MAX()。

Viewing 18 posts - 1 through 18 (of 18 total)