public override void ControllerStart() { base.ControllerStart(); // Set default configuration if needed if (model.configuration == null) { model.configuration = BasicHelpers.FindScriptableObject <GestureDetectionConfiguration>(HPTK.core.defaultConfAssets); } if (model.configuration == null) { Debug.LogError("Any GestureDetectionConfiguration found in GestureDetectionModel or HPTK.core.defaultConfAssets. The module cannot continue"); gameObject.SetActive(false); return; } // Init gestures InitHandGesture(model.grasp); InitHandGesture(model.fist); model.extra.ForEach(g => InitHandGesture(g)); InitFingerGestureGroup(model.thumb, model.hand.thumb); InitFingerGestureGroup(model.index, model.hand.index); InitFingerGestureGroup(model.middle, model.hand.middle); InitFingerGestureGroup(model.ring, model.hand.ring); InitFingerGestureGroup(model.pinky, model.hand.pinky); }
public override sealed void ControllerStart() { base.ControllerStart(); // Set default configuration if needed if (model.configuration == null) { model.configuration = BasicHelpers.FindScriptableObject <PuppetConfiguration>(HPTK.core.defaultConfAssets); } if (model.configuration == null) { Debug.LogError("Any PuppetConfiguration found in PuppetModel or HPTK.core.defaultConfAssets. The module cannot continue"); return; } // Start parts and bones recursively PartStart(model.part); // Start bones model.bones.ForEach(b => BoneStart(b, model.part.root)); model.bones.ForEach(b => LateBoneStart(b)); model.view.onPhysicsReady.Invoke(); model.ready = true; }
private void Start() { model.proxyHand.relatedHandlers.Add(this); slaveBones = AvatarHelpers.GetSlaveHandBones(model.proxyHand.slave); // Set default configuration if needed if (model.asset == null) { model.asset = BasicHelpers.FindScriptableObject <HandPhysicsConfigurationAsset>(core.model.defaultConfAssets); } // Make configuration editable model.configuration = new HandPhysicsConfiguration(model.asset.configuration); for (int i = 0; i < slaveBones.Length; i++) { if (slaveBones[i].colliderRef) { // Ignore palm-finger collisions Physics.IgnoreCollision((model.proxyHand.slave.wrist as SlaveBoneModel).colliderRef, slaveBones[i].colliderRef, true); } if (slaveBones[i].jointRef) { // Get initial connected body local rotations and conn anchors if (slaveBones[i].jointRef.connectedBody != null) { slaveBones[i].initialConnectedBodyLocalRotation = slaveBones[i].jointRef.connectedBody.transform.localRotation; slaveBones[i].initialConnectedAnchor = slaveBones[i].jointRef.connectedAnchor; slaveBones[i].jointRef.autoConfigureConnectedAnchor = false; } else { slaveBones[i].initialConnectedBodyLocalRotation = slaveBones[i].jointRef.transform.rotation; } // Set initial joint configurations if (slaveBones[i] == model.proxyHand.slave.wrist) { PhysHelpers.SetSlaveBoneConfiguration(slaveBones[i].jointRef, model.configuration.wrist); } else if (slaveBones[i].isSpecial) { PhysHelpers.SetSlaveBoneConfiguration(slaveBones[i].jointRef, model.configuration.specials); } else { PhysHelpers.SetSlaveBoneConfiguration(slaveBones[i].jointRef, model.configuration.fingers); } // Initial built-in velocity clamps slaveBones[i].rigidbodyRef.maxDepenetrationVelocity = model.configuration.fingers.maxLinearVelocity; slaveBones[i].rigidbodyRef.maxAngularVelocity = model.configuration.fingers.maxAngularVelocity; } } }
private void Start() { // Module registry model.proxyHand.relatedHandlers.Add(this); // Set default configuration if needed if (model.configuration == null) { model.configuration = BasicHelpers.FindScriptableObject <InputConfiguration>(core.model.defaultConfAssets); } conf = model.configuration; // Input data for finger tips can be ignored as it will depend on the master hand model // This array MUST match model.inputDataProvider.bones[] model.bonesToUpdate = new MasterBoneModel[19] { model.wrist, model.forearm, model.thumb0, model.thumb1, model.thumb2, model.thumb3, model.index1, model.index2, model.index3, model.middle1, model.middle2, model.middle3, model.ring1, model.ring2, model.ring3, model.pinky0, model.pinky1, model.pinky2, model.pinky3 }; if (model.inputDataProvider) { model.inputDataProvider.InitData(); initialized = true; } else { Debug.LogError("InputModel.InputDataProvider is required!"); } // Initialize recording arrays model.boneRecords = new AbstractTsf[model.bonesToUpdate.Length][]; for (int i = 0; i < model.boneRecords.Length; i++) { model.boneRecords[i] = new AbstractTsf[model.configuration.windowSize]; for (int j = 0; j < model.boneRecords[i].Length; j++) { // Initial state of records is the same as in IDP model.boneRecords[i][j] = new AbstractTsf(model.inputDataProvider.bones[i]); } } // Get weights for noise reduction (WMA) model.wmaWeights = GetLinearWeights(model.configuration.windowSize); }
public override void ControllerStart() { base.ControllerStart(); if (model.autoRigMappingOnStart) { AutomaticRigMapping(); } // Set default configuration if needed if (model.configuration == null) { model.configuration = BasicHelpers.FindScriptableObject <InputConfiguration>(HPTK.core.defaultConfAssets); } if (model.configuration == null) { Debug.LogError("Any InputConfiguration found in InputModel or HPTK.core.defaultConfAssets. The module cannot continue"); gameObject.SetActive(false); return; } // Input data for finger tips can be ignored as it will depend on the master hand model // This array MUST match model.inputDataProvider.bones[] model.bonesToUpdate = new BoneModel[19] { model.rigMap.wrist, model.rigMap.forearm, model.rigMap.thumb0, model.rigMap.thumb1, model.rigMap.thumb2, model.rigMap.thumb3, model.rigMap.index1, model.rigMap.index2, model.rigMap.index3, model.rigMap.middle1, model.rigMap.middle2, model.rigMap.middle3, model.rigMap.ring1, model.rigMap.ring2, model.rigMap.ring3, model.rigMap.pinky0, model.rigMap.pinky1, model.rigMap.pinky2, model.rigMap.pinky3 }; if (!model.inputDataProvider) { model.inputDataProvider = HPTK.core.GetDefaultIdp(model.hand.side); } if (model.inputDataProvider) // Force/Trigger set function from property { model.view.inputDataProvider = model.inputDataProvider; } else { Debug.LogWarning("InputModel.InputDataProvider is not assigned on Start"); } // Get weights for noise reduction (WMA) model.wmaWeights = InputHelpers.GetLinearWeights(model.configuration.windowSize); // Conf shortcut conf = model.configuration; }