freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

頭部跟蹤系統(tǒng)設(shè)計(jì)在虛擬聽(tīng)覺(jué)的應(yīng)用畢業(yè)論文-資料下載頁(yè)

2025-06-29 16:13本頁(yè)面

【導(dǎo)讀】師的指導(dǎo)下進(jìn)行的研究工作及取得的成果。盡我所知,除文中特別加。而使用過(guò)的材料。均已在文中作了明確的說(shuō)明并表示了謝意。除了文中特別加以標(biāo)注引用的內(nèi)容外,本論文。不包含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫(xiě)的成果作品。究做出重要貢獻(xiàn)的個(gè)人和集體,均已在文中以明確方式標(biāo)明。全意識(shí)到本聲明的法律后果由本人承擔(dān)。同意學(xué)校保留并向國(guó)家有關(guān)部門(mén)或機(jī)構(gòu)送交論文的復(fù)印件和電子版,允許論文被查閱和借閱。本人授權(quán)大學(xué)可以將本學(xué)位。印或掃描等復(fù)制手段保存和匯編本學(xué)位論文。涉密論文按學(xué)校規(guī)定處理。設(shè)計(jì)是否有創(chuàng)意?

  

【正文】 ID 更新差值,并把差值融合到 gx,gy,gz 中: exInt = exInt + ex*Ki * halfT。 eyInt = eyInt + ey*Ki * halfT。 ezInt = ezInt + ez*Ki * halfT。 gx = gx + Kp*ex + exInt。 gy = gy + Kp*ey + eyInt。 gz = gz + Kp*ez + ezInt。 之后,使用四元數(shù)微分方程 (龍格庫(kù)塔方法 )來(lái)更新四元數(shù),并重新標(biāo)準(zhǔn)化四元數(shù): iq0 = (q1*gx q2*gy q3*gz)*halfT。 iq1 = (q0*gx + q2*gz q3*gy)*halfT。 iq2 = (q0*gy q1*gz + q3*gx)*halfT。 iq3 = (q0*gz + q1*gy q2*gx)*halfT。 q0 += iq0。 q1 += iq1。 q2 += iq2。 q3 += iq3。 norm = invSqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3)。 q0 = q0 * norm。 q1 = q1 * norm。 q2 = q2 * norm。 q3 = q3 * norm。 最后,由四元 數(shù)結(jié)果反算出歐拉角數(shù)值: angles[0] = (int16_t)(atan2(2 * q[1] * q[2] 2 * q[0] * q[3], 2 * q[0]*q[0] + 2 * q[1] * q[1] 1) * 1800/M_PI)。 angles[1] = (int16_t)(atan(agx / sqrt(agy*agy + agz*agz)) * 1800/M_PI)。 angles[2] = (int16_t)(atan(agy / sqrt(agx*agx + agz*agz)) * 1800/M_PI)。 以上為單片機(jī)端軟件的主體內(nèi)容。 同時(shí),為了驗(yàn)證姿態(tài)解算結(jié)果正確,在 PC 上,使用 Visual Studio C開(kāi)發(fā)了一個(gè)可視化的查看器,通過(guò)藍(lán)牙串口收取姿態(tài)解算數(shù)據(jù),并使用木盒代替人頭將姿態(tài)顯示出來(lái)。 3D上 海 大 學(xué) 畢 業(yè) 論 文 (設(shè) 計(jì)) 26 姿態(tài)顯示部分使用的是 OpenGL。 圖 215 AHRS Viewer 截圖 AHRS Viewer (Attitude Heading Reference System, 航向姿態(tài)參考系統(tǒng) ) 中的 3D View中會(huì)顯示頭部的實(shí)時(shí)姿態(tài),三個(gè)進(jìn)度條也會(huì)顯示出 Yaw, Pitch, Roll 三個(gè)方向上的角度大小。左上角的 Sensor Result 中,實(shí)時(shí)顯示了各個(gè)傳感器的數(shù)值。左下角的 ”FPS”標(biāo)簽記錄了當(dāng)前秒一共收到了多少幀的數(shù)據(jù)。如果串口是在打開(kāi)軟件之后插入電腦的話(huà),需要先點(diǎn)擊 ”Refresh Ports”按鈕,否則 ”Serial Port”列表中不會(huì)顯示新加的串口。 上 海 大 學(xué) 畢 業(yè) 論 文 (設(shè) 計(jì)) 27 第三章 3D 聲音渲染系統(tǒng) 3D 聲音渲染原理 3D 聲音技術(shù)的本質(zhì)是模擬聲音從聲源到聽(tīng)者位置所產(chǎn)生的振動(dòng)。雙耳間會(huì)有時(shí)間差( ITD, interaural time difference)和強(qiáng)度差( ILD, interaural level difference),同時(shí)聲音在傳入人耳的過(guò)程中,會(huì)被人的身體、頭部、耳廓、中耳等吸收,從而改變聲音的性質(zhì)。人腦可以通過(guò)這些區(qū)別來(lái)感知聲源的位置、方向。我們可以使用頭相關(guān)傳遞函數(shù)( HRTF,headrelated transfer function)來(lái)記錄聲音從聲源到聽(tīng)者的這種變化,本質(zhì)上, HRTF 是從聲源到聽(tīng)者的沖擊響應(yīng)。有了來(lái)自某方向的 HRTF 數(shù)據(jù)使用它與原始聲音相卷積就可以得到來(lái)自該方向的聲音。即: 圖 31 人頭錄音示例 HRTF 的 獲取使用的是人頭錄音方法。首先,在假人頭中的左右耳道中放置麥克風(fēng),用來(lái)記錄左右耳聽(tīng)到的聲音。之后,圍繞著假人頭用揚(yáng)聲器播放沖擊,與此同時(shí),耳道里的雙麥克風(fēng)記錄沖擊的響應(yīng),這個(gè)響應(yīng)便是這個(gè)方向上從聲源到聽(tīng)者的 HRTF。 光有 HRTF 是不足夠的,因?yàn)?HRTF 只是記錄了聲音的方位信息,對(duì)于一個(gè)具體的場(chǎng)景,聲音不僅有方向,聲音還會(huì)在場(chǎng)景中反射、折射,聲源離聽(tīng)者的距離也會(huì)不固定。于是,我們提出使用光線(xiàn)追蹤來(lái)模擬聲音的傳播,并模擬聲線(xiàn)與聽(tīng)者的碰撞,碰撞時(shí)記錄每個(gè)聲線(xiàn)此時(shí)的傳播時(shí)間、強(qiáng)度和方位,最終使用這些信息,生成雙 耳房間沖擊響應(yīng) BRIR。通過(guò) BRIR 與原始聲音的卷積,我們可以模擬在房間里,從聲源到聽(tīng)者發(fā)出的聲音。這樣方式產(chǎn)生的聲音可以給用戶(hù)更加的沉浸感, 3D 聲音聽(tīng)起來(lái)也越真實(shí)。 上 海 大 學(xué) 畢 業(yè) 論 文 (設(shè) 計(jì)) 28 光線(xiàn)追蹤算法 光線(xiàn)追蹤( Ray tracing),又稱(chēng)為光線(xiàn)跟蹤,來(lái)自于幾何光學(xué)的一項(xiàng)通用技術(shù),它通過(guò)跟蹤與光學(xué)表面發(fā)生交互作用的光線(xiàn)從而得到光線(xiàn)經(jīng)過(guò)路徑的模型 [6]。 光線(xiàn)追蹤廣泛用于計(jì)算機(jī)圖形學(xué)中,使用這樣的方法,可以比光柵化圖像生成達(dá)到更加好的光學(xué)的效果。同時(shí),光線(xiàn)追蹤對(duì)于折射和反射都有非常好的效果,所以在對(duì)圖像質(zhì)量要求高的場(chǎng)合, 例如電源渲染中,常常會(huì)采用這種方法。 圖 32 光線(xiàn)追蹤示例 在實(shí)際應(yīng)用中,可以將各種電磁波或者微小粒子看成光線(xiàn) , 我們可以 利用光線(xiàn)追跡來(lái)計(jì)算 微小粒子在介質(zhì)中傳播的情況。首先發(fā)射一條光線(xiàn)到空間中,當(dāng)光線(xiàn)碰撞到障礙物時(shí),原光線(xiàn)傳播方向改變,沿著反射角方向傳播 。 聲音是波,不過(guò)考慮到聲波的波長(zhǎng)遠(yuǎn)小于房間中墻壁的尺寸,我們認(rèn)為使用光線(xiàn)追蹤這樣粒子性較強(qiáng)的算法是合適的。每個(gè)聲線(xiàn)在房間中傳播,遇到墻壁會(huì)反射,在空氣中傳播會(huì)有損耗,最終會(huì)撞上聽(tīng)者的聲音是我們所需要關(guān)注的,使用這些聲音的方位、時(shí)延、強(qiáng)度,我們可以獲得 BRIR。 要實(shí)現(xiàn)光線(xiàn)追蹤,首先需要定義幾個(gè)類(lèi): Primitive:場(chǎng)景的基元,本質(zhì)上是一個(gè)三角形,類(lèi)中有檢測(cè)碰撞、求交、渲染三角形等功能。 Ray:聲線(xiàn),類(lèi)中記錄聲線(xiàn)的起點(diǎn)、方向、強(qiáng)度、傳播距離等信息。 Scene:場(chǎng)景類(lèi),是 Primitive 的集合,包含讀取 Obj 模型、整個(gè)場(chǎng)景渲染等功能。 Vector:向量類(lèi) Plane:平面類(lèi),包含法相 N 和距離 D 上 海 大 學(xué) 畢 業(yè) 論 文 (設(shè) 計(jì)) 29 光線(xiàn)追蹤偽代碼: 對(duì)于每一個(gè)基元 { 如果光線(xiàn)與該基元碰撞 { 光線(xiàn)強(qiáng)度根據(jù)光線(xiàn)起點(diǎn)到碰撞位置的距離衰減 將原光線(xiàn)的設(shè)為反射的 方向 光線(xiàn)強(qiáng)度再減去碰撞的衰減 } 如果光線(xiàn)的強(qiáng)度為 0,將光線(xiàn)設(shè)為不活躍狀態(tài) } 重復(fù)上面過(guò)程直到活躍光線(xiàn)數(shù)目為 0 在 Primitive 類(lèi)中,主要的計(jì)算是:( 1)根據(jù)三個(gè)頂點(diǎn)計(jì)算平面方程;( 2)光線(xiàn)與三角形求交。 根據(jù)三個(gè)頂點(diǎn)計(jì)算平面方程: 設(shè)有三個(gè)點(diǎn) , ,則平面的法相量為 平面方程的 D 參數(shù)為: 代碼示意: vector3 p12,p23。 p12=p1p2。 p23=p2p3。 vector3 normal = (p23)。 ()。 float D = DOT( normal, p3 )。 =normal。 =D。 上 海 大 學(xué) 畢 業(yè) 論 文 (設(shè) 計(jì)) 30 光線(xiàn)與三角形求交分為 2 步 ,計(jì)算距離 對(duì)于 1,設(shè)有光線(xiàn) ,平面 ,約掉 P,則有 其解為: 示例代碼: float dist = DOT((()),)/(DOT((),))。 圖 33 三角形與光線(xiàn)碰撞示例 之后檢測(cè)交點(diǎn)是否在三角形內(nèi)部,對(duì)于三角形的每一條邊, 上 海 大 學(xué) 畢 業(yè) 論 文 (設(shè) 計(jì)) 31 如果對(duì)每條邊 ,則交點(diǎn)在三角形內(nèi)部。 示例代碼: if (dist 0) { if (dist distance) { if(isInside(()+()*dist)) { distance = dist。 return HIT。 } } } bool Primitive::isInside(vector3 p) { if (sameSide(p, p1, p2, p3) amp。amp。 sameSide(p,p2, p1, p3) amp。amp。 sameSide(p, p3, p1, p2)) return true。 else return false。 } bool Primitive::sameSide(vector3 p1,vector3 p2,vector3 a,vector3 b) { vector3 cp1 = (ba).Cross(p1a)。 vector3 cp2 = (ba).Cross(p2a)。 if (DOT(cp1, cp2) = 0) return true。 else return false。 } Scene 類(lèi)主要存儲(chǔ)了一個(gè) Primitive 列表 std::vectorPrimitive primList。 當(dāng)聲線(xiàn) Ray 做碰撞檢測(cè)時(shí)都是訪(fǎng)問(wèn) Scene 里的 intersect 接口進(jìn)行碰撞檢測(cè), Scene 里的 intersect 負(fù)責(zé)返回被碰撞的 Primitive 的 id 與從聲線(xiàn)起點(diǎn)到該 Primitive 的距離。 同時(shí) Scene 負(fù)責(zé) Primitive 的產(chǎn)生。為了使系統(tǒng)支持復(fù)雜的場(chǎng)景, Scene 可以讀取 OBJ模型,并將 OBJ 中的三角片面轉(zhuǎn)換成系統(tǒng)所需要的 Primitive 列表。 OBJ 模型文件是Wavefront Technologies 為 Advanced Visualizer animation package 開(kāi)發(fā)的幾何定義文件。這種文件格式是開(kāi)放的,被很多 3D 圖像開(kāi)發(fā)商使用,這是一種被廣泛接受的 3D 文件格式。上 海 大 學(xué) 畢 業(yè) 論 文 (設(shè) 計(jì)) 32 OBJ 文件由一行行文本組成,注釋行以符號(hào) “”為開(kāi)頭。 每行開(kāi)頭都會(huì)有個(gè)關(guān)鍵字表明此行數(shù)據(jù)的類(lèi)型 。 對(duì)于我們的系統(tǒng),主要用到的 OBJ 中的數(shù)據(jù)有: 關(guān)鍵詞 V: vertex 頂點(diǎn)信息 關(guān)鍵詞 F: face 片面信息 Scene中的 bool Scene::loadObj(std::string filename)首先讀取 OBJ的頂點(diǎn)信息,然后再讀取片面信息,之后根據(jù)片面和頂點(diǎn)坐標(biāo)重新生成基于 Primitive的場(chǎng)景。 Scene也負(fù)責(zé)場(chǎng)景的渲染, Scene::render()中,函數(shù)循環(huán)調(diào)用每個(gè) Primitive的渲染函數(shù),從而將整個(gè)場(chǎng)景渲染出來(lái)。為了讓場(chǎng)景看起來(lái)更方便直觀(guān),渲染時(shí)候開(kāi)起來(lái) OpenGL的混合模式, Blending可以 從 Fragment Shader中取出渲染結(jié)果并且將其用于 混合 新的場(chǎng)景。首先把場(chǎng)景不透明的部分渲染出來(lái),之后開(kāi)啟混合模式并關(guān)閉深度測(cè)試,再渲染透明的場(chǎng)景 。 代碼示例: glEnable(GL_BLEND)。 glDepthMask(GL_FALSE)。 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)。 ()。 glDepthMask(GL_TRUE)。 glDisable(GL_BLEND)。 Ray 類(lèi)主要是記錄聲線(xiàn)信息,其包含以下成員 float strength:聲線(xiàn)的強(qiáng)度 bool active:該條聲線(xiàn)是否活躍,不活躍的聲線(xiàn)不會(huì)用來(lái)做光線(xiàn)追蹤 int microseconds:該條聲線(xiàn)已經(jīng)傳播的時(shí)間 float totalDist:該條聲線(xiàn)已經(jīng)傳播的距離,此項(xiàng)與上一項(xiàng)等價(jià) std::vectorfloat distList:使用 vector 記錄每次碰撞時(shí)所經(jīng)過(guò)的距離 vector3 m_Origin:聲線(xiàn)的起點(diǎn)位置 vector3 m_Direction:聲線(xiàn)的方向 Ray 還包含以下幾個(gè)函數(shù) void SetOrigin( vector3amp。 a_Origin ) { m_Origin = a_Origin。 }//設(shè)置起點(diǎn) void SetDirection( vector3amp。 a_Direction ) { m_Direction = a_Direction。 }//設(shè)置方
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1