建模机器人运动的最佳3D库
不久前,我询问过关于选择一个适合Python的3D图形库,用于机器人运动建模(在Python中使用逆向运动学)的建议。在做了一些研究并重新定义我的目标后,我希望再次请求一些帮助。
当时我觉得Blender是最好的选择,但现在我有些怀疑。我有一个关键目标,就是能够将模型集成到一个自定义的图形用户界面(wxPython)中。看起来这可能会相当困难(而且我不确定性能要求)。
我现在更倾向于使用OpenGL(PyOpenGL + wxglcanvas),但我仍然在努力确定这是否是合适的工具。我更像是一个CAD(计算机辅助设计)的人,所以我在想象如何在API中绘制复杂对象和创建运动时遇到困难。我听说我可以在Blender中设计对象,然后以某种方式将其导入OpenGL,但我不太确定这个过程是什么样的?操控物体的运动有多难?比如说,如果我在两个链接之间创建一个关节,然后移动一个链接,另一个链接会根据第一个链接动态移动吗?还是我需要独立编程每个链接的运动?
我有没有漏掉什么明显的工具?我并不想要完整的机器人建模包,我想从头开始,这样我可以将其融入到我自己的程序中。主要是为了学习。目前为止,我已经研究过vPython、Pyglet、Panda3D、Ogre和几个专业的CAD软件。
谢谢
2 个回答
如果你能提前计算好动作,可以使用Blender这个软件,手动制作动画,然后把它们保存成某种动画文件格式(比如cal3d?),最后在你的wxPython OpenGL窗口中渲染出来。
如果你需要处理用户输入,可以使用一个物理引擎……我听说Bullet有Python的接口:http://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?p=&f=9&t=4030(可能还不太稳定)。
关于你对Blender/OpenGL的疑问:你说的“复杂物体”具体指什么?有多少个“机器人/其他物体”?每个机器人有多少个三角形?每个机器人有多少个关节?(我会根据你的回答来修改我的建议)
总之,OpenGL本身只会做“显示三角形”的事情,其他的工作需要在别的地方完成。
补充说明
抱歉让你等了,我完全忘记了。
所以我建议你这样做:
- 在Blender中用多边形建模你的机器人。你可以轻松做到超过1万多边形,但尽量保持物体数量少(每个移动部件一个物体)
- 给它加上骨架,也就是做一个骨骼系统。你不需要给它动画。
- 导出为Collada或X3D格式
- 在你自己的OpenGL应用中重新导入
- 根据骨架指定的位置和方向绘制你的物体
- 像对待真实的步进电机一样修改骨骼之间的角度
- 如果第5步做得对,机器人应该能跟着动作走
- 可以选择添加物理效果(比如使用Bullet)。它的API概念上和OpenGL类似,你将能够用你的机械臂抓取物体。
祝你好运!