HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Нубские вопросы от <censored> и других нубов
Чтобы не создавать сто тем
3 голосов
Страницы (138): « Первая ... « 134 135 136 137 [138]   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: (void)
Сообщений: 2573

Рейтинг



Цитата:
Дядя Миша писал:
они уже записаны в энтитях. Не благодари.

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

Сообщить модератору | | IP: Записан
Сообщение: 188701

Старое сообщение 31-12-2019 17:33
- За что?
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: (void)
Сообщений: 2573

Рейтинг



Я в VRAD читаю массивы обычных Vector и некий небольшой но значительный процент значений оказывается -2147483648. Во-первых, как это детектировать? Сравнение if x < -99999 не помогает. Во-вторых, можно ли эти значения прочитать правильно? И как возникают они? Координата в мап-файле записана без точки, как целое, и при чтении во флоат что-то происходит?

Сообщить модератору | | IP: Записан
Сообщение: 188896

Старое сообщение 06-01-2020 19:01
- За что?
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: (void)
Сообщений: 2573

Рейтинг



Читаю углы пропсов и ориентирую лайтспоты соответствующим образом.
В какой-то момент перестало работать и не хочет чиниться. Читаешь с пропса угол 90 0 0, назначаешь его споту а он светит на стенку. Мне так и надо, но ведь 90 0 0 это вертикально вверх, какая стенка?
При том, что в Хаммере при 90 0 0 спот реально встаёт вертикально вверх, а на стенку уходит синяя палочка, видимо ролл.
И да, я помню что ненулевые питч и яв оверрайдят соотв компоненты вектора. И про недавний прикол с моими векторами тоже не забыл.

Вот такой код, нас интересует аксиальный случай т.к. неаксиальный работает правильно:

C++ Source Code:
1
if ( g_bFixFakeLights && bSpotlight )//new code, lightspots only
2
{
3
  if ( fabs( propangle[0] )==0 || fabs( propangle[0] )==90 || fabs( propangle[0] )==180 || fabs( propangle[0] )==270 )
4
  {	//axial: daylight panel, cagelight, hanging down, etc.
5
  printf( "given prop angle %f %f %f becomes ",propangle[0],propangle[1],propangle[2] );
6
 
7
  printf( "%f %f %f\n",propangle[0],propangle[1],propangle[2] );
8
}
9
else
10
{	//projector with arbitrary angles
11
propangle[0] = -propangle[0];
12
}
13
SetupLightNormalFromProps( QAngle( propangle.x, propangle.y, propangle.z ), 0, 0, dl->light.normal );
14
//AngleVectors ( QAngle( propangle.x, propangle.y, propangle.z ), &dl->light.normal );
15
QAngle tmp;
16
VectorAngles( dl->light.normal, tmp );
17
printf( "SNLFP give %f %f %f\n",tmp[0],tmp[1],tmp[2] );
18
}
19
else//old path or lightenv/point
20
{
21
  GetVectorForKey( e, "angles", angles );
22
  pitch = FloatForKey (e, "pitch");
23
  angle = FloatForKey (e, "angle");
24
  SetupLightNormalFromProps( QAngle( angles.x, angles.y, angles.z ), angle, pitch, dl->light.normal );
25
}

Обнаружилось такое: угол 90 0 0 конвертится SetupLightNormalFromProps в нормаль, значит, и потом обратно, выходит 270 180 0
Если SetupLightNormalFromProps поменять на AngleVectors то на выходе будет 90 180 0
Вроде оба варианта какой-то бред.
Угол 0 90 0 в обоих случаях возвращается без изменений, ну разве что питч инвертируется.
Саму SetupLightNormalFromProps я еле нашёл, её файл с кодом не добавлен в проект.
C++ Source Code:
1
void SetupLightNormalFromProps( const QAngle &angles, float angle, float pitch, Vector &output )
2
{
3
  if (angle == ANGLE_UP)
4
  {
5
    output[0] = output[1] = 0;
6
    output[2] = 1;
7
  }
8
  else if (angle == ANGLE_DOWN)
9
  {
10
    output[0] = output[1] = 0;
11
    output[2] = -1;
12
  }
13
  else
14
  {
15
    // if we don't have a specific "angle" use the "angles" YAW
16
      if ( !angle )
17
      {
18
        angle = angles[YAW];
19
      }
20
 
21
    output[2] = 0;
22
    output[0] = (float)cos (angle/180*M_PI);
23
    output[1] = (float)sin (angle/180*M_PI);
24
  }
25
 
26
  if ( !pitch )
27
  {
28
    // if we don't have a specific "pitch" use the "angles" PITCH
29
      pitch = angles[PITCH];
30
  }
31
 
32
  output[2] = (float)sin(pitch/180*M_PI);
33
  output[0] *= (float)cos(pitch/180*M_PI);
34
  output[1] *= (float)cos(pitch/180*M_PI);
35
}

Я не врубаюсь почему у них из одного параметра выходят 2-3 угла в разных плоскостях.

AngleVectors у них такая:
C++ Source Code:
1
void AngleVectors (const QAngle &angles, Vector *forward)
2
{
3
  Assert( s_bMathlibInitialized );
4
  Assert( forward );
5
 
6
  float	sp, sy, cp, cy;
7
 
8
  SinCos( DEG2RAD( angles[YAW] ), &sy, &cy );
9
  SinCos( DEG2RAD( angles[PITCH] ), &sp, &cp );
10
 
11
  forward->x = cp*cy;
12
  forward->y = cp*sy;
13
  forward->z = -sp;
14
}

Отредактировано Crystallize 14-01-2020 в 18:00

Сообщить модератору | | IP: Записан
Сообщение: 189197

Старое сообщение 14-01-2020 17:45
- За что?
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 24958
Нанёс повреждений: 381 ед.

Рейтинг



Цитата:
Crystallize писал:
Читаю углы пропсов и ориентирую лайтспоты соответствующим образом.

всё это очень подозрительно.

__________________
My Projects: download page

-960, 1980, 96

Сообщить модератору | | IP: Записан
Сообщение: 189211

Старое сообщение 14-01-2020 20:35
-
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: (void)
Сообщений: 2573

Рейтинг



Там у пропов и у света совершенно разные ск чтоли? С разными нулевыми направлениями и разными направлениями отсчета?

Добавлено 16-01-2020 в 13:59:

Потому что при инверсии питча и ява и добавления 180 в яв, почти все совпало при проверке но по-прежнему дико сломано в игре.

Сообщить модератору | | IP: Записан
Сообщение: 189268

Старое сообщение 16-01-2020 06:59
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 15:21. Новая тема    Ответить
Страницы (138): « Первая ... « 134 135 136 137 [138]   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Нубские вопросы от <censored> и других нубов
Чтобы не создавать сто тем
3 голосов
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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