Ответы пользователя по тегу Mesh
  • Моделирование в Unity3D, "лепка" объектов на рамках класса Mesh!?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Стандартных средств для моделирования нет, нужно самому всё писать или брать плагин.

    Посмотреть исходники можно с помощью декомпилятора, берите 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;
    }

    Насколько я понимаю, в террейне не модифицируются вершины напрямую, он использует текстурные карты, а полученные координаты используются для рисования по карте высот, из которой потом строится меш.

    Короче говоря, есть несколько вариантов реализации. Для поиска точки приложения можете повесить мешколлайдер на свою геометрию и рейкастить по нему. Либо можете рейкастить по геометрии с помощью математики, в случае со сферой можно много где сэкономить. Для изменения меша вам нужна карта высот, по которой вы с нуля создаёте меш и не беспокоитесь о геометрии. Как вариант, можете написать структуру данных, которая сумеет находить соседние вершины, тогда сможете работать с существующим мешом. В принципе, одно другому не мешает.
    Ответ написан