Как можно реализовать такую 3Д анимацию?
snippet
Держи, сделал небольшой набросок. 
а если они касаются друг друга, они приобретают цвет другого элемента
Эту часть уже лень делать. Хотя это не сложно, нужно только добавить еще две таких же кляксы и посчитать расстояние между их центрами, что бы понять пересекаются ли они и нужно ли у них менять цвет.
Это, скорее, плоские фигуры. Массивы точек, расположение и искажение которых задаётся мат. формулами.
Тут нет загораживания одной «сферой» другой: все точки видны, просто поверх друг друга рисуются. Нет «обратной стороны» Луны.

Начните с поиска подходящей визуализации одной «сферы». 

В недеформированном виде, это, наверное, просто круг, заполненный точками «по мелким клеточкам».
Точки, расстояние которых до центра не превышает порог R.

Искажение такое плавное можно получить, используя шум Перлина. Он даст плавные псевдослучайные неповторяющиеся «волны». Для каждой точки сетки считать значение двумерного шума и сдвигать точку на эти значения (x, y). Получатся волны на тряпочке )