Пример #1
0
        public MaidTransforms(TBody body)
        {
            Body  = body.GetBone("Bip01");
            FootL = body.GetBone("Bip01 L Foot");
            FootR = body.GetBone("Bip01 R Foot");

            ToesL = new[]
            {
                CMT.SearchObjName(FootL, "Bip01 L Toe0"),
                CMT.SearchObjName(FootL, "Bip01 L Toe1"),
                CMT.SearchObjName(FootL, "Bip01 L Toe2"),
            };
            ToesR = new[]
            {
                CMT.SearchObjName(FootR, "Bip01 R Toe0"),
                CMT.SearchObjName(FootR, "Bip01 R Toe1"),
                CMT.SearchObjName(FootR, "Bip01 R Toe2"),
            };
        }
Пример #2
0
        void InitKinectObject(TBody maidBody, Vector3 startingPosition)
        {
            kinectPosition = new GameObject();
            kinectPosition.transform.position = startingPosition;

            var kinectCube = GameObject.CreatePrimitive(PrimitiveType.Cube);

            kinectCube.transform.SetParent(kinectPosition.transform);
            kinectCube.transform.localPosition = Vector3.zero;
            kinectCube.transform.localScale    = 0.1f * Vector3.one;

            foreach (var value in Enum.GetValues(typeof(BodyJointType)))
            {
                var o = new GameObject(); /*GameObject.CreatePrimitive(PrimitiveType.Sphere);*//*new GameObject($"KinectJoint_{value}");*/
                o.transform.SetParent(kinectPosition.transform);
                //o.transform.localScale = 0.01f * Vector3.one;
                o.transform.localPosition = 2f * Vector3.forward;
                var boneDraw = CreateBoneNode($"kinect_{value}");
                boneDraw.transform.SetParent(kinectPosition.transform);
                //boneDraw.transform.localPosition += Vector3.forward * 2f;
                bodyJoints[(BodyJointType)value]      = o.transform;
                bodyJointGizmos[(BodyJointType)value] = boneDraw.transform;
            }

            var gizmo = kinectPosition.AddComponent <GizmoRender>();

            gizmo.eAxis       = true;
            gizmo.eRotate     = true;
            gizmo.offsetScale = 0.5f;
            gizmo.Visible     = true;

            foreach (var jointType in maidBodyToKinectJointsDict)
            {
                maidJoints.Add(jointType.Value, maidBody.GetBone(jointType.Key));
            }
            bipJoint = maidBody.GetBone("Bip01");

            foreach (var keyValuePair in maidJoints)
            {
                Log($"{keyValuePair.Value.name}: Local pos: {keyValuePair.Value.localPosition}; Local rot: {keyValuePair.Value.localRotation}");
            }
        }
Пример #3
0
        void DrawBones()
        {
            boneObjects.Clear();
            maidTransforms.Clear();

            var maid = FindObjectOfType <Maid>();

            if (maid == null)
            {
                return;
            }

            maidBody = maid.body0;


            foreach (var boneName in boneNames)
            {
                var bone = maidBody.GetBone(boneName);
                if (bone == null)
                {
                    Error($"Bone {boneName} does not exist!");
                    continue;
                }

                var c = Random.ColorHSV();

                Log($"Creating node {boneName}");
                var go = CreateBoneNode(boneName);
                go.SetActive(true);
                /*GameObject.CreatePrimitive(PrimitiveType.Cube);*/
                //go.GetComponent<Renderer>().material = new Material(Shader.Find("Transparent/Diffuse")) {color = c};
                //go.transform.position = bone.position - 2.0f * Vector3.left;
                //go.transform.localRotation = Quaternion.identity;
                //go.transform.localScale = 0.05f * Vector3.one;
                //go.SetActive(true);

                maidTransforms.Add(bone.gameObject);
                boneObjects.Add(new KeyValuePair <string, GameObject>(boneName, go));
            }
        }