開(kāi)發(fā)者更新 - 2023年8月3日

歡迎來(lái)到2023年8月3日的開(kāi)發(fā)者更新!
本次開(kāi)發(fā)者更新的封面展示了“VR art ‘New place’”,一個(gè)令人驚嘆的3D虛擬現(xiàn)實(shí)藝術(shù)畫(huà)廊!Lee Jae-hyuk的藝術(shù)作品被展示在GreatMoonAroma_的世界中(由Jetdog構(gòu)建)。去看看吧!
(https://vrchat.com/home/world/wrld_ecc29d21-e4c1-4a4a-ae48-46de7b7bc6b1)
如果你想要趕上進(jìn)度,你可以閱讀我們之前發(fā)布的專欄:

重要信息 / 公告
VRChat 2023.2.4已發(fā)布!
本周早些時(shí)候,我們發(fā)布了VRChat 2023.2.4!此次更新包括備受期待的Avatar縮放功能!?。?/p>
除了在我們的文檔中提供的常規(guī)完整補(bǔ)丁說(shuō)明外,我們還為您準(zhǔn)備了一個(gè)視頻,概述了這些功能和變化。

還有VRChat 2023.2.4p1!
就在這個(gè)開(kāi)發(fā)者更新完成之前,一個(gè)新的補(bǔ)丁發(fā)布了,修復(fù)了一些2023.2.4的錯(cuò)誤。
VRChat 2023.3.1 Open Beta版
我們還有一個(gè)活躍的Open Beta版
其中還有一個(gè)對(duì)于使用OSC為VRChat制作工具的人非常重要的大功能:OSCQuery!
OSCQuery
VRChat 2023.3.1包括對(duì)OSCQuery的支持!這是一個(gè)使應(yīng)用程序更容易在OSC上設(shè)置和連接的系統(tǒng)?,F(xiàn)在,一些應(yīng)用程序?qū)⒛軌蜃詣?dòng)找到并連接到VRChat,用戶無(wú)需手動(dòng)查找和輸入IP地址和OSC端口。此功能還使VRChat能夠同時(shí)發(fā)送給多個(gè)OSC應(yīng)用程序,而不僅僅是一個(gè)!

對(duì)于有興趣與這一新功能集成的開(kāi)發(fā)人員,可以閱讀我們的OSCQuery的OSC維基頁(yè)面,了解有關(guān)VRChat的實(shí)現(xiàn)和要求的詳細(xì)信息。
(https://github.com/vrchat-community/osc/wiki/OSCQuery)
為了實(shí)現(xiàn)這一點(diǎn),我們構(gòu)建了自己的C#開(kāi)源OSCQuery庫(kù),因?yàn)槲覀儫o(wú)法使用現(xiàn)有的庫(kù)。在這一過(guò)程中,我們與社區(qū)中一些了不起的OSC應(yīng)用程序開(kāi)發(fā)人員合作和溝通,感謝你們?cè)谝荒甑臅r(shí)間里為我們的開(kāi)發(fā)提供反饋和耐心!
VRChat IK測(cè)試版
IK測(cè)試版已經(jīng)完成了封閉測(cè)試,現(xiàn)在每個(gè)人都可以在Steam的“IK-Beta”分支上嘗試。與我們上次在開(kāi)發(fā)者更新中討論它時(shí)相比,有一些新的變化:
追蹤器重做 - 調(diào)整運(yùn)動(dòng)預(yù)測(cè)
現(xiàn)在,您將能夠選擇SteamVR應(yīng)用于FBT追蹤器的運(yùn)動(dòng)預(yù)測(cè)量。預(yù)測(cè)越多,抖動(dòng)越多(它試圖猜測(cè)追蹤器在未來(lái)的位置,有時(shí)會(huì)猜錯(cuò))。新的默認(rèn)設(shè)置將不使用運(yùn)動(dòng)預(yù)測(cè),因此跳來(lái)跳去和踩腳應(yīng)該會(huì)顯得更加穩(wěn)定。可以在Tracking & IK主菜單頁(yè)面中玩“Tracker Motion Prediction”滑塊,看看哪種設(shè)置對(duì)您最合適。
追蹤器重做 - 失去追蹤
當(dāng)SteamVR追蹤器失去追蹤(例如被衣服或椅子擋?。r(shí),它們現(xiàn)在會(huì)暫時(shí)停在原地,而不會(huì)飛到外太空。
當(dāng)您使用“在斷開(kāi)連接時(shí)凍結(jié)追蹤器”選項(xiàng)時(shí),您的凍結(jié)追蹤器將保持在播放空間中的原位,而不會(huì)被您的頭部拖動(dòng)。
脊柱改進(jìn)
Lock-Head模式現(xiàn)在將支持一些微妙的位置胸部跟蹤(以前只有Lock-Both模式有此功能)。這個(gè)版本比Lock-Both的位置胸部跟蹤要輕柔。孤立的舞者可能仍然更喜歡Lock-Both來(lái)進(jìn)行胸部跟蹤。
以下是一些新變化的實(shí)際效果:

在IK測(cè)試版中,我們繼續(xù)根據(jù)您的反饋進(jìn)行迭代,處理了許多邊緣情況的角色和姿勢(shì)。請(qǐng)?jiān)囋嚳础?strong>它與Live版兼容!
持續(xù)開(kāi)發(fā)
全新VRChat+功能:UI顏色自定義和顏色選擇器!
我們將在未來(lái)的發(fā)布中推出一個(gè)全新的VRChat Plus功能…!

我們?yōu)閂RChat Plus的訂閱者增加了UI顏色自定義作為新的福利!

