It’s true that using SkinnedMeshRenderer.BakeMesh() on every frame is not recommended due to performance considerations. However, an alternative approach could be to use a shader to get the transformed vertex positions.
A potential method you could explore is as follows:
Create a copy of the skinned mesh.
Use a compute shader to update this copy every frame.
Use a material with the compute shader to render the copy.
This method uses the power of the GPU for the calculations, which should offer better performance than executing the calculations on the CPU every frame. However, the specific implementation will depend on the specifics of your project and your level of comfort with shaders.