Нужно, чтобы текстура спроецировалась на несколько фигур рядом с собой и так и осталось.
Лучший пример - лайтмапинг или запечение теней, т.е. тени проецируются на меш, и он хранит изображение об этом. Нужно так же, но не со светом, а с текстурой.
В юнити есть Projector, который делает почти то что надо.
Как видно, в случае использования Unity Projector он просто добавляет материал к объекту - и на каждом объекте, куда попадает этот Projector, показывается ВСЯ текстура.
Но надо чтобы проекция была как на настоящем проекторе - чтобы на каждой фигуре была своя часть картинки, а не целиком.
Вот так надо
Я пробовал разделять текстуру на более мелкие текстуры и прикреплять, создавать из них SpriteRenderer и прикреплять это к объектам
Rect rect = new Rect(0, 0, w_cell, h_cell);
rect.center = new Vector2((w_cell * x + w_cell/2) + xAdd, (h_cell * y + h_cell/2) + yAdd);
Vector3 position = Camera.main.ScreenToWorldPoint(rect.center);
Texture2D tex = new Texture2D(w_cell, h_cell, TextureFormat.ARGB32, false);
tex.ReadPixels(rect, 0, 0);
tex.Apply(); // Мелкую текстуру создали, теперь просто сохраняем их и прикрепляем, не пишу лишнего кода, чтобы не расширять вопрос.
Но у этого способа есть ограничение, текстуру можно создать только прямоугольной. А если я хочу например поле из шестиугольников, как соты, и спроецировать текстуру на них - то этот способ не подходит.
Собственно, вопрос. Как разбить текстуру с прозрачностью на несколько 3д объектов, чтобы она как бы наложилась на них, и сохранить это? Может это делается как то через шейдер, а может встроенными средствами юнити?
Подход 1 - Создать правильную развертку под шестиугольник в 3д редакторе, а в фотошопе сделать скрипт который разделяет изображение на шестиугольники и сохраняет их. Но так получится много материалов.
Подход 2 - создать в 3д редакторе сетку из шестиугольников, разделить их на отдельные шестиугольники, затекстурить как нужно целой текстурой. Импортировать в юнити как обьект состоящий из кучи побьектов.
Подход 3 - математически расчитать масштаб текстуры и тайлинг. И соответственно создать много материалов у каждого из которых будет задан масштаб и оффсет. Само собою у шестигранников должна быть адекватная развертка.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как поймать момент скролла в контроле Combo Box Edit в WPF C# и сделать ленивую подгрузку из запроса, можно на примере? Данные приходят из API
Использую процедуру sp_whoisactive для сбора информации о сервере sqlИспользую DbQuery WhoIsActive { get; set; } в контексте
Суть проблемы вот в чем: Есть прогрессбар, которому нужно скруглить углы (BorderRadius 15)Впринципе я то решение нашел, но оно не подходит т
Есть форма, которая представляет собой карту мира, в левом нижнем углу есть groupbox с информацией о странахЕсть функция масштабирования, при...