Четверг, 25 Апреля 2024, 02:51

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Шейдеры для облаков
Шейдеры для облаков
robertonoДата: Четверг, 01 Августа 2013, 00:03 | Сообщение # 1
Чокнутый Кот
Сейчас нет на сайте
Всем привет. Вот уже как пару недель делаю свою систему облаков. Пробовал с партиклами, с 2D текстурами летающими по небу)) Всё это очень медленно и на горизонте облаков нету. И тут я придумал сделать вокруг мира огромейшую сферу, убрать коллайдер и поставить на него текстуру облаков. Далее уже скриптами я смогу плавно менять на другие облака, цвет и т.д. Это уже другая история.
У меня возникла с этим всем проблема.
Ну во первых из шейдеров предложенных юнити я не смог найти ничего достойного. Большинство шейдеров , текстуры на шейдере не видно изнутри сферы.
Т.е. отображается только с внешней стороны. Отсюда вопрос, если писать свой шейдер я могу сделать что бы текстура была видна с одной стороны, но только изнутри сферы? Далее. Мне нужна поддержка прозрачности в текстурах. Я присмотрел один шейдер, Particles / Additive (Soft). Облака немного прозрачны, вроде как есть поддержка альфа текстуры. Но я обнаружил проблему в наложении текстуры. Я думаю дело не в Шейдере а в самом гейм обджекте.
Вот посмотрите :

Как видите, с одной стороны видно как текстура соприкосается с концом / началом текстуры. Некий шов. Ну ладно, это просто нужно сделать текстуру правильную. Больше всего меня беспокоит то что на самой верхней точки текстуру как будто "засасывает" в верхний центр. Можно ли как то это исправить ?
Куча благодарностей тому кто сможет помочь.
AsteroidДата: Четверг, 01 Августа 2013, 00:09 | Сообщение # 2
Blender updated
Сейчас нет на сайте
а почему тебе не вывернуть нормаль сферы вовнутрь ? или сделать материал прозрачным .
robertonoДата: Четверг, 01 Августа 2013, 00:11 | Сообщение # 3
Чокнутый Кот
Сейчас нет на сайте
Цитата (Asteroid)
а почему тебе не вывернуть нормаль сферы вовнутрь ?

а как это сделать? Я использую сферу которая в юнити создается. Это не импортированная 3д модель
afrokickДата: Четверг, 01 Августа 2013, 00:11 | Сообщение # 4
участник
Сейчас нет на сайте
а как насчет плоскости(одно облако), которая по окружности перемещается и всегда направлена "лицом" к игроку(или под каким-то углом)?

Можно запилить один материал, с помощью uv сделать несколько текстур облаков... По перфомансу должно быть круто


Сообщение отредактировал afrokick - Четверг, 01 Августа 2013, 00:13
robertonoДата: Четверг, 01 Августа 2013, 00:15 | Сообщение # 5
Чокнутый Кот
Сейчас нет на сайте
afrokick, исключено. Некрасиво, неудобно. Почему я решил отказатся от плоскости. Камера игрока видит 5000 метров. Мне нужно что бы облака были до горизонта, т.е. в самом самом далеке они косались земли. А шар : вокруг земли, красиво выглядит. Это удобнее намного. Вращать просто. Можно добавить кучу материалов на него и контролировать альфу каждого.
afrokickДата: Четверг, 01 Августа 2013, 00:22 | Сообщение # 6
участник
Сейчас нет на сайте
Ну вам виднее. Чтобы нормаль вывернуть, надо домножить ее на -1 насколько я понял

Код
  Mesh mesh = GetComponent<MeshFilter>().mesh;
         Vector3[] normals = mesh.normals;
         int i = 0;
         while (i < normals.Length) {
             normals[i] = -1 * normals[i];
             i++;
         }
         mesh.normals = normals;


хотя могу ошибаться...
robertonoДата: Четверг, 01 Августа 2013, 00:26 | Сообщение # 7
Чокнутый Кот
Сейчас нет на сайте
afrokick, даже если вывернуть нормали, это не решит проблему которую я показал на скриншоте выложенным в первом посте.
AsteroidДата: Четверг, 01 Августа 2013, 00:30 | Сообщение # 8
Blender updated
Сейчас нет на сайте
СкайДом существует в юнити ?(SkyDome)

Может поможет в чём

непосредственно о юнити


Сообщение отредактировал Asteroid - Четверг, 01 Августа 2013, 01:27
robertonoДата: Четверг, 01 Августа 2013, 00:32 | Сообщение # 9
Чокнутый Кот
Сейчас нет на сайте
Asteroid, я только знаю про Sky Cube. Возможно они похожи если это из другого движка.
ЛевшаДата: Четверг, 01 Августа 2013, 01:01 | Сообщение # 10
почти ветеран
Сейчас нет на сайте
Цитата (robertono)
текстуры на шейдере не видно изнутри сферы.