您可以使用此功能為6個(gè)不同的類別選擇顏色,以取代我們的默認(rèn)調(diào)色板。然后,您可以保存這些調(diào)色板并在它們之間進(jìn)行切換!
開(kāi)發(fā)深入探討 - Avatar縮放和自定義標(biāo)量
偶爾,我們會(huì)深入探討一些技術(shù)性質(zhì)的內(nèi)容。這需要更長(zhǎng)時(shí)間來(lái)準(zhǔn)備和審查,所以不要期望經(jīng)常看到!
這次的主題是“Avatar縮放如何處理自定義標(biāo)量?(技術(shù)方面)”
最初的Avatar縮放版本在我們的Open Beta版中,破壞了那些具有自定義標(biāo)量的Avatar,比如“GoGo Loco Broke”。這是一個(gè)很大的痛點(diǎn),雖然最初考慮將其視為“設(shè)計(jì)上的瑕疵”,但最終我們找到了解決方案,既滿足了我們的設(shè)計(jì)目標(biāo),又保持了性能。
社區(qū)成員對(duì)于如何實(shí)現(xiàn)這一點(diǎn)感到好奇,所以我將盡力在這里解釋。
問(wèn)題
自定義比例動(dòng)畫(huà)每幀都會(huì)應(yīng)用于Avatar的根變換(描述符所在的地方)。我們過(guò)去只在加載后立即應(yīng)用新的Avatar比例,這意味著之后(事實(shí)上,甚至在我們“測(cè)量”它用于FBT等之前,這就是比例標(biāo)量最初的工作方式)動(dòng)畫(huà)可能會(huì)再次影響比例。然而,我們的內(nèi)部系統(tǒng)現(xiàn)在會(huì)假定我們?cè)O(shè)置的比例仍然有效,這導(dǎo)致了眼睛高度和預(yù)期比例的不一致。
在Unity中設(shè)置transform.localScale是有代價(jià)的,特別是如果它需要為實(shí)例中的每個(gè)Avatar運(yùn)行,所以始終運(yùn)行它并不是一個(gè)好主意。它還需要仔細(xì)的時(shí)間安排,因?yàn)閯?dòng)畫(huà)和我們Avatar系統(tǒng)的其他部分可能會(huì)同時(shí)運(yùn)行。(是的,VRChat是多線程的……)
社區(qū)中立即提出的另一個(gè)建議是,我們應(yīng)該在加載時(shí)只是移除縮放動(dòng)畫(huà)。不幸的是,Unity打包動(dòng)畫(huà)控制器的方式不保留太多細(xì)節(jié),目前我們無(wú)法提取或修改Avatar上的個(gè)別動(dòng)畫(huà)。你知道嗎,即使在游戲中的Avatar調(diào)試面板中,圖層名稱之所以能夠正常工作,也是因?yàn)镾DK特別保存了它們嗎?
解決方案
在VRChat中,SDK3的Avatar使用了Unity的PlayableGraph API。不詳細(xì)介紹,這個(gè)一般的概念在社區(qū)工具中得到了復(fù)制,例如AV3Emulator,如果您感興趣,可以查看一下。您的所有動(dòng)畫(huà)和動(dòng)畫(huà)控制器層都是控制您的Avatar所做的事情的單個(gè)圖層的一部分。
Unity支持在此類圖表中使用自定義腳本節(jié)點(diǎn)(稱為動(dòng)畫(huà)任務(wù)),這些節(jié)點(diǎn)將與任何動(dòng)畫(huà)一起進(jìn)行評(píng)估。解決方案只是簡(jiǎn)單地在此圖表的末尾附近插入一個(gè)節(jié)點(diǎn),該節(jié)點(diǎn)應(yīng)用本地Avatar縮放系統(tǒng)計(jì)算的根縮放。與“每幀只是設(shè)置transform.localScale”解決方案相比,這解決了兩個(gè)主要問(wèn)題:
性能大部分不受影響,因?yàn)樵撊蝿?wù)已經(jīng)經(jīng)過(guò)了Burst編譯,會(huì)與圖表的其余部分一起異步運(yùn)行
應(yīng)用變換值與其他動(dòng)畫(huà)同時(shí)進(jìn)行,這意味著時(shí)間將與現(xiàn)有縮放器的時(shí)間匹配
幾乎完成的東西
告訴你,不僅是你,還有創(chuàng)作者們 - 有時(shí)候我們也要與Unity的怪異之處進(jìn)行內(nèi)部斗爭(zhēng)。
不幸的是,Unity 2019(至少如此)存在一個(gè)錯(cuò)誤,即從Playable圖表中的根變換訪問(wèn)或?qū)懭肟s放會(huì)產(chǎn)生虛假(盡管相當(dāng)有趣)的結(jié)果,如果禁用了?root motion:

