gpt4 book ai didi

javascript - 我如何使用 Bullet Physics 逼真地模拟高尔夫球击球? (包括现场演示)

转载 作者:数据小太阳 更新时间:2023-10-29 05:36:18 25 4
gpt4 key购买 nike

背景

我正在使用 three.js 和 Bullet Physics 库的 ammo.js 转换制作迷你高尔夫游戏,但我在让球真实移动时遇到了一些问题。

(如果你想看看它在实践中是如何工作的,我已经在 penguinspuzzle.appspot.com/minigolf.html 上放了一个演示。)

问题

什么是让迷你高尔夫球更逼真的运动的好算法?

我尝试过的

在 ammo.js 中,有摩擦、线性阻尼和旋转阻尼的选项。

随着球的滚动,摩擦设置似乎没有太大影响。

我正在使用

body.setRestitution(0.8);
body.setFriction(1);
body.setDamping(0.2,0.1); // linear damping, rotational damping

问题

线性阻尼值高时,球似乎减速得太快。

对于较低的值,似乎需要很长时间才能最终停止。

当球在空中时,应用线性阻尼似乎根本不合理。

分析

我认为问题可能是 ammo.js 中的线性阻尼导致指数减速。

我试过:

  1. 录制打高尔夫球的视频
  2. 测量每一帧中球的位置
  3. 绘制球的位置和速度与时间的关系

结果如下所示。在我看来,速度曲线更接近于线性而非指数。

有什么算法可以让 ammo.js 更逼真吗?

Golf analysis

最佳答案

我发现您在球形物体上使用“常规”摩擦。在物理学中有一个单独的概念,"rolling friction"对于圆形物体。我不知道 Bullet Physics 是否在其 API 中提供了这样的概念。如果是这样,请尝试将其替换为滚动摩擦对应物:

body.setFriction(1);

关于javascript - 我如何使用 Bullet Physics 逼真地模拟高尔夫球击球? (包括现场演示),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18518205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com