[Avatar] 使用OSC与外部程序通讯
在VRChat中开启了OSC功能后,
当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