順便說(shuō)一下,您自己非常接近親身體驗(yàn)到這一點(diǎn),因?yàn)樗赒A流程中相當(dāng)晚才被發(fā)現(xiàn)!由于某種原因,它適用于許多Avatar,但非常特定的Avatar會(huì)中斷。從未弄清楚原因。
僅僅打開(kāi)?root motion?還不是一個(gè)解決方案,因?yàn)檫@可能會(huì)影響我們的IK解決方案。因此,我們需要變得有創(chuàng)造力!Unity允許您聲明一個(gè)名為OnAnimatorMove的函數(shù),該函數(shù)將被用于應(yīng)用?root motion?,而不是使用內(nèi)置的函數(shù)。在一個(gè)瞬間的天才(或瘋狂)中,我們想出了最終要發(fā)布的解決方案 - 讓我為您展示,VRChat?已知的最強(qiáng)大的?root motion?應(yīng)用腳本:
別擔(dān)心,律師團(tuán)隊(duì) - 我已經(jīng)改變了評(píng)論的內(nèi)容,所以我沒(méi)有透露商業(yè)機(jī)密??
有了這個(gè)設(shè)置,我們可以在Animator上啟用?root motion,Unity會(huì)很高興地在我們的圖表中為我們提供所有根變換數(shù)據(jù),然后我們?cè)谧詈髞G棄這些更改,以使我們的IK不受影響。
哦,結(jié)束了嗎?
那么,代價(jià)是什么?簡(jiǎn)單的功能或錯(cuò)誤修復(fù)請(qǐng)求通常會(huì)變得比您想象的要復(fù)雜得多!