HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Помогите! Сдвиг камеры от 3 лица в лево XX
Сдвиг камеры от 3 лица в лево
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Next Day
Частый гость

Дата регистрации: Mar 2017
Проживает: Электросталь
Сообщений: 55
Возраст: 33

Рейтинг



Помогите! Сдвиг камеры от 3 лица в лево XX

Всем доброва дня и крепкова здоровья.
Вот уже приличное время пытался сделать сдвиг камеры от 3 лица(thirdperson)
что бы модель сдвинулась в лево в хл есть такое.
Консольные команды для вида от 3 лица
чтобы крутить камеру
cl_pitchup - можно сделать чтоб можно было смотреть вверх ногами
cam_idealdist - дистанция камеры
cam_idealpitch - наклон камеры
cam_idealyaw - поворот камеры
chase_active - второй вариант вида от третьего лица.
chase_back - на сколько камера отдалена
chase_right - на сколько камера уходит в право (чтобы влево - пиши с минусом)
chase_up - на сколько камера уходит вверх

Вот а в XASH таких команд нет меня интересует команда chase_right чтобы от третьего лица сместить модель игрока в лево ,а то она по центру.

Добавлено 06-08-2020 в 01:43:

Ku2zoff Мне подсказал что нужно искать в файле in_camera.cpp, но я так и не смог сам эту команду добавить.
Если кто знает что и куда надо добавить помогите пожалуйста!!!!

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

Старое сообщение 05-08-2020 22:43
- За что?
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4415
Возраст: 34

Рейтинг



Начни чтоли с более простого, вот с этим форком кваки можешь поэкспериментировать: http://www.celephais.net/fitzquake/

Тебе видимо нужно взять углы viewangles или cl_viewangles, сделать им AngleVectors(NULL, right, NULL ) и потом взять позицию камеры (vieworg?) и прибавить к ней вектор right. Только надо как-то избежать постоянного наращивания позиции камеры на размер этого вектора, завести другую переменную или может брать оригин не камеры а игрока.

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

Старое сообщение 06-08-2020 01:32
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



C++ Source Code:
VectorMA( ppparams->vieworg, pparams->right, -50.0, pparams->vieworg );

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 06-08-2020 09:05
-
Next Day
Частый гость

Дата регистрации: Mar 2017
Проживает: Электросталь
Сообщений: 55
Возраст: 33

Рейтинг



Спасибо что пытаетесь помочь.
Дядя Миша а в какой файл надо это добавить?
Я копал в файле r_view.cpp туда надо?

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

Старое сообщение 06-08-2020 09:46
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Next Day r_view.cpp, функция должна называться V_CalcThirdPersonRefdef.
Кстати, как сделаешь, проверь прицеливание. Когда я крутил квары chase_right/left, камера уезжала куда надо и прицел тоже. А вот игрок продолжал стрелять туда, где рыньше находился прицел.

Отредактировано Ku2zoff 06-08-2020 в 10:51

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

Старое сообщение 06-08-2020 10:48
- За что?
Next Day
Частый гость

Дата регистрации: Mar 2017
Проживает: Электросталь
Сообщений: 55
Возраст: 33

Рейтинг



Ну вообщем что то не работает


//==========================
// V_CalcThirdPersonRefdef
//==========================
void V_CalcThirdPersonRefdef( struct ref_params_s * pparams )
{
VectorMA( pparams->vieworg, pparams->right, -50.0, pparams->vieworg );///ставил в разные места функции
static float lasttime, oldz = 0;
pparams->vieworg = pparams->simorg;
pparams->vieworg += pparams->viewheight;
pparams->viewangles = pparams->cl_viewangles;

V_CalcSendOrigin( pparams );

// this is smooth stair climbing in thirdperson mode but not affected for client model
if( !pparams->smoothing && pparams->onground && pparams->simorg[2] - oldz > 0.0f )
{
float steptime;

steptime = pparams->time - lasttime;
if( steptime < 0 ) steptime = 0;

oldz += steptime * 150.0f;

if( oldz > pparams->simorg[2] )
oldz = pparams->simorg[2];
if( pparams->simorg[2] - oldz > pparams->movevars->stepsize )
oldz = pparams->simorg[2] - pparams->movevars->stepsize;

pparams->vieworg[2] += oldz - pparams->simorg[2];

}
else
{
oldz = pparams->simorg[2];
}

lasttime = pparams->time;

V_GetChaseOrigin( pparams->viewangles, pparams->vieworg, cl_chasedist->value, pparams->vieworg );

float pitch = pparams->viewangles[PITCH];

// normalize angles
if( pitch > 180.0f )
pitch -= 360.0f;
else if( pitch < -180.0f )
pitch += 360.0f;

// player pitch is inverted
pitch /= -3.0;

cl_entity_t *ent = GET_LOCAL_PLAYER();

// slam local player's pitch value
ent->angles[PITCH] = pitch;
ent->curstate.angles[PITCH] = pitch;
ent->prevstate.angles[PITCH] = pitch;
ent->latched.prevangles[PITCH] = pitch;

}

