Растяжение декалей Unity

Рейтинг: 0Ответов: 0Опубликовано: 15.03.2023

Есть декали, свои и Decal Projector от юнитеков с URP. На угловатых поверхностях декали сильно растягиваются и наши и юнитековские

Примерно так

Лечится это дело поворотами, проблема динамически задать нужный. Пробовал брать нормаль и задавать по тому же направлению, и пробовал брать все нормали, которых касается объект, и находить средний вектор из них (Работает крайне медленно)

private GameObject CreateSticker(Transform parentSticker, Vector3 positionSticker, Vector3 directionSticker)
    {
        _lastSticker = Instantiate(_sticker);

        _lastSticker.transform.position = positionSticker;
        _lastSticker.transform.parent = parentSticker;
        //_lastSticker.transform.localRotation = Quaternion.FromToRotation(Vector3.forward, directionSticker); по 1 нормали
        
        _lastSticker.transform.localRotation = Quaternion.Euler(CheckMiddleAngles(_stickerContacts.pointNormals)); // из множества нормалей

        return _lastSticker;
    }

    private Vector3 CheckMiddleAngles(List<Vector3> normalPoints) //средний вектор из n векторов
    {
        Vector3 middleAngle = Vector3.zero;

        for(int i = 0; i < normalPoints.Count; i++)
            middleAngle += normalPoints[i];
                    
        middleAngle /= normalPoints.Count;

        return middleAngle;
    }

Есть ли хорошее и производительное решение для такой проблемы? В какую сторону копать?

Ответы

Ответов пока нет.