Правильное моделирование/текстурирование ландшафтов

Список разделов Геймдев в Blender Общие вопросы по игровой тематике

Модератор: exooman

  • 1

Сообщение #1 maleficmax » 17.07.2014, 10:31

Собствено, сабж. Есть некий ландшафт, не модульный. Ландшафт имеет несколько типов поверхностей, плавно переходящих одна в другую. Запекание мегатекстуры - не вариант, ландшафт бостаточно большой.
Я знаю, что есть разные способы. О паре догадываюсь.
Поделитесь своими знаниями в данной области, плиз.
Не стоит путать небо со звездами, отраженными ночью в поверхности пруда. А.Сапковский
Моя свалка | Уроки
maleficmax M
добрый админ
Аватара
Откуда: Україна, Кременчук
Сообщения: 4371


  • 1

Сообщение #2 Yani-X » 17.07.2014, 10:52

Через вертекс пейнт, если сетка достаточно плотная. Или, в ином случае, через маску текстурную (возможно даже с несколькими индекс колор), по принципу стенсил текстуры.
В обоих случаях можно намешать достаточно много тайловых текстур.
Это для рилтайма?
Yani-X M
Аватара
Откуда: Москва
Сообщения: 124

Сообщение #3 maleficmax » 17.07.2014, 10:59

Яни! Привет)
Это для Юнити. Дезмач-арена на открытом пространстве.
Не стоит путать небо со звездами, отраженными ночью в поверхности пруда. А.Сапковский
Моя свалка | Уроки
maleficmax M
добрый админ
Аватара
Откуда: Україна, Кременчук
Сообщения: 4371


  • 1

Сообщение #4 exooman » 17.07.2014, 11:13

Берешь из тайлящихся текстур теми же стенсил-картами вырисовываешь дороги/тропинки/полянки. В современных движках для смешивания текстур используют спец-шейдер, он делает переход от текстуры к текстуре более качественным чем с помощью обычного "трафарета". Далее идет самая хитрость - берем получившийся ландшафт и запекаем всё нарисованное(необязательно в мегатекстуру, разрешение может быть таким же как и у трафоретов - к примеру 2048х2048). Теперь эту текстуру открываем в графическом редакторе и дорабатываем, насыщая цветами то тут то там до тех пор, пока она не примет достойный вид для финального ландшафта. Эту "размалёваную" текстуру мы накладываем сверху тайлов и трафоретов, придавая всему ландшафту более насыщенный и красивый вид, сводя заметность тайлов на нет. Далее прикручиваем карту теней/амбиента, добавляем декали и любуемся результатом. По итогу у тебя должен получиться бутерброд содержащий в большом разрешении только трафареты, стандартные карты теней/амбиента/освещения и эту самую карту общего вида ландшафта.
exooman
Сообщения: 1901


Сообщение #5 maleficmax » 17.07.2014, 11:56

Тоесть по факту тот способ, что в уроке по ссылке?
Не стоит путать небо со звездами, отраженными ночью в поверхности пруда. А.Сапковский
Моя свалка | Уроки
maleficmax M
добрый админ
Аватара
Откуда: Україна, Кременчук
Сообщения: 4371


  • 2

Сообщение #6 kiber01 » 17.07.2014, 12:59

maleficmax писал(а):Тоесть по факту тот способ, что в уроке по ссылке?
А разве используют какой-то другой, лучший способ?
Смотрим канал: https://www.youtube.com/channel/UCUJfF9K__uBpgkaYbSlUROA
Парень работает с игровыми окружениями. Под некоторыми видео есть ссылки на его ВИП, на самом канале есть видео-уроки, читай, смотри. Может найдешь что-то полезное.
« Вдохновение... Это когда что-то сонное… ленивое… очень тяжёлое и неподъёмное как бегемот… становится лёгким как облако… И летит-летииит… »
(c) Смешарики.
kiber01 M
Аватара
Сообщения: 1124

Сообщение #7 maleficmax » 17.07.2014, 13:21

kiber01, просто у того чувака выходит одна мегатексутра. Или я что-то пропустил?.. Пересмотреть чтоли.
Спасибо за ссылку, сейчас посмотрю.
Не стоит путать небо со звездами, отраженными ночью в поверхности пруда. А.Сапковский
Моя свалка | Уроки
maleficmax M
добрый админ
Аватара
Откуда: Україна, Кременчук
Сообщения: 4371


Сообщение #8 kiber01 » 17.07.2014, 13:29

