最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
东丰县| 阳城县| 德阳市| 株洲市| 铁岭县| 通州区| 宁远县| 和政县| 宜良县| 原阳县| 泸水县| 万年县| 乡宁县| 西青区| 栖霞市| 陇川县| 威宁| 新疆| 新津县| 麻江县| 策勒县| 台北县| 鄯善县| 扶风县| 安塞县| 大竹县| 平江县| 前郭尔| 加查县| 巫溪县| 崇义县| 武强县| 新源县| 富民县| 德格县| 奉节县| 灌阳县| 新晃| 隆德县| 耒阳市| 中卫市|