Растяжение декалей Unity
Есть декали, свои и 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;
}
Есть ли хорошее и производительное решение для такой проблемы? В какую сторону копать?
Источник: Stack Overflow на русском