Автор Тема: Как задать точный градус нормали  (Прочитано 8783 раз)

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Как задать точный градус нормали
« : Август 25, 2017, 11:37:34 am »
При создании карты из кусков может получиться, что нормаль на краю одного куска имеет другой градус, чем нормаль соседнего куска, это дает эффект однобокого затенения вершины при использовании динамического освещения. Склеивать куски каждый раз для склеивания нормалей, а потом их разделять опять не вариант. Какой программой можно задать точный градус нормали, например 90 градусов по краям куска карты? ZModeler не умеет, в 3dmax-е я не нашел как.


Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Как задать точный градус нормали
« Ответ #1 : Август 25, 2017, 11:56:06 am »
А Snap(значок магнита сверху) в режиме Vertex(ПКМ на нем) разве не устанавливает помимо позиции соответствующий угол нормали когда "магнитишь" вертекс? Я просто не помню: проверь - мб сработает...

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Как задать точный градус нормали
« Ответ #2 : Август 25, 2017, 06:30:25 pm »
Не могу разобраться. Странно, что никакой информации по изменению направления нормалей в максе невозможно найти, везде речь только о том, как их вывернуть наизнанку. Еще беда в том, что макс при импорте модели пересчитывает нормали перпендикулярно поверхности, даже если их настроить где-то еще, то все потеряется. ZModeler умеет поворачивать нормали, но непонятно на какой угол. На краю карты неизвестно под каким углом следующий отрезанный кусок, поэтому с разных сторон граница будет иметь разные нормали. Я думал решить эту проблему, настроив крайние вершины куска под 90 градусов (т.е. вертикально) независимо от наклона, но не знаю, чем это сделать.
« Последнее редактирование: Август 25, 2017, 06:33:17 pm от xanser »

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Как задать точный градус нормали
« Ответ #3 : Август 25, 2017, 09:11:55 pm »
Я говорил про это "примагничивание". Чтобы не мешало ничто лишнее - сначала нажми ПКМ на этой кнопке "Staps Toggle" и оставь там лишь галочку "Vertex". Мне кажется, что "магнитится" не только позиция вертекса, но и поворот нормали

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Как задать точный градус нормали
« Ответ #4 : Август 26, 2017, 07:17:04 am »
Что-то не выходит.

Оффлайн kenking

  • Новичок
  • **
  • Сообщений: 237
  • Репутация: +16/-0
    • Просмотр профиля
Re: Как задать точный градус нормали
« Ответ #5 : Август 26, 2017, 09:23:45 am »
В ZModeler2 командой Поверхность->Нормали->Пересчитать нормали выравниваются перпендикулярно плоскости полигона. Ещё есть три команды для работы с нормалями: Нормализовать, Проецировать и Сгладить. Что касается вращения нормалей, то величину угла можно задать кликнув в активном окне, при активном инструменте и нажатой клавише Shift.




Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Как задать точный градус нормали
« Ответ #6 : Август 28, 2017, 05:07:20 am »
Я так понимаю, здесь поворот нормали на точный угол. А если угол заранее неизвестен, он может быть и не целочисленный в зависимости от наклона поверхности, то к нему просто прибавится точный угол, а получить абсолютный угол относительно осей координат, например строго вертикальные нормали, видимо так не получится. Еще раз покажу, что требуется, может кто-нибудь попробует на модельке из вложения.


Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Как задать точный градус нормали
« Ответ #7 : Август 28, 2017, 08:58:24 am »
А, тебе для отдельных кусков... Вот способ в 3Ds max:

Модификаторы/Edit Normals, затем выбирай проблемные вертексы и жми Average/Selected. После этого обязательно закрой модификатор(ПКМ на нем/Collapse To/Yes), чтобы сохранить изменения. Макс может тупить и показывать после этого, что направление нормалей не изменилось, но и в окне превью, и на рендере уже видно, что "ничего не видно"(освещение плавное)

Также советую это видео(там описан еще один трюк Edit Normals - копипаст направления нормалей) - мб тоже пригодится.

UPD: Забыл: скрипты KAMа всё испоганят(дважды - при импорте и при экспорти), так что экспортируй плагином, о котором я писал тут.

Во вложении я "примагнитил" вертексы для наглядности. Скрипты кама всё испортят! Так что импортируй чем-нибудь другим.
« Последнее редактирование: Август 28, 2017, 09:17:21 am от Shagg_E »

Оффлайн kenking

  • Новичок
  • **
  • Сообщений: 237
  • Репутация: +16/-0
    • Просмотр профиля
Re: Как задать точный градус нормали
« Ответ #8 : Август 28, 2017, 09:07:23 am »
В ZModeler2 cделать можно так:
1) Включить привязку к вершинам и активировать инструмент привязка.
2) Переместить опорную точку к нужной вершине.
3) Выключить одну из координатных осей (зависит от вида проекции, в данном примере оставляем ось X).
4) Выделить нужную вершину (вершины), имеется ввиду вершина к которой в данное время переместили опорную точку.
5) В режиме выделенного активировать инструмент Поверхность->Нормали->Проецировать и кликнуть левой кнопкой мыши в окне проекции.
6) Снять выделение с этой вершины (вершин).

Для остальных вершин повторить с пункта 2.






Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Как задать точный градус нормали
« Ответ #9 : Август 28, 2017, 11:47:18 am »
Спасибо всем большое, буду пробовать.

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Как задать точный градус нормали
« Ответ #10 : Октябрь 11, 2017, 02:30:31 pm »
В продолжение темы с другого боку...
1. Модификатор Edit Normals - Average/Selected выбирает средний угол между всеми нормалями, причем от последовательности выбора зависит конечное направление. Тем не менее положительный результат есть, после такого выравнивания можно поворачивать нормали в ZModeler все сразу и на глаз поставить пусть не 90 градусов, но 89.99, что не отличимо в игре. Это актуально еще вот где - если поставить на карту траву, то с динамическим светом одна сторона травы будет светлой, а вторая жутко темной, если направить нормали вверх, то трава одинаково освещена со всех сторон, незаметно перетекая в поверхность земли, и картинка получается красивая.
2. По поводу экспорта скриптами КАМа, действительно они портят нормали, я использовал плагин экспорта dff, с моделями все норм. Но вот с педами беда - КАМ как и обычно все портит, превращая педа в угловатую заготовку, а плагин экспорта на педах вызывает ошибку в игре. Может есть идеи, как импортировать и экспортировать педов с теми же нормалями, а то я сделал несколько новых, а они в игре как топором обтесанные получились.

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Как задать точный градус нормали
« Ответ #11 : Октябрь 11, 2017, 10:22:33 pm »
Насчет педов - хз, я просто объединяю вертексы в тех местах, где не нужен "угол". С плагином экспорта не пробовал заниматься педами, так что ничего по этому поводу сказать не могу...