Добавлено 06-08-2020 в 15:08:

Если добавить в начале файла #define VectorMA
то ошибки конечно нет ,но вид все равно не меняется.
Что я сделал не так

Вложение: ошибка.bmp (768.1 кб)
Этот файл был скачан 328 раз.

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

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

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4415
Возраст: 34

Рейтинг



Next Day GetChaseOrigin обновляет vieworg, так что после неё ставь.
И картинки конверти в JPG перед выкладыванием.

Добавлено 06-08-2020 в 21:49:

VectorMA похоже в ксаше нету, возьми её в спирите и целиком размести где-то над ThirdPersonRefDef. VectorMA это три строчки, причём она бывает со звёздочками и без, попробуй что заработает.
Вообще я бы как начинающий, пока на Спирите и остался а не лез сразу в Ксаш.

Добавлено 06-08-2020 в 22:00:

Ku2zoff для этих целей можно утащить код из дядемишиного танка, где флаг Match Target.

Добавлено 06-08-2020 в 22:06:

или из кваки из chase_active

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

Старое сообщение 06-08-2020 15:06
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Цитата:
Next Day писал:
Ну вообщем что то не работает

C++ Source Code:
VectorMA( pparams->vieworg, pparams->right, -50.0, pparams->vieworg );///ставил в разные места функции
static float lasttime, oldz = 0;
pparams->vieworg = pparams->simorg;


Да вот хотя бы на это чудо поглядеть. Сначала VectorMA - задаём нужную нам позицию новым кодом, а потом сразу же pparams->vieworg = pparams->simorg, задаём другую позицию оригинальным кодом. Естественно, оно не работает. Вставляй новый код в конец функции. И скопипасти VectorMA откуда-нибудь, например из pm_math.c оригинальной халфы. Только там порядок аргументов не такой, как привёл Дядя Миша. МБ он просто ошибся.

Добавлено 06-08-2020 в 22:21:

Цитата:
Crystallize писал:
утащить код из дядемишиного танка, где флаг Match Target

Crystallize а скажи-ка, в чём соль этого флага? Я как-то давно делал так, чтобы при юзании танка прицел не пропадал. Так танк всегда стреляет точно в прицел, насколько ему позволяют углы поворота по осям.

Отредактировано Ku2zoff 06-08-2020 в 15:25

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

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

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4415
Возраст: 34

Рейтинг



Цитата:
Ku2zoff писал:
Так танк всегда стреляет точно в прицел, насколько ему позволяют углы поворота по осям.

Ну ты сам всё рассказал.
"при ручном управлении ствол танка целится туда же, куда смотрит игрок; удобно для контролирования множества пушек"

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

Старое сообщение 06-08-2020 15:26
- За что?
Next Day
Частый гость

Дата регистрации: Mar 2017
Проживает: Электросталь
Сообщений: 55
Возраст: 33

Рейтинг



Crystallize С картинками понял если что то в .JPG
Спирит не подходит нужен ксаш.Кодить особо не собираюсь ,просто нужно пара
фишек прикрутить например эта очень нужна.

Ku2zoff Ставил я код и в конце и само собой после GetChaseOrigin просто на примере от без исходности чисто случайно поставил самую тупую попытку в начале функции.


Насчет VectorMA ну если из хл то это ставить ?
void VectorMA (const vec3_t veca, float scale, const vec3_t vecb, vec3_t vecc)
{
vecc[0] = veca[0] + scale*vecb[0];
vecc[1] = veca[1] + scale*vecb[1];
vecc[2] = veca[2] + scale*vecb[2];
}
ну естественно не компилит ошибки,может что то другое?

А в спирите такой функции не нашел, в каком файле искать?

Мужики а по поводу код из Дяде Мишиного танка, где флаг Match Target что то вообще не понял.

В квейк лезть я там вообще потеряюсь.

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

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

Старое сообщение 06-08-2020 16:32
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
Ku2zoff писал:
Только там порядок аргументов не такой, как привёл Дядя Миша. МБ он просто ошибся.

второй и третий перепутал наверное

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 06-08-2020 17:02
-
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4415
Возраст: 34

Рейтинг



Цитата:
Next Day писал:
Насчет VectorMA ну если из хл то это ставить ?

Да, я сейчас добавил это перед функцией, потом вписал в функцию ту строчку непосредственно использующую VectorMA (только циферка должна идти вторым аргументом а right третьим) и у меня всё скомпилилось.

