Skip to main content

使用OSC与外部程序通讯

在VRChat中开启了OSC功能后,

设置.png


当Avatar中定义过的参数发生变化时,VRChat就会通过OSC向外部发送数据:

IP:127.0.0.1(本地IP) 9001为VRChat发出的端口,我们的程序接收这个端口的消息。

IP:127.0.0.1(本地IP) 9000是VRChat接收的端口,要给VRChat发消息通过这里。

面捕程序VRCFaceTracking也是通过此方法传递面捕的参数。

如果需要多个程序连接,要用到VOR作为路由器。

github.com/SutekhVRC/VOR

在正常连接好后,就可以读到参数了,

详细使用OSC可以参考官方wiki

github.com/vrchat-community/osc

收发消息是基础,像我这种非专业程序,建议使用大佬现成的库,

如果是用C#可以参考这个:

github.com/hecomi/uOSC

而且就算用了现成的库,也得小心,要正确的处理消息,

我之前就犯过一个低级错误,导致CPU占用爆表,因为处理的时候忘了给接收消息的代码所在的线程设置等待,导致CPU一有空就会去跑一遍,毫无意义的占用了CPU。

后续防止消息过多堵塞也是要注意,VRChat是无差别的将所有更改的内容全部吐出来,当角色 移动或者旋转视角时,会有一大堆的消息,需要自行丢弃一些过时重复的项目。

解决以上问题后,就差不多了~

这是我自己搓的小工具,

www.bilibili.com/video/BV12z421S7ho

在github开源了,

github.com/amoeet/VRChat_X_DGLAB

不过有疑问还是加群讨论,翻我那个屎山代码可能会比较痛苦

技术交流群群号:839674395