Пример #1
0
 public static BlendShapeChannel[] GenerateBlendChannels(BlendShape[] shapes)
 {
     BlendShapeChannel[] channels = new BlendShapeChannel[shapes.Length];
     for (int i = 0; i < shapes.Length; i++)
     {
         channels[i] = new BlendShapeChannel(shapes[i].Name, i, 1);
     }
     return(channels);
 }
Пример #2
0
        // Select the BlendShape we want and modify his weight according to the slider value
        public void SetBlendShape(string blendShapeName, float blendShapeWeight)
        {
            #if UNITY_DOTSRUNTIME
            EntityCommandBuffer ecb = new EntityCommandBuffer(Allocator.Temp);

            Entities.ForEach((Entity entity, DynamicBuffer <BlendShapeWeight> smrBlendShapeWeightBuffer, ref SkinnedMeshRenderer smr, ref Character character) =>
            {
                SetBlendShapeWeight setWeight = new SetBlendShapeWeight();

                setWeight.NameHash       = BlendShapeChannel.GetNameHash(blendShapeName);
                setWeight.ModifiedWeight = blendShapeWeight;
                DynamicBuffer <SetBlendShapeWeight> setWeightsBuffer = ecb.AddBuffer <SetBlendShapeWeight>(entity);
                setWeightsBuffer.Add(setWeight);
            }).WithoutBurst().Run();

            ecb.Playback(EntityManager);
            ecb.Dispose();
            #endif
        }
Пример #3
0
        private static void ConvertBlendShapeData(GameObjectConversionSystem gsys,
                                                  UnityEngine.SkinnedMeshRenderer uSkinnedMeshRenderer, Entity meshRendererEntity)
        {
            Mesh uMesh = uSkinnedMeshRenderer.sharedMesh;

            if (uMesh.blendShapeCount <= 0)
            {
                return;
            }
            DynamicBuffer <BlendShapeWeight> blendShapeWeightsBuffer =
                gsys.DstEntityManager.AddBuffer <BlendShapeWeight>(meshRendererEntity);

            for (int shapeIndex = 0; shapeIndex < uMesh.blendShapeCount; shapeIndex++)
            {
                string blendShapeName = uMesh.GetBlendShapeName(shapeIndex);
                float  curWeight      = uSkinnedMeshRenderer.GetBlendShapeWeight(shapeIndex);

                BlendShapeWeight blendShapeWeight = new BlendShapeWeight();
                blendShapeWeight.NameHash  = BlendShapeChannel.GetNameHash(blendShapeName);
                blendShapeWeight.CurWeight = curWeight;
                blendShapeWeightsBuffer.Add(blendShapeWeight);
            }
        }