Size: a a a

HoudiniForGames Chat

2020 April 17

MK

Mikhail Kolpakov in HoudiniForGames Chat
примерно понял что делать
источник

MK

Mikhail Kolpakov in HoudiniForGames Chat
Ilya Kuzmichev
или в педохорсов чатик скинь вопрос, там напишут все за тебя
Это что за чатик такой?
источник

IK

Ilya Kuzmichev in HoudiniForGames Chat
Mikhail Kolpakov
Это что за чатик такой?
источник

LD

Lex Darlog in HoudiniForGames Chat
Коллеги,
1. В этом чате - я новенький. Так что всем привет.
2. Кто-нибудь в курсе, в актуальных версиях гуди (17-18) - там уже, наконец, сделали нативную поддержку тангенциального пространства Mikk в мантре? Ну, шоб гонять нормали из/в TS.
Насколько я сам вижу - у них есть только пара костылей для мантра-ноды baketexture. Там галка "Use MikkT tangent space". Ну и внутри vop-ноды bakeexports - какая-то жесть в несколько inline-нод. Которая какой-то магией читает уже готовые вектора базиса откуда-то снаружи:
    vector $mikkN = 0;
   vector $mikkT = 0;
   vector $mikkB = 0;
   getsamplestore("uvlens_mikkt_n", Eye, $mikkN);
   getsamplestore("uvlens_mikkt_u", Eye, $mikkT);
   getsamplestore("uvlens_mikkt_v", Eye, $mikkB);
А вот если у меня, допустим, есть нормал-мапа для хайполи, а я хочу её перепечь на лоуполю - как вообще это сделать? Как получить просто сам Mikkt'овый тангент-базис в шейдерном вопе?
источник

IK

Ilya Kuzmichev in HoudiniForGames Chat
Lex Darlog
Коллеги,
1. В этом чате - я новенький. Так что всем привет.
2. Кто-нибудь в курсе, в актуальных версиях гуди (17-18) - там уже, наконец, сделали нативную поддержку тангенциального пространства Mikk в мантре? Ну, шоб гонять нормали из/в TS.
Насколько я сам вижу - у них есть только пара костылей для мантра-ноды baketexture. Там галка "Use MikkT tangent space". Ну и внутри vop-ноды bakeexports - какая-то жесть в несколько inline-нод. Которая какой-то магией читает уже готовые вектора базиса откуда-то снаружи:
    vector $mikkN = 0;
   vector $mikkT = 0;
   vector $mikkB = 0;
   getsamplestore("uvlens_mikkt_n", Eye, $mikkN);
   getsamplestore("uvlens_mikkt_u", Eye, $mikkT);
   getsamplestore("uvlens_mikkt_v", Eye, $mikkB);
А вот если у меня, допустим, есть нормал-мапа для хайполи, а я хочу её перепечь на лоуполю - как вообще это сделать? Как получить просто сам Mikkt'овый тангент-базис в шейдерном вопе?
ты можешь на вертексах его насчитать и в шейдере забирать
источник

LD

Lex Darlog in HoudiniForGames Chat
насчитать на вертексах могу. Забрать в шейдере могу. Но он сойдётся только на самих вертексах.
источник

LD

Lex Darlog in HoudiniForGames Chat
В середине треугольника - там должно быть какое-то шаманство. Что-то связанное с тем, как именно нормали интерполируются.
источник

IK

Ilya Kuzmichev in HoudiniForGames Chat
чего? в середине треугольника интерполируется через барицентрические координаты, которые в мантре и самом гудини немного различаются, но разницы все равно заметить практически невозможно
https://www.sidefx.com/docs/houdini/model/primitive_spaces.html
источник

IK

Ilya Kuzmichev in HoudiniForGames Chat
более того, в самих движках те же самые барицентрические координаты будут для интерполяции тангентспейса и других вертексных аттрибутов
источник

LD

Lex Darlog in HoudiniForGames Chat
то есть, просто повторить в мантре построение базиса так же, как я во фрагментном шейдере делаю, правильно я понимаю?
1. polyframe в режиме MikkT на вертексах, выгружаем тангенс и бинормаль
2. в шейдере - НЕ нормализуем вектора. Просто строим базис и помножаем/инвертим, как надо.
источник

IK

Ilya Kuzmichev in HoudiniForGames Chat
Lex Darlog
Коллеги,
1. В этом чате - я новенький. Так что всем привет.
2. Кто-нибудь в курсе, в актуальных версиях гуди (17-18) - там уже, наконец, сделали нативную поддержку тангенциального пространства Mikk в мантре? Ну, шоб гонять нормали из/в TS.
Насколько я сам вижу - у них есть только пара костылей для мантра-ноды baketexture. Там галка "Use MikkT tangent space". Ну и внутри vop-ноды bakeexports - какая-то жесть в несколько inline-нод. Которая какой-то магией читает уже готовые вектора базиса откуда-то снаружи:
    vector $mikkN = 0;
   vector $mikkT = 0;
   vector $mikkB = 0;
   getsamplestore("uvlens_mikkt_n", Eye, $mikkN);
   getsamplestore("uvlens_mikkt_u", Eye, $mikkT);
   getsamplestore("uvlens_mikkt_v", Eye, $mikkB);
А вот если у меня, допустим, есть нормал-мапа для хайполи, а я хочу её перепечь на лоуполю - как вообще это сделать? Как получить просто сам Mikkt'овый тангент-базис в шейдерном вопе?
ну и вообще вот это
https://www.sidefx.com/docs/houdini/vex/functions/getsamplestore.html
похоже как разщ и пишет тебе тангентспейс откуда-то извне в переменные, дальше делай с ними чего угодно
источник

LD

Lex Darlog in HoudiniForGames Chat
это я понял. Но вот откуда прилетают эти "uvlens_mikkt_n" - чот не смог нагуглить.
источник

IK

Ilya Kuzmichev in HoudiniForGames Chat
Lex Darlog
это я понял. Но вот откуда прилетают эти "uvlens_mikkt_n" - чот не смог нагуглить.
из самой мантры
источник

IK

Ilya Kuzmichev in HoudiniForGames Chat
не думаю что где-то найдутся сорцы
источник

IK

Ilya Kuzmichev in HoudiniForGames Chat
спроси лучше в основном чатике, киношники явно с этим дело имеют чаще
источник

IK

Ilya Kuzmichev in HoudiniForGames Chat
Lex Darlog
то есть, просто повторить в мантре построение базиса так же, как я во фрагментном шейдере делаю, правильно я понимаю?
1. polyframe в режиме MikkT на вертексах, выгружаем тангенс и бинормаль
2. в шейдере - НЕ нормализуем вектора. Просто строим базис и помножаем/инвертим, как надо.
я бы вообще это через копы все делал, а не мантру
источник

LD

Lex Darlog in HoudiniForGames Chat
копы - это, конечно, прекрасно. Но как без мантры обойцтись в сценарии, когда:
1. есть нормал-мапа (тангенциальная, MikkT) в пространстве хайполи
2. надо запечь нормал-мапу, содержащую изменённые нормали хайпольки - на лоуполю
?

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

IK

Ilya Kuzmichev in HoudiniForGames Chat
а, прослушал про хайрез
ну в 2 этапа значит, сначала прожектим ворлдспейс на лоуполи, потом трансформируем в тангент, но вообще гудини это делал и без дополнительных плясок
источник

IK

Ilya Kuzmichev in HoudiniForGames Chat
еще до того, как миккт в сопы запилили
источник

IK

Ilya Kuzmichev in HoudiniForGames Chat
а откуда вообще на хайрезе взялась нормалка?
источник