五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Unity缺陷:怎樣讓某個(gè)旋轉(zhuǎn)軸對(duì)齊某個(gè)方向

2023-03-29 14:40 作者:DeadCyber  | 我要投稿

之前的文章中,我談到,由于希望將humanoid骨骼的旋轉(zhuǎn)和openpose的2d方向?qū)R——也就是將localRotation的某個(gè)旋轉(zhuǎn)軸對(duì)齊一個(gè)dir:

我直接設(shè)置了transform.up=dir,因?yàn)槲铱吹浇涌诶镞@個(gè)forward,up,right都是{get,set},以為set的時(shí)候能好好處理。

結(jié)果tmd不能,改了方向之后,其他的兩個(gè)軸方向也“亂”了,在之前文章中,我是硬在其他軸上判斷,轉(zhuǎn)了180度:

結(jié)果現(xiàn)在發(fā)現(xiàn)有的時(shí)候變成了偏轉(zhuǎn)90度,這就很蛋疼了,總不能所有角度都判斷太煩了。

所以還是得徹底解決這個(gè)“讓某個(gè)旋轉(zhuǎn)軸對(duì)齊某個(gè)方向”的問(wèn)題。

Unity的直接set我估計(jì)是直接調(diào)用了lookDirection之類的,根本沒考慮細(xì)節(jié),所以結(jié)果只能保證這個(gè)軸準(zhǔn)確,其他軸就隨緣(不過(guò)因?yàn)檫@個(gè)細(xì)節(jié)也很復(fù)雜,很custom,所以可以理解)。

細(xì)化問(wèn)題

對(duì)于一個(gè)已有的rot1(xdir,ydir,zdir),假設(shè)我們需要讓right對(duì)齊一個(gè)新方向newX,組成rot2。那么實(shí)際上是在保證rot2.xdir == newX的前提下,“盡量”讓rot2.y/zdir“接近”rot的y/zdir。

那么,怎樣是“盡量接近”呢?

有太多種標(biāo)準(zhǔn):y2與原先共面/z2與原先共面/角度差和最小/角度差最平均...

看實(shí)際應(yīng)用,由于openpose出來(lái)基本可以對(duì)上humanoid,所以都能接受,選一個(gè)最簡(jiǎn)單的y2與原先共面,可以數(shù)學(xué)推導(dǎo)一下,我就略過(guò)推導(dǎo)過(guò)程了,條件有如下:

y2=ax1+by1; //共面條件

dot(x2,y2)==0; //垂直條件

b=k*a; //用來(lái)消a,其余共線情況代碼額外判斷

推導(dǎo)結(jié)果:

k = -dot(x1,x2)/dot(y1,x2)

代入求出y2即可。

整個(gè)函數(shù)代碼:


Unity缺陷:怎樣讓某個(gè)旋轉(zhuǎn)軸對(duì)齊某個(gè)方向的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
黑水县| 康平县| 长岛县| 云龙县| 三原县| 大姚县| 乐至县| 宜章县| 德安县| 白山市| 河东区| 唐山市| 墨竹工卡县| 宁明县| 高安市| 鄂托克前旗| 寻甸| 汉源县| 顺昌县| 乳源| 英山县| 夏河县| 界首市| 延庆县| 东乌珠穆沁旗| 湘潭县| 子长县| 井冈山市| 宁蒗| 繁昌县| 普格县| 长治市| 广水市| 永寿县| 宜良县| 蛟河市| 长沙市| 个旧市| 河东区| 渭源县| 嘉义市|