robertono, cделай полуСферу в максе, флипни полигоны, наложи развертку и все встанет на свои места. smile


X.cor.R (Prologue)

Сообщение отредактировал Левша - Четверг, 01 Августа 2013, 01:02
robertonoДата: Четверг, 01 Августа 2013, 01:03 | Сообщение # 11
Чокнутый Кот
Сейчас нет на сайте
Левша, да зачем это, можно просто использовать двух сторонний материал. Меня больше беспокоит то что на скрине, то что в самом центре , на самой высокой точке шара.
ЛевшаДата: Четверг, 01 Августа 2013, 05:30 | Сообщение # 12
почти ветеран
Сейчас нет на сайте
Цитата (robertono)
Меня больше беспокоит то что на скрине, то что в самом центре , на самой высокой точке шара.

Цитата (robertono)
да зачем это

Именно за этим - развертку говорю сделай...
Цитата (Левша)
и все встанет на свои места


X.cor.R (Prologue)
robertonoДата: Четверг, 01 Августа 2013, 11:19 | Сообщение # 13
Чокнутый Кот
Сейчас нет на сайте
А если я сделаю сферу в 3д максе, такая штука тоже будет как на скрине? Почему именно полусферу?
romgermanДата: Четверг, 01 Августа 2013, 12:20 | Сообщение # 14
старожил
Сейчас нет на сайте
Просто сделай нормальную текстуру.
GantZ_YakaДата: Четверг, 01 Августа 2013, 12:29 | Сообщение # 15
почетный гость
Сейчас нет на сайте
Цитата (robertono)
А если я сделаю сферу в 3д максе, такая штука тоже будет как на скрине? Почему именно полусферу?

Изначально - да будет, и не только в 3Dmax'e, это стандартное наложение материала на сферу в любом 3d редакторе, квадратная картинка растягивается по координатам квадратной развертки сферы. Для правильного расположения материала нужно использовать инструменты 3d-редакторов, в 3d-max это модификаторы "UVW-map" и "Unwrap UVW" и с помощью них менять развертку.
Изначальная развертка в 3dmaxe выглядит так:

Из развертки видно, что можно сделать красивое небо, лишь отредактировав текстуру в фотошопе:
1. нужно закрасить выделенные красным места треугольников на текстуре одним цветом, чтобы они хорошо склеились на полюсе сферы.
2. нужно сделать бесшовное соединение - левый край текстуры должен копировать правый, так, чтобы при их совмещении не был виден шов. Подобробнее о создании бесшовных текстур в фотошопе может помочь гугл smile
Вариантов создания купола неба много, я привел лишь один самый простой. А полусферу используют - потому что нафига козе баян. Отсекаем лишние полигоны - если мы их в игре никогда не увидим, зачем они нужны, + уменьшается общая площадь для развертки текстуры и при наложении её, она сразу ложится нарисованным горизонтом к основанию купола smile
AsteroidДата: Четверг, 01 Августа 2013, 12:33 | Сообщение # 16
Blender updated
Сейчас нет на сайте


используй блендер


Сообщение отредактировал Asteroid - Четверг, 01 Августа 2013, 12:33
EchoITДата: Четверг, 01 Августа 2013, 12:55 | Сообщение # 17
старожил
Сейчас нет на сайте
Цитата
используй блендер

dry

Цитата
это модификаторы "UVW-map" и "Unwrap UVW" и с помощью них менять развертку.

Достаточно просто на эту полусферу наложить UVW-Map с настройкой Planar, и всё станет почти отлично. smile


Долгожданный анонсик: State of War

Сообщение отредактировал EchoIT - Четверг, 01 Августа 2013, 12:58
TrisДата: Четверг, 01 Августа 2013, 13:35 | Сообщение # 18
был не раз
Сейчас нет на сайте
robertono,
Цитата
И тут я придумал сделать вокруг мира огромейшую сферу, убрать коллайдер и поставить на него текстуру облаков.


Придумал???

Ссылка


Сообщение отредактировал Tris - Четверг, 01 Августа 2013, 13:36
EchoITДата: Четверг, 01 Августа 2013, 13:57 | Сообщение # 19
старожил
Сейчас нет на сайте
Цитата
Придумал???

Ссылка


До этого очень просто додуматься, и не надо свои уроки, которые кстати не очень хорошие, рекламить. Не та тема.


Долгожданный анонсик: State of War
robertonoДата: Четверг, 01 Августа 2013, 16:09 | Сообщение # 20
Чокнутый Кот
Сейчас нет на сайте
Tris,
Цитата (EchoIT)
не надо свои уроки, которые кстати не очень хорошие, рекламить

во во
Цитата (Tris)
Придумал???

ты думаешь ты единственный кто додумался до такого?
GantZ_Yaka,
просто используя сферу можно имитировать их передвижение. Просто крутить сферу и всё.
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Шейдеры для облаков
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг