Как сделать так, чтобы несколько игровых объектов обменивались кусочками одного и того же материала?

9

Мой вопрос: есть ли способ, чтобы GameObjects совместно использовали кусочки одного и того же материала, не клона, а его расширения? Например, в этом случае девять игровых объектов, использующих один и тот же материал, увеличиваются до размеров девяти:

трава

И в случае, если я удаляю, например, один посередине, он будет содержать тот же материал, увеличенный с пустым пространством внутри:

Grass2

Для этой цели я использовал один материал на объект, но я намерен использовать его только для одной текстуры для нескольких объектов или, например, для нескольких текстур в разных частях одного и того же объекта. (Как кнопка рисования у нас в пользовательских Unity3D Terrains).

JamesB
источник

Ответы:

2

Вы рассматривали возможность использования шейдера Unity для создания собственного шейдера для материала? Вы можете достичь желаемого, используя положение в мировом пространстве для текстур / uvs. Я не очень хорош в объяснении этого и не очень хорош в шейдерах, но я сделал небольшой пример для вас, как шейдер воды, потому что мне было скучно, и я уже играл в своем проекте, посвященном экспериментам.

Это изображение показывает, что перекрывающиеся плоскости, по-видимому, используют один и тот же материал. пример материалов

Это пример, сделанный в шейдерграфе Пример шейдера

Краткий обзор шейдерных узлов из моего примера, как я их понимаю

  1. Эти узлы захватывают значения x и z в мировом пространстве и объединяют их в векторе 2
  2. Этот узел использует значения xz и смещает их на основе узлов в 3
  3. используя время и вектор 2, чтобы прокрутить смещение ультрафиолета. дает волновой эффект
  4. Умножение значения на основе значения обычной мозаики .
  5. Принимает данные УФ от 4 и карту нормалей
  6. Нормальная сила. меняет силу эффекта
  7. Принимает все данные от 1 до 6 и текстуру воды и поступает в альбедо в 8
  8. все узлы вводятся сюда для шейдера, чтобы изменить то, как каждое из этих свойств влияет на материал.

Если кто-то считает, что что-то, что я сказал или сделал, неверно или может быть улучшено, пожалуйста, не стесняйтесь поправлять меня. Я все еще учусь, и толчок в правильном направлении всегда приветствуется. Я загрузил пример сцены в Google Drive для вас возиться. не уверен, если атрибуция требуется, но используемый водный ресурс является бесплатным и от gametextures.com

faulknerj
источник
0

Вы можете создать атлас спрайтов из одной текстуры, создать дочерний объект для вашей плоскости или любой другой фигуры, которую вы используете, перетащить в созданные вырезы спрайта, повернуть и поместить дочернего объекта в игровой объект плоскости, как вам нравится, и вуаля, посмотрите на картинку ниже, чтобы понять, что я имею в виду,

спрайт атласы

Это может быть утомительной работой, но кажется, что это решение соответствует вашим желаниям.

Воон Ван Юстас
источник
0

Другой вариант - использовать объект «Проектор» в папке стандартных ресурсов Unity. Он не очень эффективен, но его действительно легко настроить. Так что для простых случаев, это может быть именно то, что вы ищете. Но, как я уже сказал, это оказывает довольно значительное влияние на производительность, особенно если вы проектируете большие текстуры.

Адам Б
источник