public void Reset() { _leftUp.SetWeight(0); _leftDown.SetWeight(0); _rightUp.SetWeight(0); _rightDown.SetWeight(0); _leftUp = new BlendShapeTarget(); _leftDown = new BlendShapeTarget(); _rightUp = new BlendShapeTarget(); _rightDown = new BlendShapeTarget(); }
public virtual void ReloadBlendShapeTargets() { Mesh targetMesh = targetMeshRenderer.sharedMesh; int blendShapeCount = targetMesh.blendShapeCount; blendShapeTargets = new BlendShapeTarget[blendShapeCount]; for (int i = 0; i < blendShapeCount; i++) { BlendShapeTarget newTarget = ScriptableObject.CreateInstance(typeof(BlendShapeTarget)) as BlendShapeTarget; newTarget.init(targetMesh.GetBlendShapeName(i), i, targetMeshRenderer); blendShapeTargets[i] = newTarget; } }
//NOTE: こっちが最終的に生き残るよ public void RefreshTarget(VRMBlendShapeStore blendShapeStore) { Reset(); var items = blendShapeStore.GetBlendShapeStoreItems(); int goalCount = UseSeparatedTarget ? 4 : 2; int foundCount = 0; for (int i = 0; i < items.Length; i++) { var item = items[i]; if (item.name == LeftUpKey && !_leftUp.isValid) { _leftUp = new BlendShapeTarget(item); foundCount++; } else if (item.name == LeftDownKey && !_leftDown.isValid) { _leftDown = new BlendShapeTarget(item); foundCount++; } else if (UseSeparatedTarget && item.name == RightUpKey && !_rightUp.isValid) { _rightUp = new BlendShapeTarget(item); foundCount++; } else if (UseSeparatedTarget && item.name == RightDownKey && !_rightDown.isValid) { _rightDown = new BlendShapeTarget(item); foundCount++; } if (foundCount >= goalCount) { return; } } }