コード例 #1
0
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        KNNRig knnRig = (KNNRig)target;

        if (GUILayout.Button("loadFromFile"))
        {
            knnRig.InitRig();
        }

        //knnRig.updateSkeleton();
    }
コード例 #2
0
ファイル: BVHLoader.cs プロジェクト: knielinc/vr_knn_baseline
    public void createKNNRig(string headBoneName, string rHandBoneName, string lHandBoneName, float slidingWindowSizeInMS, float slidingWindowOffsetInMS, float pollingRate, bool ignoreRotation, bool bothHandsInFeatureVec, string outputPath)
    {
        var lHandTreeNodes  = new List <int>();
        var lHandTreePoints = new List <float[]>();
        var rHandTreeNodes  = new List <int>();
        var rHandTreePoints = new List <float[]>();

        GameObject rootBoneObj = new GameObject();
        KNNBone    rootBone    = rootBoneObj.AddComponent <KNNBone>();

        Debug.Assert(files != null && files.Count > 0);
        loadFromFile(files[0]);
        setToFrame(0, true, true, true);

        rootBone.initKNNBone(root.transform);

        foreach (string file in files)
        {
            loadFromFile(file);
            FillKNNTrees(rootBone, ignoreRotation, bothHandsInFeatureVec, headBoneName, rHandBoneName, lHandBoneName, slidingWindowSizeInMS, slidingWindowOffsetInMS, pollingRate, lHandTreeNodes, rHandTreeNodes, lHandTreePoints, rHandTreePoints);
        }

        float slidingWindowSize = slidingWindowSizeInMS / 1000.0f;
        float targetFrameTime   = 1.0f / pollingRate;
        int   framesPerWindow   = (int)((slidingWindowSize) / targetFrameTime);
        int   featureVecLength  = 9 * framesPerWindow;

        var rHandTree = new KDTree <float, int>(featureVecLength, rHandTreePoints.ToArray(), rHandTreeNodes.ToArray(), Metrics.WeightedL2Norm);
        var lHandTree = new KDTree <float, int>(featureVecLength, lHandTreePoints.ToArray(), lHandTreeNodes.ToArray(), Metrics.WeightedL2Norm);

        GameObject  kNNSkeleton_     = new GameObject("KNN-Skeleton");
        KNNSkeleton finalKNNSkeleton = kNNSkeleton_.AddComponent <KNNSkeleton>();

        finalKNNSkeleton.SetKNNSkeleton(rootBone, ignoreRotation, lHandTree, rHandTree, featureVecLength);
        finalKNNSkeleton.Save(outputPath);
        DestroyImmediate(kNNSkeleton_);
        DestroyImmediate(rootBoneObj);

        GameObject kNNRig = new GameObject("KNN-Rig");

        KNNRig kNNRigComponent = kNNRig.AddComponent <KNNRig>();

        kNNRigComponent.skeletonPath = outputPath;
    }