public override void OnInspectorGUI() { DrawDefaultInspector(); KNNRig knnRig = (KNNRig)target; if (GUILayout.Button("loadFromFile")) { knnRig.InitRig(); } //knnRig.updateSkeleton(); }
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; }