HLFX.Ru Forum Страницы (56): « Первая ... « 46 47 48 49 [50] 51 52 53 54 » ... Последняя »
Показать все 832 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- XashXT (https://hlfx.ru/forum/forumdisplay.php?forumid=30)
-- XashXT/3D [Вопросы и ответы] (https://hlfx.ru/forum/showthread.php?threadid=3689)


Отправлено Aynekko 22-12-2021 в 20:21:

Цитата:
ncuxonaT писал:
переводи всё в мировое пространство

Ох если бы я знал как это сделать почему и стал тогда из паранои копипастить.

__________________
Мой мод на Xash


Отправлено Дядя Миша 22-12-2021 в 20:22:

ncuxonaT ты сам пробовал так бороться или только другим советуешь?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 23-12-2021 в 10:49:

Я нашел способ как вращать шадоумапу для точечного источника. Но это просто тест и ничего более, как попытка определить, где хотя бы нужно изменять.
Оригинал

C++ Source Code:
ShadowOmni(-var_LightVec, u_ShadowParams);

Я попробовал повернуть вектор. Нашел формулу, правда она для 2д (для 3д матрицы что ли надо юзать?) и поигрался с числами:
C++ Source Code:
1
vec3 ang = u_MeshAngles;
2
float xx = u_test; // gl_test консольное значение
3
vec3 rot = vec3( -var_LightVec.x*cos(-ang.y + xx) + var_LightVec.y * sin(-ang.y+xx), -var_LightVec.x*sin(-ang.y + xx) - var_LightVec.y*cos(-ang.y + xx), var_LightVec.z);
4
shadow = ShadowOmni( -rot, u_ShadowParams);

Повторюсь, это просто тест и попытка повернуть вектор хотя бы в 2д. Выяснилось, что при определенных значениях gl_test шадоумапа ложится идеально на конкретную модель (которая повернута). Только почему идет прибавка к углу angles я пока не понимаю.

TL: DR нужно в shadowomni повернуть вектор var_LightVec в зависимости от angles модели. Вот только как это сделать я пока не разобрался. Есть идеи у кого-нибудь?

Добавлено 23-12-2021 в 13:49:

Нашел прямую зависимость. Горизонтальный поворот шадоумапы для всех моделей адекватный. Остался вертикальный.
C++ Source Code:
1
vec3 ang = u_MeshAngles;
2
vec3 rot = vec3( -var_LightVec.x*cos(ang.y * 0.0175 + M_PI) + var_LightVec.y * sin(ang.y * 0.0175 + M_PI), -var_LightVec.x*sin(ang.y * 0.0175 + M_PI) - var_LightVec.y*cos(ang.y * 0.0175 + M_PI), var_LightVec.z);
3
4
4
shadow = ShadowOmni( -rot, u_ShadowParams);

Вот чую, уже совсем близко подобрался...

__________________
Мой мод на Xash


Отправлено FiEctro 23-12-2021 в 11:08:

А в чём прикол теней и света в локальном пространстве, зачем оно вообще используется?

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Дядя Миша 23-12-2021 в 12:56:

Цитата:
FiEctro писал:
А в чём прикол теней и света в локальном пространстве, зачем оно вообще используется?

Вот это я и пытаюсь воспомнить.

Добавлено 23-12-2021 в 15:56:

Скорее всего это как-то связано с хромом.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 23-12-2021 в 18:58:

Продолжение эпопеи с тенями
Вот то что выше писал, переписал как матрицу, уже начинаю что-то подозревать. Это в шейдере.

C++ Source Code:
1
vec3 ang = u_MeshAngles;
2
 
3
mat3 m;
4
m[0][0] = -var_LightVec.x*cos(ang.y * 0.0175 + M_PI);
5
m[1][0] = var_LightVec.y * sin(ang.y * 0.0175 + M_PI);
6
m[2][0] = 0;
7
m[0][1] = -var_LightVec.x*sin(ang.y * 0.0175 + M_PI);
8
m[1][1] = -var_LightVec.y*cos(ang.y * 0.0175 + M_PI);
9
m[2][1] = 0;
10
m[0][2] = 0;
11
m[1][2] = 0;
12
m[2][2] = var_LightVec.z;
13
 
14
vec3 ShadowVec = m * vec3(1.0);
15
 
16
shadow = ShadowOmni( -ShadowVec, u_ShadowParams);

Как результат, тени ложатся всегда идеально на модели в горизонтальном повороте. А вот дальше я пока не совсем понимаю. Сейчас я сделал поворот шадоумапы по одной из осей. Мне нужно получается сделать еще 2 матрицы, а в конце записать так:
vec3 ShadowVec = m * m1 * m2 * vec3(1.0);

Я хоть на правильном пути? Подскажите.

Добавлено 23-12-2021 в 21:58:

Так, вот сделал все 3 матрицы. Для каждой из осей.
Та первая, вот еще две.
C++ Source Code:
1
mat3 m2;
2
m2[0][0] = -var_LightVec.x*cos(ang.x * 0.0175 + M_PI);
3
m2[1][0] = 0;
4
m2[2][0] = -var_LightVec.z * sin(ang.x * 0.0175 + M_PI);
5
m2[0][1] = 0;
6
m2[1][1] = var_LightVec.y;
7
m2[2][1] = 0;
8
m2[0][2] = var_LightVec.x * sin(ang.x * 0.0175 + M_PI);
9
m2[1][2] = 0;
10
m2[2][2] = -var_LightVec.z * cos(ang.x * 0.0175 + M_PI);
11
 
12
mat3 m3;
13
m3[0][0] = var_LightVec.x;
14
m3[1][0] = 0;
15
m3[2][0] = 0;
16
m3[0][1] = 0;
17
m3[1][1] = -var_LightVec.y * cos(ang.z * 0.0175 + M_PI);
18
m3[2][1] = var_LightVec.z * sin(ang.z * 0.0175 + M_PI);
19
m3[0][2] = 0;
20
m3[1][2] = -var_LightVec.y * sin(ang.z * 0.0175 + M_PI);
21
m3[2][2] = -var_LightVec.z * cos(ang.z * 0.0175 + M_PI);

Ну и финальный аккорд. Как их соединить?!
m * m2 * m3 * vec3(1.0) к сожалению не сработало

P.S. Все матрицы проверил. Если задать вектор как матрица * vec3(1.0) то тень ложится как надо на модель, повернутую в этой оси.

__________________
Мой мод на Xash


Отправлено Дядя Миша 24-12-2021 в 07:17:

Aynekko перестань тратить время на ерунду

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 24-12-2021 в 08:03:

Цитата:
Дядя Миша писал:
Aynekko перестань тратить время на ерунду

Знаю. Но уж очень интересно. Я уже почти дошел.

http://aynekko.pw/temp/test3.jpg

Я вчера ошибся в том, что каждую матрицу считал из изначального вектора. А надо было брать вектор, посчитанный предыдущей матрицей. Но есть проблема - модель может быть повернута только в одной плоскости, чтобы тень не съезжала. Кажется, я был прав, что для омни-теней нужно повернуть var_lightvec и загнать его в shadow.

__________________
Мой мод на Xash


Отправлено Crystallize 24-12-2021 в 08:04:

Цитата:
Дядя Миша писал:
Скорее всего это как-то связано с хромом.

На брашах?


Отправлено Дядя Миша 24-12-2021 в 08:18:

Цитата:
Aynekko писал:
Знаю. Но уж очень интересно. Я уже почти дошел.

У нас был один чудик, он три года углы Эйлера складывал. И ему тоже всё время казалось, что он "почти дошёл".

Цитата:
Crystallize писал:
На брашах?

на моделях

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 24-12-2021 в 08:22:

Цитата:
Дядя Миша писал:
У нас был один чудик, он три года углы Эйлера складывал.

Я так и знал, что ты его упомянешь.

__________________
Мой мод на Xash


Отправлено Дядя Миша 24-12-2021 в 09:46:

Если ты понимаешь что делаешь - ты и знаешь, что ты получишь.
Если не понимаешь - у тебя миллионы вариантов перебора. Жизни не хватит.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 24-12-2021 в 10:01:

Ну что, все пофикшено. Оказалось, нужно было просто матрицы записать в обратном порядке. Наконец-то проблема со светотенью полностью разрешилась. Правильно или нет - у меня уже нет ни сил, ни желания притрагиваться. Несколько месяцев попыток прошли не зря. Однако ж, без Дяди Миши и советом про матрицу с обратным скейлом я бы еще долго сидел.

__________________
Мой мод на Xash


Отправлено Дядя Миша 24-12-2021 в 10:51:

Ну вообщем вернул обратно всё в мировое пространство?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 24-12-2021 в 10:54:

Получается так? Но я сделал это в шейдере. Сделал копию var_LightVec перед тенями и повернул его в зависимости от angles модели. Я долго делал то же самое в коде, но почему-то ничего не получалось. Почем и решил взять уже вектор, который был трансформирован в вертексном шейдере. Не прогадал однакось!

__________________
Мой мод на Xash


Временная зона GMT. Текущее время 22:40. Страницы (56): « Первая ... « 46 47 48 49 [50] 51 52 53 54 » ... Последняя »
Показать все 832 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024