HLFX.Ru Forum
Показать все 1 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Магические константы в FTriangulate (https://hlfx.ru/forum/showthread.php?threadid=5454)


Отправлено FreeSlave 24-02-2020 в 11:13:

Магические константы в FTriangulate

Начальные точки для попытки триангуляции пути вычисляются вот так:

C++ Source Code:
vecLeft = pev->origin + ( vecForward * ( flDist + sizeX ) ) - vecDir * ( sizeX * 3 );
vecRight = pev->origin + ( vecForward * ( flDist + sizeX ) ) + vecDir * ( sizeX * 3 );


Есть ли какой-то особый смысл во-первых, в прибавлении размера к множителю vecForward, и во-вторых, в выборе первого шага именно такой длины (размер * 3)?

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

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



Собственно, есть ли логическое обоснование этим числам, или это просто значения, которые Valve нашли наиболее подходящими в большинстве ситуаций?

__________________
I'm on github
I'm on opendesktop.org


Временная зона GMT. Текущее время 20:18.
Показать все 1 сообщений этой темы на одной странице

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