maleficmax писал(а):kiber01, просто у того чувака выходит одна мегатексутра.
Именно. А что мешает разбить ландшафт на Лоды?
« Вдохновение... Это когда что-то сонное… ленивое… очень тяжёлое и неподъёмное как бегемот… становится лёгким как облако… И летит-летииит… »
(c) Смешарики.
kiber01 M
Аватара
Сообщения: 1124

Сообщение #9 maleficmax » 17.07.2014, 13:43

Он будет в итоге разбит на них. Вопрос в другом. Или же я не совсем понимаю то, что мне говорят)
На лоды разбивается всё после того, как всё затекстурено? Или каждый лод текстурить отдельно?
Не стоит путать небо со звездами, отраженными ночью в поверхности пруда. А.Сапковский
Моя свалка | Уроки
maleficmax M
добрый админ
Аватара
Откуда: Україна, Кременчук
Сообщения: 4371


Сообщение #10 exooman » 17.07.2014, 14:44

просто у того чувака выходит одна мегатексутра

я не про мегатекстуру говорил, а дополнительную карту для цветового разнообразия тайлищихся текстур. Разрешение у нее может быть стандартное с другими картами. То есть не нужно делать именно мегатекстуру 10000х10000. Сделал трафаретами первоначальный вид ландшафта, чтобы сориентироваться с последующим изготовлением этой карты. Делаешь, для примера, нечто вроде этого
Изображение

накладываешь это поверх тайлов и в итоге выходит иллюзия их разнообразности за счет того, что на карте поляна уже не монотонного цвета преобладающей текстуры, а нужная тебе гамма созданных на карте оттенков.
exooman
Сообщения: 1901


Сообщение #11 maleficmax » 17.07.2014, 15:22

Это я понял.
Видимо я не совсем корректно задал вопрос, я постараюсь уточнить.
К примеру есть такой фрагмент (не обращайте внимания на линии от Grease Pencil):
Спойлер
Изображение
На следующем выделено три блока с разными текстурами (в будущем; сейчас текстурка для наглядности). Поверхость вверху, на обрыве, внизу
Спойлер
Изображение
Как сделать плавный переход между тексутурами? (о встроенном в юнити тирейне речь не идет совершено)
Юнити умеет несколько разверток на объект? Где в одной будут тайлиться текстуры, а другая будет содержать маску (и по ней же будет наложена та текстура, о которой ты говоришь)?
Не стоит путать небо со звездами, отраженными ночью в поверхности пруда. А.Сапковский
Моя свалка | Уроки
maleficmax M
добрый админ
Аватара
Откуда: Україна, Кременчук
Сообщения: 4371


  • 1

Сообщение #12 exooman » 17.07.2014, 16:17

Юнити умеет несколько разверток на объект? Где в одной будут тайлиться текстуры, а другая будет содержать маску (и по ней же будет наложена та текстура, о которой ты говоришь)?

да куда он денется?

Как сделать плавный переход между тексутурами?

Так же, стенсил-картами. Только в юнити их включаешь как карту прозрачности, альфа-канала. Не знаю как там в новых версиях, но до 3.0 было так.
exooman
Сообщения: 1901


Сообщение #13 maleficmax » 17.07.2014, 17:08

exooman писал(а):Только в юнити их включаешь как карту прозрачности, альфа-канала.
Хм, тоесть альфа к конкретной текстуре может лежать по другой развертке?..

Добавлено спустя 2 минуты 7 секунд:
Собсно вот что ваяется мною, начало буквально. Опять же простите за гризпенсил
Спойлер
phpBB [media]
Не стоит путать небо со звездами, отраженными ночью в поверхности пруда. А.Сапковский
Моя свалка | Уроки
maleficmax M
добрый админ
Аватара
Откуда: Україна, Кременчук
Сообщения: 4371


Сообщение #14 exooman » 17.07.2014, 17:16

Хм, тоесть альфа к конкретной текстуре может лежать по другой развертке?..

там типа как в блендере просто новый материал создается - у каждого материала своя развертка.
exooman
Сообщения: 1901


  • 1

Сообщение #15 ExeQt0r » 17.07.2014, 18:03

Извиняюсь, лень все читать, То что я видел в одной игре, на стыках разных текстур используется затайленая по одной стороне текстура стыка.
Както так
Изображение
ExeQt0r
Аватара
Откуда: 42RUS
Сообщения: 481

Сообщение #16 maleficmax » 17.07.2014, 18:47

ExeQt0r, это самая жесть, я изначально так и ориентировался, но решил, что живу в 21-м веке))
Не стоит путать небо со звездами, отраженными ночью в поверхности пруда. А.Сапковский
Моя свалка | Уроки
maleficmax M
добрый админ
Аватара
Откуда: Україна, Кременчук
Сообщения: 4371


Сообщение #17 engine9 » 18.07.2014, 00:55

