Understanding Slerp, Then Not Using It對(duì)Slerp的起源及性能做了詳細(xì)的討論。Slerp并不局限于維數(shù),因而不要認(rèn)為只對(duì)Quaternion有效。作者認(rèn)為Slerp會(huì)帶來(lái)效率問(wèn)題,即便經(jīng)過(guò)優(yōu)化也并不能達(dá)到理想的速度(與lerp做比較而言),而且優(yōu)化往往會(huì)降低代碼的易讀性。文章給出了一個(gè)結(jié)論:如果插值過(guò)程中的常量速度不是必須的,那么最好使用線性的lerp。
Jason Gregory在他的引擎架構(gòu)設(shè)計(jì)一書(shū)中也用“To SLERP or Not to SLERP (That’s Still the Question)”一小節(jié)介紹了開(kāi)發(fā)者對(duì)Slerp的爭(zhēng)論,并介紹他在Naughty Dog的同事針對(duì)PS3的優(yōu)化方法,使Slerp可達(dá)到20周期/關(guān)節(jié),相比Lerp的16.25周期/關(guān)節(jié)已經(jīng)很不錯(cuò)了。
之前確實(shí)沒(méi)對(duì)Slerp的效率問(wèn)題作過(guò)多的考慮,引擎的Slerp直接使用的是D3DXQuaternionSlerp,MS應(yīng)該對(duì)其做了優(yōu)化,效率怎么樣要測(cè)一下才知道了。