当我试图在Teragen中渲染逼真的飞行序列时,我常常使用路径计算技术.我最初尝试使用BézierCurves.

但发现(至少飞行)它们并没有那么有用.原因是曲线之间的曲率是不连续的,因此不能用于计算飞越的连续正确倾斜角度.此外,很难确定曲线不会与山相交.
我离题了.我最终选择的方式是一个简单的基于质量弹簧的路径,并将其放宽.
将路径细分为许多小段,越多越好.对于每个点,将其向一个方向移动一点,以减小它与其邻居之间的角度,并从障碍物开始.重复多次,直到路径稳定下来.
k = 0.01 // Adjust the values of k and j to your liking.
j = 0.01 // Small values take longer to settle. Larger values are unstable.
For each point P
normal_vector = vector_to_previous_point + vector_to_next_point
obstacle_vector = vector_to_nearest_obstacle
obstacle_distance = magnitude(obstacle_vector)
obstacle_vector *= obstacle_distance^2
P += (normal_vector * k) - (obstacle_vector * j)
Run Code Online (Sandbox Code Playgroud)
这种有限元放松技术的好处在于,您可以将各种约束编程到其中,并且路径将依赖于它们之间的某些折衷,取决于权重(在这种情况下为j和k).
如果你是机器人技术,为什么不加入机器人技术提案呢?