Стандартных средств для моделирования нет, нужно самому всё писать или брать плагин.
Посмотреть исходники можно с помощью декомпилятора, берите
dotPeek или
.NET Reflector и вперёд. Всё посмотреть не получится, Terrain и TerrainData написаны на сях, и их исходники можно достать только у разработчиков, но вот TerrainInspector и HeightmapPainter можно, там используются рейкасты по колладеру террэйна:
public bool Raycast(out Vector2 uv, out Vector3 pos)
{
RaycastHit hit;
Ray ray = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition);
if (this.m_Terrain.GetComponent<Collider>().Raycast(ray, out hit, float.PositiveInfinity))
{
uv = hit.textureCoord;
pos = hit.point;
return true;
}
uv = Vector2.zero;
pos = Vector3.zero;
return false;
}
Насколько я понимаю, в террейне не модифицируются вершины напрямую, он использует текстурные карты, а полученные координаты используются для рисования по карте высот, из которой потом строится меш.
Короче говоря, есть несколько вариантов реализации. Для поиска точки приложения можете повесить мешколлайдер на свою геометрию и рейкастить по нему. Либо можете рейкастить по геометрии с помощью математики, в случае со сферой можно много где сэкономить. Для изменения меша вам нужна карта высот, по которой вы с нуля создаёте меш и не беспокоитесь о геометрии. Как вариант, можете написать структуру данных, которая сумеет находить соседние вершины, тогда сможете работать с существующим мешом. В принципе, одно другому не мешает.