我实际上在做的事情与这个用户的帖子非常相似:https://stackoverflow.com/questions/6800292/python-ai-and-3d-animation
但那个帖子没有答案,我也没能联系到那个用户。
基本上,我有一个功能正常的Python脚本,它会根据我的语音命令做出相应的动作(获取邮件、天气预报、开关灯等),这个脚本是使用pyspeech库制作的,效果非常好。
现在我想给我的程序添加一个“脸”!我想到了用Blender来建模这个脸(我有一些相关知识,并且会继续学习),我知道我可以对其进行动画处理,让嘴唇动起来等。所以我想知道是否有可能做到以下几点:
- 从我的主Python脚本中加载我在Blender中制作的“脸”(这样当我的程序启动时,屏幕上也会显示这个脸)
- 从脚本中运行动画,例如当我的程序说“你不用谢”时,我可以运行一个动画,让脸上的嘴唇动起来,模拟说话的效果。
我知道Blender有很好的Python集成(或许更准确地说是基于Python构建的),这就是为什么我认为它是一个很好的选择。
希望有人能帮助我,告诉我这是否可行,并指导我正确的方向,我的谷歌搜索结果总是显示与Blender相关的Python脚本,这并不是我在这里所需要的…我想…
谢谢,
@
回答:
确实,你想要的效果是可以实现的。如果你只是想根据程序的决策播放预渲染的动画视频,任何允许你嵌入并在窗口小部件中播放视频的GUI都可以满足你的应用需求。
你可以使用Pygame来创建自己的GUI(Pygame支持视频,但你需要使用为Pygame设计的那些较小的、相对“业余”的窗口小部件工具包来完成你的应用的其余部分,因为Pygame本身是比较底层的)。
在更高层次上,虽然我没有嵌入过视频,但我认为你可以使用PyQT4(我稍微谷歌了一下,例子不多,但QT4源码中有提示)或GTK+(同样,貌似有更多的例子)。
另一个选项是构建你的应用,使其在Blender游戏引擎内部运行 – 它提供了一个高级工具包,并且有方法根据用户行为定制行为(甚至不需要编程)。
这样做的主要缺点是:我不知道现在分发需要Blender游戏引擎的应用有哪些选项 – 你的用户将需要安装Blender(但Blender团队可能会提供一种简便的方法来处理这个问题)。
另一方面:你会获得最大的灵活性,甚至可以在你的应用中实时渲染一些序列(与预渲染视频相对)。
还有一点:Blender现在使用Python 3.x – 如果你需要的其他库是Python 2的,你将需要为Blender内的GUI创建一个不同的进程,并与你的Python 2后端交换数据(例如使用jsonrpc或xmlrpc – 在Python中这足够简单)。