Добавлено 07-08-2020 в 00:21:

Цитата:
Next Day писал:
А в спирите такой функции не нашел, в каком файле искать?

Привыкай пользоваться поиском по проекту с кодом.

Цитата:
Next Day писал:
Мужики а по поводу код из Дяде Мишиного танка, где флаг Match Target что то вообще не понял.

Это чтобы пули реально летели туда где прицел на экране, а не на 50 юнитов в сторону.

Цитата:
Next Day писал:
В квейк лезть я там вообще потеряюсь.

не потеряешься, тамошний chase.c даже проще чем здешний r_view.cpp

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

Ну не поваляешь не поешь. Всё всегда устроено не так как мы ожидаем.

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

Старое сообщение 06-08-2020 17:21
- За что?
Next Day
Частый гость

Дата регистрации: Mar 2017
Проживает: Электросталь
Сообщений: 55
Возраст: 33

Рейтинг



Crystallize Да у меня тоже скомпилировалось.

void VectorMA (const vec3_t veca, float scale, const vec3_t vecb, vec3_t vecc)
{
vecc[0] = veca[0] + scale*vecb[0];
vecc[1] = veca[1] + scale*vecb[1];
vecc[2] = veca[2] + scale*vecb[2];
}


//==========================
// V_CalcThirdPersonRefdef
//==========================
void V_CalcThirdPersonRefdef( struct ref_params_s * pparams )
{
static float lasttime, oldz = 0;

pparams->vieworg = pparams->simorg;
pparams->vieworg += pparams->viewheight;
pparams->viewangles = pparams->cl_viewangles;

V_CalcSendOrigin( pparams );

// this is smooth stair climbing in thirdperson mode but not affected for client model
if( !pparams->smoothing && pparams->onground && pparams->simorg[2] - oldz > 0.0f )
{
float steptime;

steptime = pparams->time - lasttime;
if( steptime < 0 ) steptime = 0;

oldz += steptime * 150.0f;

if( oldz > pparams->simorg[2] )
oldz = pparams->simorg[2];
if( pparams->simorg[2] - oldz > pparams->movevars->stepsize )
oldz = pparams->simorg[2] - pparams->movevars->stepsize;

pparams->vieworg[2] += oldz - pparams->simorg[2];
}
else
{
oldz = pparams->simorg[2];
}

lasttime = pparams->time;

V_GetChaseOrigin( pparams->viewangles, pparams->vieworg, cl_chasedist->value, pparams->vieworg );


float pitch = pparams->viewangles[PITCH];

// normalize angles
if( pitch > 180.0f )
pitch -= 360.0f;
else if( pitch < -180.0f )
pitch += 360.0f;

// player pitch is inverted
pitch /= -3.0;

cl_entity_t *ent = GET_LOCAL_PLAYER();

// slam local player's pitch value
ent->angles[PITCH] = pitch;
ent->curstate.angles[PITCH] = pitch;
ent->prevstate.angles[PITCH] = pitch;
ent->latched.prevangles[PITCH] = pitch;

VectorMA( pparams->vieworg, -50.0, pparams->right, pparams->vieworg );
}


Но самое интересное то что камера не сместилась совсем

Добавлено 06-08-2020 в 21:23:

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

Старое сообщение 06-08-2020 18:23
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Так с чего она сместится, если pparams->right не был просчитан. Он только в firstperson считается. Добавь перед этой строчкой вот такую:

C++ Source Code:
AngleVectors( pparams->cl_viewangles, pparams->forward, pparams->right, pparams->up );

Но вообще тыкать код наугад - это тупиковый путь, время тратится, результата нет.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 06-08-2020 18:53
-
Next Day
Частый гость

Дата регистрации: Mar 2017
Проживает: Электросталь
Сообщений: 55
Возраст: 33

Рейтинг



Дядя Миша ты прав насчет тыканья ,но другого пути для меня пока нет да и были удачи +- срабатывало ,но не сейчас!

// slam local player's pitch value
ent->angles[PITCH] = pitch;
ent->curstate.angles[PITCH] = pitch;
ent->prevstate.angles[PITCH] = pitch;
ent->latched.prevangles[PITCH] = pitch;

AngleVectors( pparams->cl_viewangles, pparams->forward, pparams->right, pparams->up );

VectorMA( pparams->vieworg, -50.0, pparams->right, pparams->vieworg );
}

Вот так надо добавить? если да то Дядя Миша все равно сдвига нет!

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

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



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


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

Временная зона GMT. Текущее время 10:50. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Помогите! Сдвиг камеры от 3 лица в лево XX
Сдвиг камеры от 3 лица в лево
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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