<小时/> 我正在开发一个用户通过Kinect(v2)扫描用户的项目。结果将是生成的3D模型,其适用于游戏。
扫描方面进展顺利,我已经生成了一些优秀的用户模型 例: 注意:这只是一个早期的测试模型。它仍然需要清理,并且需要改变立场以正确读取骨架数据。
<小时/> 我目前面临的问题是我不确定如何在生成的3D模型中放置骨架数据。我似乎无法找到一个允许我以编程方式在3D模型中插入骨架的程序。我想通过一个可以通过编程方式控制的程序来执行此操作,或者调整3D模型文件,使骨架数据包含在文件中。
<小时/> 我一直在寻找谷歌和StackOverflow上的类似问题,但它们通常指动作捕捉或骨骼动画。我知道Maya可以选择在3D模型中插入骷髅,但据我所知,这总是手工完成。对于我试图解决的问题,可能有一个更技术性的术语,但我不知道。
我对如何实现骨架插入有一系列的思考。我想它会是这样的:
扫描用户并使用Kinect生成3D模型;
1.2。清理用户模型,摆脱任何变形或不必要的信息。关闭清理过程中留下的孔。
使用Kinect扫描用户骨架数据。
2.2。提取骨架数据 2.3。获取关节位置并存储为3D空间的xyz坐标。存储骨骼长度和方向。
在可以创建骨架的程序中读取3D骨架数据。
使用插入的骨架保存新模型。
<小时/> 任何人都可以推荐(我知道,这可能是“基于意见”)一个程序来读取骨架数据并将其插入到3D模型中?是否可以将Maya用于此目的?
提前致谢。
注意:我选择在此处发布问题,而不是在图形设计堆栈交换(或其他堆栈交换站点)上发布,因为我觉得它更符合编码,对于将来会在这里搜索的人来说可能更有用。如果它发布在错误的网站上,请道歉。
答案 0 :(得分:0)
你的问题的一个棘手的部分是“插入骨架”的意思。通常,骨骼数据与几何体非常分离,并存储在场景图中的不同位置(骨骼数据本质上是分层的)。
您可以将文件格式导出到可以在几何体和骨架之间建立关联的文件格式,但这是关于如何将两者关联在一起的特定格式(例如:FBX与Collada)。
可能最接近“插入”或者更恰当地“将”骨架“附加”到网格上的是剥皮。在那里,您可以计算权重分配,基本上确定每个骨骼对网格中给定顶点的影响程度。
这是一个很难实现的目标(无论是编程还是艺术),并且根据您的质量需求,通常是一种半自动解决方案,最适合与艺术家的最高质量需求(商业游戏,电影等)努力调整所产生的重量分配和/或骨架。
有些算法在确定这些权重分配方面变得相当复杂,范围从简单的启发式算法,比如根据最近的线距离分配权重(非常粗糙,并且经常在骨盆或肩膀等棘手区域附近分开)或实际上将网格视为实体体积(使用体素或四面体表示)来尝试分配权重。示例:http://blog.wolfire.com/2009/11/volumetric-heat-diffusion-skinning/
但是,您可以使用像delta mush这样的算法获得不错的结果,这样可以让您通过权重分配得到一点草率但仍能获得相当平滑的变形。
现在,如果您想在外部执行此操作,几乎任何3D动画软件都可以执行此操作,包括像Blender这样的免费软件。然而,一般来说,皮肤和角色动画往往需要相当多的艺术技巧和耐心,所以值得注意的是它并不像看起来那么容易让人物跳跃,跳舞,蹲伏和奔跑即使你事先有骨架,它仍然看起来很好。从骨架到几何的重量关联是最难的部分。这通常是因为许多小时的艺术家在变形中工作以使他们在各种各样的姿势中看起来正确。