2008-11-15 70 views
3

我正在嘗試使對象動起來,我們假設它是一輛汽車。我想從點計算沿路徑的旋轉

X1,Y1去,Z1

X2,Y2,Z2。它移動到這些點,但它似乎是漂移,而不是指向運動的方向。所以我的問題是:我怎麼才能解決這個問題在我的updateframe()事件?你能指點我一些好資源的方向嗎?

謝謝。

回答

2

首先,你如何表現道路?

我最近完成了這件事情,我用Catmull-Rom樣條的道路。要定位一個物體並使其跟隨樣條路徑,您需要插入沿着樣條線行走的當前位置,然後沿着Frenet座標系或Frenet Frame定位該特定位置。

基本上對於每個點你需要3個向量:切線,正常和Binormal。切線將成爲您希望物體(汽車)指向的實際方向。

我選擇Catmull-Rom是因爲它們很容易扣除任何點的切線 - 只需將其他兩個近點之間的(矢量)差異與當前點之間的差異。 (假設你在t,挑t-epsilont + epsilon - epsilon是一個足夠小的常量)。

對於其他2個向量,就可以使用this iterative method - 這是你開始有一端一組已知的載體,和你的工作基礎上,前一個每個updateframe())的新集。

1

您需要確定汽車的初始方向以及汽車在目的地的最終方向,然後在它們之間進行插值以確定當前時間步之間的方向。

This本文描述了進行插值後的數學運算,以及一些可能對您有用的旋轉物體的其他事情。一般來說gamasutra.com是這類事情的絕佳資源。

0

我認爲插值是給你漂移,你看到。 你需要模擬轉向的工作方式..你的更新功能應該1)將汽車總是朝着它指向的方向移動,2)將汽車轉向當前目標..一個不應該影響另一個,這樣轉彎將發生並比到達更快完成。

0

一般地說,汽車所指向的方向是沿其速度矢量,這是其位置向量的一階導數。

x = r.sin(2πt/n) 

例如,如果汽車在一個圓圈圍繞原點每隔Ñ秒然後轉到(半徑的- [R)汽車的位置的X分量由下式給出

及其速度矢量的X分量將是:

vx = dx/dt = r.(2π/n)cos(2πt/n) 

做T他對所有的x,yz組件進行歸一化,對得到的向量進行歸一化,並且你有你的方向。

0

始終將汽車指向目的地點既簡單又便宜,但如果汽車沿着彎曲的路線行駛,則不會起作用。在這種情況下,您需要將車沿着切線指向其當前位置(請參閱上面的其他答案)。

0

從一個位置到另一個位置給予一個物體一個速度,一個速度是一個矢量,並且對該矢量進行歸一化將爲您提供可以插入到「看」矩陣中的運動的方向矢量,用這個矢量來獲得邊和嘿presto你有一個完整的矩陣來控制運動物體的方向。