GPhomework6

主要功能的实现

  • 在脚本 CannonBallController 中实现了三种方法控制炮弹运动。

    GPhomework6_第1张图片
    运动控制关键代码
  • 编写了 UI 来设置运动的参数。包括:初速度方向、初速度大小、炮弹重量、使用的方法、步长(步长越大,采样点越稀疏,产生的误差也就越大)。

  • 在炮弹运动的路径上留下 marker 标识运动轨迹。Euler 方法产生的路径点是红色 cube,Trapezoid 方法产生的路径点是黄色 sphere,Midpoint 方法产生的路径点是蓝色 capsule。

  • 考虑了空气阻力对炮弹的影响,与速度大小成正比。话说难道不应该是与速度大小的平方成正比么

实验结果对比

首先在 stride 为 1 (最高精度)时,分别用三种方法发射炮弹,并留下轨迹。

Euler 方法产生的路径点是红色 cube,Trapezoid 方法产生的路径点是黄色 sphere,Midpoint 方法产生的路径点是蓝色 capsule

GPhomework6_第2张图片
步长为 1 结果图一
GPhomework6_第3张图片
步长为 1 结果图二

从上图可以看出,在步长为 1 的条件下,三种方法只有微小差距,从上到下依次是 Euler、Midpoint、Trapezoid 的轨迹。

接着把步长增大到 5 ,实验结果如下图。

GPhomework6_第4张图片
步长为 5 结果图一
GPhomework6_第5张图片
步长为 5 结果图二
GPhomework6_第6张图片
步长为 5 结果图三

从上图可以看出,在步长为 5 的条件下,三种方法已经有了明显的差距。从上到下依然是 Euler、Midpoint、Trapezoid 方法的轨迹。上面的最后一张图中的那条比较密集的轨迹是步长为 1 条件下 Euler 的轨迹,在这里作为更接近解析解的轨迹作为参考。可见,Euler 方法下落变慢,Midpoint 和 Trapezoid 方法下落加快。

场景搭建

不务正业部分

  • 找了一个海盗船的模型作为炮弹的发射装置
  • 水面效果是完全自己写的,用到了法线贴图、UV 动画、反射像机实现反射、GrabPass 实现折射、菲涅尔、水体散射、水体焦散、水面高光反射。
  • 在太阳的方向尝试加入了 Volumetric Light

你可能感兴趣的:(GPhomework6)