Kinect虚拟试衣


这里写图片描述


这个案例实现也比较简单


要做kinect开发,首先必须挂kinectManger这个类


因为开发中涉及到手势,因此需要挂上kinectGestures这个类


接下来就是一个类CategorySelector.cs,这个类需要实现KinectGestures.GestureListenerInterface这个接口,这个接口实现中监视某个手势和手势识别完成后


监视哪些手势:
这里写图片描述


手势完成后干什么(具体的业务都写在这)
这里写图片描述


下面几张截图来自:ModelSelector.cs这个类,这个类主要负责换模型


这里写图片描述


这里写图片描述


一定要注意,衣服身上需要挂AvatarController和AvatarScaler 组件,如果衣服预设体身上没有挂则需要通过程序动态的Add上

    private void LoadModel(string modelDir)
    {
        string modelPath = modelCategory + "/" + modelDir + "/model";
        print(modelPath);
        UnityEngine.Object modelPrefab = Resources.Load(modelPath, typeof(GameObject));
        if(modelPrefab == null)
            return;      
        if(selModel != null) 
        {
            GameObject.Destroy(selModel);
        }
        selModel = (GameObject)GameObject.Instantiate(modelPrefab, Vector3.zero, Quaternion.Euler(0, 180f, 0));
        selModel.name = "Model" + modelDir;

        AvatarController ac = selModel.GetComponent<AvatarController>();
        if (ac == null) 
        {
            ac = selModel.AddComponent<AvatarController>();
            ac.playerIndex = playerIndex;

            ac.mirroredMovement = true;
            ac.verticalMovement = true;
            ac.smoothFactor = 0f;
        }

        ac.posRelativeToCamera = modelRelativeToCamera;
        ac.posRelOverlayColor = (foregroundCamera != null);

        KinectManager km = KinectManager.Instance;
        //ac.Awake();

        long userId = km.GetUserIdByIndex(playerIndex);
        if(userId != 0)
        {
            ac.SuccessfulCalibration(userId);
        }

        km.avatarControllers.Clear(); // = new List<AvatarController>();
        km.avatarControllers.Add(ac);

        AvatarScaler scaler = selModel.GetComponent<AvatarScaler>();
        if (scaler == null) 
        {
            scaler = selModel.AddComponent<AvatarScaler>();
            scaler.playerIndex = playerIndex;
            scaler.mirroredAvatar = true;
            scaler.bodyScaleFactor = bodyScaleFactor;
            scaler.continuousScaling = continuousScaling;
        }

        scaler.foregroundCamera = foregroundCamera;
        //scaler.debugText = debugText;
        //scaler.Start();
    }

这里写图片描述




FR:海涛高软(QQ技术交流群:386476712)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值