我们丐帮玩动作捕捉,只需一个网络摄像头| TenorFlow + MaxMSP + Blender

Xsens动作捕捉 2023-05-09 3252

这篇的标题很长,明人不做暗事,标题后面的那一串关键词,是为了提高在搜索里的曝光率。

丐帮玩动捕,只需一个摄像头


上边这个视频的原理步骤:

  1. 用基于网页的人工智能的TensorFlow的PoseNet的来做动作捕捉
  2. 把这个网页用MaxMSP提供的Node for Max模块联动到MaxMSP里;
  3. PoseNet捕捉到的人体动作数据通过http://Socket.IO发回给MaxMSP;
  4. MaxMSP把收到的数据通过OSC发送给Blender;
  5. Blender用收到的数据来实时控制变形动画。


还是要划一下重点,我往往发的都是组合拳,这一套至少三个要点:

  • 演示PoseNet动作捕捉;
  • MaxMSP的Node for Max与网页间的数据收发(其实之前好几个例子都用了这个环节,包括视频教程,可惜播放量就……算了我也假装不在意这个)。
  • Blender的Eevee实时渲染,即OSC数据的接收。


PoseNet

我们丐帮玩动作捕捉,只需一个网络摄像头| TenorFlow + MaxMSP + Blender  第1张



从前Google有个山,啊不是,Google有个机器学习框架TensorFlow,
TensorFlow有个JavaScript版TensorFlow.js,
TensorFlow.js里面有一个PoseNet模型,
PoseNet是一个可以在网页里运行的实时动作捕捉模型。

我把它进行了微调,并且把模型下载到本地来加载,为你省去一些加载不成功引起的调试苦恼。



MaxMSP的Node for Max

它看上去是把网页跟MaxMSP联动起来,实际上是借助强大的Web前端和NodeJS力量,大大扩展MaxMSP的功能。

我们丐帮玩动作捕捉,只需一个网络摄像头| TenorFlow + MaxMSP + Blender  第2张
注意:需要Max8


以前的文章里用过多次了,上一篇我要打十个的详细视频教程,就有完整的MaxMSP + Node for Max + 网页 + http://Socket.IO + OSC的实现过程。

【教程来了】“我要打十个!” 小程序与PC装置交互全过程


要实现本期这个例子,其实不用Max这个环节也行(纳尼?!)。
直接用NodeJS做一个本地服务器,托管PoseNet的页面,并且使用OSC库把数据发给Blender就可以了。

我用Max的目的,是因为Max的UDP Object实在太好用了。
当然也是为了强行水一贴Max,不然变成纯前端编程,影响收视率。


Blender

Blender端之前演示过了,模型、NodeOSC插件、Eevee渲染,都是老配方,没有变化。

这个车模型不是我做的,之前给过引用链接。
被我引用了多次,之前那个BugOSC小程序和车模互动的视频,在Twitter上浏览量还超了十万加,车模作者开心的点赞互粉。

我们丐帮玩动作捕捉,只需一个网络摄像头| TenorFlow + MaxMSP + Blender  第3张

参考资源

PoseNet
https://github.com/tensorflow/tfjs-models/tree/master/posenet

Blender汽车模型
我在这里买的,请支持作者:
https://gumroad.com/bluefoxcreation#RclL


Talk is cheap. Show me the code!

本文中列出的之前的视频教程,实际上已经涵盖了Max与页面JavaScript数据通信、以及Max与Blender OSC互动的完整过程。
而Web页面端的js代码,PoseNet 微调,也都一并打包。

源文件(MaxMSP patch + Node/HTML代码)开源,放在实验编程情报中心 - 语雀知识库里。

实验编程情报中心(语雀)免费加入,目前在内测,可以加入微信群获取内部邀请链接。
详情点击:实验编程情报中心

另外编程德鲁伊系列绝大部分开源,可刨公众号菜单。

实验编程知识星球里,你将持续获取大部分系列的源代码以及无限次答疑。
更多内容,请刨公众号菜单:关于问答-知识星球


您的鼓励在看收藏转发,是我乱码的动力。

微信公众号/视频号/知乎专栏/B站/知识星球:
实验编程

语雀知识库:
实验编程情报中心(微信群获取邀请链接)

The End