Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Парсинг текстового файла без напряга для GC и без unsafe (10 стр)

Парсинг текстового файла без напряга для GC и без unsafe (10 стр)

Страницы: 19 10 11 1216 Следующая »
alexzzzzПостоялецwww12 мар. 201817:31#135
Так если изменить low-poly нормали, то и результат low-poly + normal map визуально изменится. Надо заново пересчитывать normal map под новые low-poly-нормали.

Для xNormal даже есть плагин, пересчитывающий нормали и тангенты точно по алгоритму Unity, чтобы получаемую карту нормалей можно было использовать в Unity, если нормали и тангенты будут пересчитываться при импорте.

MrShoorУчастникwww12 мар. 201820:06#136
Dampire
> В поля класса я их тоже копирую шталь? Или они сами аллоцируются в куче? Как
> насчет статических экземпляров?
Ты аллоцируешь класс. А потом либо изменяешь поля класса, либо копируешь в них структуру.

> Как насчет статических экземпляров?
Статических экземпляров чего? Класса?

MrShoorУчастникwww12 мар. 201820:18#137
Polyflow3d
> Если у человека есть хайполи, то он запечет с него нормал мап .
А если человеку надо сделать несколько LOD-ов, то для каждого LOD-а он будет запекать отдельную нормал мапу?

Правка: 12 мар. 2018 20:19

Polyflow3dПостоялецwww12 мар. 201822:13#138
alexzzzz
Так если изменить low-poly нормали, то и результат low-poly + normal map визуально изменится. Надо заново пересчитывать normal map под новые low-poly-нормали.

ну да. После изменения lo или high poly нужно пересчитывать normal map.

Для xNormal даже есть плагин, пересчитывающий нормали и тангенты точно по алгоритму Unity, чтобы получаемую карту нормалей можно было использовать в Unity, если нормали и тангенты будут пересчитываться при импорте.

а как создатели этого плагина узнали алгоритм юнити, как думаешь? Или это сами юнитеки сделали?


MrShoor
ладно, ладно убедил. Это клевая фишка.

alexzzzzПостоялецwww13 мар. 201816:14#139
Polyflow3d
> ну да. После изменения lo или high poly нужно пересчитывать normal map.

Таким образом, если нормали в файле есть, их надо импортировать как есть, иначе получается, что ты меняешь модель и прилагаемая карта нормалей к ней уже не подходит.

> а как создатели этого плагина узнали алгоритм юнити, как думаешь? Или это сами
> юнитеки сделали?

Юнитеки по просьбе показали соответствующий исходник.

Polyflow3dПостоялецwww14 мар. 201810:14#140
alexzzzz
Таким образом, если нормали в файле есть, их надо импортировать как есть, иначе получается, что ты меняешь модель и прилагаемая карта нормалей к ней уже не подходит.

ну во первых я могу пересчитать так же как юнити, могу и лучше. Визуально всё получается идентично.
А во вторых есть случаи когда нужно пересчитывать нормали обязательно, например в моем плагине который импортирует вертексную анимацию через pc2 файл, там есть данные только о позиции вертексов , все остальное нужно самому пересчитывать. 

Polyflow3dПостоялецwww14 мар. 201810:20#141
Я сейчас могу пересчитывать нормали двумя способами
Справа - вариант идентичный юнитевскому.
Слева с учетом площади полигонов.  Модель кубика одна и та же.

Изображение

Спасибо MrShoor , он со своим Блендером меня натолкнул на мысль о пересчете нормалей с учетом площади, что дает намного более приятный результат.  Но в моем исполнении не надо никаких highpoly.

Правка: 14 мар. 2018 10:24

Polyflow3dПостоялецwww14 мар. 201810:30#142
alexzzzz
Юнитеки по просьбе показали соответствующий исходник.

похоже вот он
https://gist.github.com/aras-p/2843984
RikkПостоялецwww14 мар. 201811:47#143
Polyflow3d
> Модель кубика одна и та же.
правый кубик
верхняя правая грань - темное пятно
внизу справа тоже темно .
нормали (координаты получается) другие ? или свет-тень обсчитался не так ?
а если так
  то не одно и то же(по сравнению с левым)
  результат различен
?
Polyflow3dПостоялецwww14 мар. 201812:10#144
Rikk
что значит "не так"?
Есть два алгоритма , справа юнитивский, слева мой.
Юнитивский нужно использовать когда на модели есть NM ,
мой - когда модель без NM но хочется симпатичный шейдинг.
MrShoorУчастникwww14 мар. 201812:39#145
Polyflow3d
> есть данные только о позиции вертексов , все остальное нужно самому
> пересчитывать
Это называется не пересчитывать, а считать. Пересчитывать - это когда у тебя уже есть нормали, но ты их выкидываешь на мороз, и считаешь свои, типа правильные.
RikkПостоялецwww14 мар. 201812:58#146
Polyflow3d
> Справа - вариант идентичный юнитевскому.
получается не идентично
Polyflow3d
> Есть два алгоритма , справа юнитивский, слева мой.
отличаются
не так ли , нет ?
SuslikМодераторwww14 мар. 201814:05#147
Polyflow3d
> Слева с учетом площади полигонов.  Модель кубика одна и та же.
вообще-то локальная нормаль корректно считается из углов прилегающих к вертексу треугольников, а не их площадей. на любом hard edge ребре нормаль должна смотреть по биссектрисе образующего его двугранного угла, а этого можно добиться именно складывая нормали треугольников с весами, пропорциональными прилегающим углам.

простейший пример, когда способ с площадями даст сбой — на сильно вытянутом боксе, у которого нормали в углах поедут, хотя должны смотреть туда же, куда и на кубе.

Правка: 14 мар. 2018 14:06

Polyflow3dПостоялецwww16 мар. 201819:06#148
Suslik
вообще-то локальная нормаль корректно считается из углов прилегающих к вертексу треугольников, а не их площадей.


ага, только прикол в том, что юнити, например, триангулирует полигоны не так, как это делает 3дмакс. Это значит что в максе и юнити к одному и тому же вертексу будет прикреплено разное колличество треугольников, а следовательно и нормаль будет разная. Это при условии что они вообще этот способ расчета(с пропорциями углов) используют (на самом деле нет). Полагаю, что в других пакетах тоже все сделано по своему.  В юнити есть два способа пересчета нормалей (при импорте и рантайм). И оба, похоже не используют пропорции углов.


Пруф что везде триангуляция разная

+ Показать

Далее, на счет того, как "корректно". В юнити есть три способа пересчета тангентов.
Тот, который доступен через api - это походу legacy, без разбиения вершин.

+ Показать

в 3дмаксе о тангентах вообще нет ни слова, даже в скриптовом api. Но тангенты, где то там, в недрах макса используются, когда запекается нормал мап.
 

Polyflow3dПостоялецwww16 мар. 201819:08#149
Rikk
ну разные, да. Об этом и речь.
Страницы: 19 10 11 1216 Следующая »

/ Форум / Программирование игр / Общее

2001—2018 © GameDev.ru — Разработка игр