А почему жесть? Нормально же выглядит.
engine9 M
Аватара
Откуда: Архангельск
Сообщения: 695

Сообщение #18 WorldLand » 19.07.2014, 21:09

Тоже мучаюсь с этой проблемой. Пытаюсь разобраться с шейдерами. Пока такой результат:

Изображение
Здесь 5 текстур, из них:
    3 тайловых текстуры в png с альфа-каналом, в альфа-канале карта глубины текстур.
    трехцветная маска (RGB)
    текстура для разнообразия тайла (по совету exooman'а)

Ещё нужны карты номалей и спекулярки, но с этим у меня проблемы пока.

Вот шейдер (алгоритм взят отсюда http://habrahabr.ru/post/180743/):
Спойлер
Код: Выделить всё
Shader "Landscape" {
   Properties {
      _Color1 ("Color Tex1", Color) = (1,1,1,1)
      _Tex1 ("Tile 1", 2D) = "white" {}
      _Color2 ("Color Tex2", Color) = (1,1,1,1)
      _Tex2 ("Tile 2", 2D) = "white" {}
      _Color3 ("Color Tex3", Color) = (1,1,1,1)
      _Tex3 ("Tile 3", 2D) = "white" {}
      _Mask ("Mask", 2D) = "white" {}
      _Color4 ("Color Big Texture", Color) = (1,1,1,1)
      _BTex ("Big Texture", 2D) = "white" {}
   }

   SubShader {
      Tags { "RenderType"="Opaque" }
      LOD 200
      CGPROGRAM
      #pragma surface surf Lambert
      
      sampler2D _Tex1;
      sampler2D _Tex2;
      sampler2D _Tex3;
      sampler2D _Mask;
      sampler2D _BTex;
      float3 _Color1;
      float3 _Color2;
      float3 _Color3;
      float3 _Color4;
      struct Input {
         float2 uv_Tex1;
         float2 uv_Tex2;
         float2 uv_Tex3;
         float2 uv_Mask;
         float2 uv_BTex;
      };

      float3 blend(float4 tex1, float a1, float4 tex2, float a2, float4 tex3, float a3)
      {
         float ma = max(tex1.a + a1, tex2.a + a2);
         ma = max(ma, tex3.a + a3);
         ma = ma - 0.2;
         float b1 = max(tex1.a + a1 - ma, 0);
         float b2 = max(tex2.a + a2 - ma, 0);
         float b3 = max(tex3.a + a3 - ma, 0);
         return (tex1.rgb * b1 + tex2.rgb * b2 + tex3.rgb * b3) / (b1 + b2 +b3);
      }

      void surf (Input IN, inout SurfaceOutput o) {
         half4 tex1 = tex2D(_Tex1, IN.uv_Tex1);
         half4 tex2 = tex2D(_Tex2, IN.uv_Tex2);
         half4 tex3 = tex2D(_Tex3, IN.uv_Tex3);
         half4 Mask = tex2D(_Mask, IN.uv_Mask);
         half3 BTex = tex2D(_BTex, IN.uv_BTex);
         tex1.rgb = tex1.rgb * _Color1;
         tex2.rgb = tex2.rgb * _Color2;
         tex3.rgb = tex3.rgb * _Color3;
         float a1 = Mask.r;
         float a2 = Mask.g;
         float a3 = Mask.b;
         o.Albedo = blend(tex1, a1, tex2, a2, tex3, a3);
         o.Albedo = o.Albedo * (BTex + _Color4);
      }
      ENDCG
   }
   FallBack "Diffuse"
}

Как в Unity использовать больше двух развёрток я так и не понял (в шейдере одна).
WorldLand M
Аватара
Откуда: Новосибирск
Сообщения: 144

Сообщение #19 maleficmax » 19.07.2014, 21:31

WorldLand писал(а):больше двух развёрток
А никак - не поддерживает он. Можно еще цвета вертексов использовать как альфу дополнительно, но развертки - нет. Только две.
Не стоит путать небо со звездами, отраженными ночью в поверхности пруда. А.Сапковский
Моя свалка | Уроки
maleficmax M
добрый админ
Аватара
Откуда: Україна, Кременчук
Сообщения: 4371


Сообщение #20 Characterhero » 20.02.2015, 16:35

maleficmax, раз, два, три
Intel Core 2 Duo CPU E5200 2.50GHz | 5GB RAM | NVIDIA GeForce 9800GT
i3-7100 3,9 GHz | 8Gb RAM DDR4 2133 mHz | GTX 1050 2Gb
Characterhero M
Аватара
Сообщения: 1147


След.

Вернуться в Общие вопросы по игровой тематике

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость