Kinect试衣镜添加调节服装水平偏移量,实现更完美贴合

3 篇文章 0 订阅
2 篇文章 0 订阅

首先要有Kinect v2插件。链接稍后奉上……

【新版插件已经完善了以下功能,不必再看,谢谢】

入坑提示
换装不像其他的手势识别,看到人物捕捉到关节就行了;为了避免不必要的麻烦,尽关量让摄像头正视人物。避免斜视出现关节点距离判断不准确的现象,衣服贴合不上。

参考现有官方现有代码:
AvatarController中现有的功能,发现只有垂直偏移量verticalOffset和前后偏移量forwardOffset的调整功能。
而有些服装可有需要调整水平方向的偏移量才能完美贴合。
先研究一下官方给的方法
垂直方向偏移量的实现方式:

	       if (verticalMovement && verticalOffset != 0f && bones[0] != null && bones[3] != null)
        	{
            	Vector3 dirSpine = bones[3].position - bones[0].position;//脖子关节点和脊椎关节点的向量
            	targetPos += dirSpine.normalized * verticalOffset;//向量模长与偏移量的乘积。实现垂直方向的偏移
        	}

前后方向偏移量的实现方式:

        if (forwardOffset != 0f && bones[0] != null && bones[3] != null && bones[5] != null && bones[11] != null)
        {
            Vector3 dirSpine = (bones[3].position - bones[0].position).normalized;//脖子关节点和脊椎关节点的向量模长
            Vector3 dirShoulders = (bones[11].position - bones[5].position).normalized;//左右肩关节点向量模长
            Vector3 dirForward = Vector3.Cross(dirShoulders, dirSpine).normalized;//两个向量模长叉乘,得到垂直于两条向量的新向量,计算模长。
            targetPos += dirForward * forwardOffset;
        }

看过官方给的两个偏移量实现方式,相信已经明白人已经知道实现方式了。
寻找水平方向的两个关节点,计算向量的模长,并乘上水平偏移值即可。
然鹅,官方已经隐形的给出水平方向的向量模长,Vector3 dirShoulders = (bones[11].position - bones[5].position).normalized;//左右肩关节点向量模长
具体代码:

    [Range(-0.5f, 0.5f)]
    public float horizontalOffset = 0f;

        if (verticalMovement && horizontalOffset != 0f && bones[5] != null && bones[11] != null)//可以自定义一个水平方向的bool值,我这里直接用的是垂直方向的bool值(verticalMovement)
        {
            Vector3 dirShoulders = (bones[11].position - bones[5].position).normalized;
            targetPos += dirShoulders.normalized * horizontalOffset;
        }

至此,完成添加功能。

如果服装量多的情况下,建议将AvatarController脚本中的3个偏移量参数(verticalOffset、horizontalOffset、forwardOffset),还有AvatarScaler脚本中的身体缩放系数4个参数(bodyScaleFactor、bodyWidthFactor、armScaleFactor、legScaleFactor)全部保存。调整好参数保存,每次换不同服装时进行赋值即可。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kinect V2 for Unity是一款基于Kinect V2深度相机技术的Unity游戏开发工具。通过Kinect V2深度相机,我们可以通过该工具实现虚拟试衣的功能。 使用Kinect V2 for Unity进行虚拟试衣可以通过以下步骤实现: 1. 首先,我们需要通过Kinect V2深度相机进行人体姿势检测和骨骼追踪。Kinect V2相机可以实时检测出人体的关节位置和骨骼信息。 2. 在Unity中,我们可以利用Kinect V2 for Unity提供的API获取到Kinect传输的关节和骨骼数据。这些数据可以用来在虚拟场景中生成一个与用户姿势相符的虚拟人体模型。 3. 接下来,我们可以利用虚拟人体模型来进行试衣。通过在Unity中导入不同的衣物模型,我们可以将这些衣物模型与虚拟人体模型进行绑定,使得衣物模型能够跟随虚拟人体模型的姿势变化。 4. 用户可以站在Kinect V2深度相机前,通过移动身体来改变虚拟人体模型的姿势,从而实现试穿不同衣物的效果。同时,通过在Unity中调整衣物模型的位置、大小和旋转等参数,可以很容易地实现衣物的适应和调整。 通过Kinect V2 for Unity进行试衣,不仅可以减少实际试穿所需的时间和成本,还可以提供加交互式和逼真的体验。用户可以通过身体语言和动作来与虚拟场景进行互动,从而好地感受到衣物的效果和舒适度。这种虚拟试衣技术可以广泛应用于电子商务、时尚设计和体育训练等领域,为用户带来加便利和个性化的购物和体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值