コード例 #1
0
    //===============================================
    // helper function to map an actor to a skeleton
    //===============================================
    private void ConvertActor(CapturyActor actor, ref CapturySkeleton skel)
    {
        if (skel == null)
        {
            Debug.Log("Null skeleton reference");
            return;
        }

        // copy data over
        skel.name = System.Text.Encoding.UTF8.GetString(actor.name);
        skel.id   = actor.id;

        // create joints
        int szStruct = Marshal.SizeOf(typeof(CapturyJoint));

        skel.joints = new CapturySkeletonJoint[actor.numJoints];
        for (uint i = 0; i < actor.numJoints; i++)
        {
            // marshall the joints into a new joint struct
            CapturyJoint joint = new CapturyJoint();
            joint = (CapturyJoint)Marshal.PtrToStructure(new IntPtr(actor.joints.ToInt64() + (szStruct * i)), typeof(CapturyJoint));

            skel.joints[i]      = new CapturySkeletonJoint();
            skel.joints[i].name = System.Text.Encoding.ASCII.GetString(joint.name);
            int jpos = skel.joints[i].name.IndexOf("\0");
            skel.joints[i].name = skel.joints[i].name.Substring(0, jpos);
            skel.joints[i].offset.Set(joint.ox, joint.oy, joint.oz);
            skel.joints[i].orientation.Set(joint.rx, joint.ry, joint.rz);

            //Debug.Log ("Got joint " + skel.joints[i].name + " at " + joint.ox + joint.oy + joint.oz);
        }
    }
コード例 #2
0
    //===============================================
    // helper function to map an actor to a skeleton
    //===============================================
    private void ConvertActor(ref CapturySkeleton skel)
    {
        if (skel == null)
        {
            Debug.Log("Null skeleton reference");
            return;
        }

        // copy data over
        skel.name = "membran Actor";
        skel.id   = actorID;

        // create joints
        int szStruct = Marshal.SizeOf(typeof(CapturyJoint));

        skel.joints = new CapturySkeletonJoint[actorNumJoints];
        for (uint i = 0; i < actorNumJoints; i++)
        {
            // marshall the joints into a new joint struct
            CapturyJoint joint = new CapturyJoint();
            //joint = (CapturyJoint)Marshal.PtrToStructure(new IntPtr(sizeof(int) + (szStruct * i)), typeof(CapturyJoint));

            skel.joints[i] = new CapturySkeletonJoint();
            //skel.joints[i].name = "Hips";//System.Text.Encoding.ASCII.GetString(joint.name);
        }
        skel.joints[0].name = "Hips";
        skel.joints[1].name = "Spine";
        skel.joints[2].name = "Spine1";
        skel.joints[3].name = "Spine2";
        skel.joints[4].name = "Spine3";
        skel.joints[5].name = "Spine4";
        skel.joints[6].name = "Neck";
        skel.joints[7].name = "Head";

        skel.joints[8].name  = "HeadEE";
        skel.joints[9].name  = "LeftShoulder";
        skel.joints[10].name = "LeftArm";
        skel.joints[11].name = "LeftForeArm";
        skel.joints[12].name = "LeftHand";
        skel.joints[13].name = "LeftHandEE";
        skel.joints[14].name = "RightShoulder";
        skel.joints[15].name = "RightArm";

        skel.joints[16].name = "RightForeArm";
        skel.joints[17].name = "RightHand";
        skel.joints[18].name = "RightHandEE";
        skel.joints[19].name = "LeftUpLeg";
        skel.joints[20].name = "LeftLeg";
        skel.joints[21].name = "LeftFoot";
        skel.joints[22].name = "LeftToeBase";
        skel.joints[23].name = "LeftFootEE";

        skel.joints[24].name = "RightUpLeg";
        skel.joints[25].name = "RightLeg";
        skel.joints[26].name = "RightFoot";
        skel.joints[27].name = "RightToeBase";
        skel.joints[28].name = "RightFootEE";
    }