Expropriator 2 118 Опубликовано 6 Августа 2015 Эффект Жоплера разгадан. Не буду таить. Расскажу всем как эта физика работает. Вдруг помру скоро. Эффект работает только на классе авто. Прыгающая модель, не есть что, а отдельный элемент с шейпом общей модели. Кость на отрыв Брик Форс и Брик Торг = 99, обязательно Джоинт по осям XY -1, 1 градус поворота. Материал не важен. Важна масса 1-10 кг и круглое сечение цилиндрического шейпа = 0.02. Заметьте, что на разных поверхностях эффект различен. Больше всего на земле и камне, меньше на воде. Физика такова, что при ударе о поверхность происходит отторжение шейпа. Но если увеличить массу до 50 например кг, то колебания будут затухать. Это не является багом (типа трупа латающего), нет, просто движок так понимает этот процесс. Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 21 Августа 2015 (изменено) Решил проблему в ЗП, вылет в авто, после смерти ГГ. Просто ГГ не умирает, и его не выкидывает из авто - наступает гамеовер как только, так сразу. Кстати, в ЗП, авто может переезжать на другую локу с ГГ через левелченджер, это так к слову. Осталось решить проблему со сменой векторов после сохранения (в управлении меняются координаты на 180 градусов) https://yadi.sk/d/GqZCPJwQia8kq1.6 Мб. xrGame.dll для Зова Припяти Исправления касаются только ГГ в авто: 1. Посадка в авто. 2. Анимация в авто. 3. Визуал ГГ от первого вида, вместо худа, в авто. 4. Вылет, при смерти в авто, исправлен. Можно закинуть в шапку темы, так как этот файл будет востребован. Автор правок: Дизель. Изменено 21 Августа 2015 пользователем Дизель 2 2 Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 21 Августа 2015 хорошо бы еще и исходники правки выкладывать или ссылку на репозиторий Не могу этого сделать. С репо - черепахами не работаю. А исходники боюсь кидать. Я принимаю, иногда, не стандартное мышление и подход к правкам, не хочу показаться идиотом. 1 Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 21 Августа 2015 (изменено) Пожалуйста, можете сами сделать. Раз просите. Вылет в ЗП при смерти в авто 001B:09CC7A3A xrGame.dll, CCharacterPhysicsSupport::EndActivateFreeShell(), x:\stalker_cop\project\engine.vc2008\xrgame\characterphysicssupport.cpp, 1191001B:09CC9A7D xrGame.dll, CCharacterPhysicsSupport::KillHit(), x:\stalker_cop\project\engine.vc2008\xrgame\characterphysicssupport.cpp, 516001B:09CC9C48 xrGame.dll, CCharacterPhysicsSupport::in_Hit(), x:\stalker_cop\project\engine.vc2008\xrgame\characterphysicssupport.cpp, 545001B:09CCA0C0 xrGame.dll, CCharacterPhysicsSupport::in_Die(), x:\stalker_cop\project\engine.vc2008\xrgame\characterphysicssupport.cpp, 1436001B:09A620A3 xrGame.dll, CEntityAlive::Die(), x:\stalker_cop\project\engine.vc2008\xrgame\entity_alive.cpp, 328001B:09A46DFE xrGame.dll, CActor::Die(), x:\stalker_cop\project\engine.vc2008\xrgame\actor.cpp, 730001B:09A5EFF8 xrGame.dll, CEntity::OnEvent(), x:\stalker_cop\project\engine.vc2008\xrgame\entity.cpp, 67001B:09A4C275 xrGame.dll, CActor::OnEvent(), x:\stalker_cop\project\engine.vc2008\xrgame\actor_events.cpp, 28001B:09A4C25A xrGame.dll, CActor::OnEvent(), x:\stalker_cop\project\engine.vc2008\xrgame\actor_events.cpp, 26001B:09A18907 xrGame.dll, CLevel::cl_Process_Event(), x:\stalker_cop\project\engine.vc2008\xrgame\level.cpp, 429001B:09A19BD6 xrGame.dll, CLevel::ProcessGameEvents(), x:\stalker_cop\project\engine.vc2008\xrgame\level.cpp, 491001B:09A19F89 xrGame.dll, CLevel::OnFrame(), x:\stalker_cop\project\engine.vc2008\xrgame\level.cpp, 625 ссылается на CharacterPhysicsSupport.cpp на функцию void CCharacterPhysicsSupport:: CreateShell Что я сделал? Закомментировал всю функцию после начала вылета: void CCharacterPhysicsSupport:: CreateShell ( CObject* who, Fvector& dp, Fvector & velocity ){xr_delete( m_collision_activating_delay );xr_delete( m_interactive_animation );destroy_animation_collision( );//DestroyIKController( );IKinematics* K=smart_cast( m_EntityAlife.Visual( ) );//animation movement controller issuesbool anim_mov_ctrl =m_EntityAlife.animation_movement_controlled( );CBoneInstance &BR = K->LL_GetBoneInstance( K->LL_GetBoneRoot( ) );Fmatrix start_xform; start_xform.identity( );CBlend *anim_mov_blend = 0;if( anim_mov_ctrl ){m_EntityAlife.animation_movement( )->ObjStartXform( start_xform );anim_mov_blend = m_EntityAlife.animation_movement( )->ControlBlend( );m_EntityAlife.destroy_anim_mov_ctrl( );BR.set_callback_overwrite (TRUE);}//u16 anim_root = K->LL_GetBoneRoot();u16 physics_root = anim_root;if( m_eType != etBitting ){physics_root = K->LL_BoneID( "bip01_pelvis" );K->LL_SetBoneRoot( physics_root );}//if( !m_physics_skeleton )CreateSkeleton( m_physics_skeleton );if( m_eType == etActor ){CActor* A=smart_cast( &m_EntityAlife );R_ASSERT2( A, "not an actor has actor type" );if( A->Holder( ) ) return;if( m_eState==esRemoved )return;}//////////////////////this needs to evaluate object box//////////////////////////////////////////////////////if( m_eType != etBitting )K->LL_SetBoneRoot( anim_root );for( u16 I = K->LL_BoneCount( )-1; I!=u16(-1); --I )K->LL_GetBoneInstance( I ).reset_callback( );//if( anim_mov_ctrl ) //we do not whant to move by long animation in rootBR.set_callback_overwrite (TRUE);//K->CalculateBones_Invalidate();K->CalculateBones (TRUE);if( m_eType != etBitting )K->LL_SetBoneRoot( physics_root );////////////////////////////////////////////////////////////////////////////if( m_pPhysicsShell )return;m_PhysicMovementControl->GetCharacterVelocity ( velocity );if( !m_PhysicMovementControl->CharacterExist( ) )dp.set( m_EntityAlife.Position( ) );else m_PhysicMovementControl->GetDeathPosition( dp );m_PhysicMovementControl->DestroyCharacter( );//shell createR_ASSERT2(m_physics_skeleton,"No skeleton created!!");m_pPhysicsShell=m_physics_skeleton;m_physics_skeleton=NULL;m_pPhysicsShell->set_Kinematics(K);m_pPhysicsShell->RunSimulation();m_pPhysicsShell->mXFORM.set(mXFORM);m_pPhysicsShell->SetCallbacks( );//if(anim_mov_ctrl) //we do not whant to move by long animation in rootBR.set_callback_overwrite (TRUE);if(!DoCharacterShellCollide())m_pPhysicsShell->DisableCharacterCollision();if( m_eType != etBitting )K->LL_SetBoneRoot( anim_root );K->CalculateBones_Invalidate();K->CalculateBones (TRUE);if( m_eType != etBitting )K->LL_SetBoneRoot( physics_root );//reset_root_bone_start_pose( *m_pPhysicsShell );m_flags.set(fl_death_anim_on,FALSE);m_eState=esDead;m_flags.set(fl_skeleton_in_shell,TRUE);if(IsGameTypeSingle()){m_pPhysicsShell->SetPrefereExactIntegration ();//use exact integration for ragdolls in singlem_pPhysicsShell->SetRemoveCharacterCollLADisable();}elsem_pPhysicsShell->SetIgnoreDynamic();m_pPhysicsShell->SetIgnoreSmall();AddActiveWeaponCollision();}void CCharacterPhysicsSupport:: EndActivateFreeShell ( CObject* who, const Fvector& inital_entity_position, const Fvector& dp, const Fvector & velocity ){VERIFY ( m_pPhysicsShell );VERIFY( m_eState==esDead );#ifdef DEBUGif( dbg_draw_ragdoll_spawn ){DBG_OpenCashedDraw();m_pPhysicsShell->dbg_draw_geometry( 0.2f, D3DCOLOR_XRGB( 255, 100, 0 ) );DBG_ClosedCashedDraw( 50000 );}#endifCollisionCorrectObjPos( dp );// m_pPhysicsShell->SetGlTransformDynamic(mXFORM);#ifdef DEBUGif( dbg_draw_ragdoll_spawn ){DBG_OpenCashedDraw();m_pPhysicsShell->dbg_draw_geometry( 0.2f, D3DCOLOR_XRGB( 255, 0, 100 ) );DBG_ClosedCashedDraw( 50000 );}#endif//fly back after correction//FlyTo(Fvector().sub(inital_entity_position,m_EntityAlife.Position()));#ifdef DEBUGif( dbg_draw_ragdoll_spawn ){DBG_OpenCashedDraw();m_pPhysicsShell->dbg_draw_geometry( 0.2f, D3DCOLOR_XRGB( 100, 255, 100 ) );DBG_ClosedCashedDraw( 50000 );}#endifFvector v = velocity;m_character_shell_control.apply_start_velocity_factor( who, v );#ifdef DEBUGif( death_anim_debug ){Msg( "death anim: ragdoll velocity picked from char controller =(%f,%f,%f), velocity applied to ragdoll =(%f,%f,%f) ", velocity.x, velocity.y, velocity.z, v.x, v.y, v.z );}#endif//m_pPhysicsShell->set_LinearVel( v );//actualize//m_pPhysicsShell->GetGlobalTransformDynamic(&mXFORM);//m_pPhysicsShell->mXFORM.set(mXFORM);//if( false && anim_mov_ctrl && anim_mov_blend && anim_mov_blend->blend != CBlend::eFREE_SLOT && anim_mov_blend->timeCurrent + Device.fTimeDelta*anim_mov_blend->speed < anim_mov_blend->timeTotal-SAMPLE_SPF-EPS)//.//{// const Fmatrix sv_xform = mXFORM;// mXFORM.set( start_xform );// //anim_mov_blend->blendPower = 1;// anim_mov_blend->timeCurrent += Device.fTimeDelta * anim_mov_blend->speed;// m_pPhysicsShell->AnimToVelocityState( Device.fTimeDelta, 2 * default_l_limit, 10.f * default_w_limit );// mXFORM.set( sv_xform );//}//IKinematics* K=smart_cast( m_EntityAlife.Visual( ) );//u16 root =K->LL_GetBoneRoot();//if( root!=0 )//{// K->LL_GetTransform( 0 ).set( Fidentity );//// K->LL_SetBoneVisible( 0, FALSE, FALSE );//}//K->CalculateBones_Invalidate();//K->CalculateBones (TRUE);} *>*>*> и еще я раскоментировал #include "../xrphysics/Physics.h" на всякий случай. Изменено 21 Августа 2015 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 21 Августа 2015 @-StalkMen-, возможно вылезит баг, но это не важно, после этой функции просто гамеовер - пофиг. Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 21 Августа 2015 @-StalkMen-, атач - детач кроме авто, где еще есть? Я не знаю примеров, где эта функция применяется. Я и говорю, что мой метод не верный. Моё желание поправить движок для авто, а остальное, я и в скриптах и конфигах доработаю. Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 21 Августа 2015 (изменено) @-StalkMen-, надо тестировать. Возможно, баг даже на авто будет, при взрыве транспорта, а ГГ жив. Надо проверить. Из двух зол, надо выбирать меньшее. Решите проблему другим путём. А мне для авторадео и так сойдёт. ---------- Проверил на взрыв техники: ГГ нормально вылетает из авто, без вылета. Я нечаянно скинул (сменил) ссылку на делку для авто на ЗП. Вот новая ссылка: https://yadi.sk/d/BUZns3YRiaatN1.6 мб. xrGame.dll Изменено 21 Августа 2015 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 21 Августа 2015 (изменено) У кого нибудь из соображающих, есть исходники сталкера любого? Гляньте пожалуйста туда. Возможно ли в колёсах авто, как то уменьшить влияние дифференциала или подключить блокировку, или АBS? Просто 4х осник Маз не хочет ехать, он сильно длинный и колёса обязательно какие нибудь висят и крутятся свободно, не давая другим толкать. Изменено 21 Августа 2015 пользователем Дизель 1 Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 22 Августа 2015 (изменено) @Сталкер Лом, стандартный бтр не буксует, потому как деревянный, он ничего не весит. Это пародия на физику транспорта. Я делаю тяжелые, почти в реальную массу авто, потому и динамика реальная (почти). Ладно, забудем про тему костей колёс. Это очень непростая тема. Это глубже, однако, копать надо, чем я предполагал. Изменено 22 Августа 2015 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 25 Августа 2015 (изменено) Исходники для ЗП 1602 с моими правками под автотранспорт. 1. Посадка в авто. 2. Анимация в авто. 3. Визуал ГГ от первого вида, вместо худа, в авто. (2 и 3 вид глючные) 4. Вылет, при смерти в авто, закомментирован. Скачать: http://www.blumka.ru/uploads/965756016/STALKER_COP.rar 188 Мб. Временно с можно качать Яндекса 107 Мб. 7zip. Нет места держать файл. На этом мои творения с движком заканчиваются. Всем удачи! Изменено 25 Августа 2015 пользователем Дизель 3 2 Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 5 Сентября 2015 (изменено) @HESH, а где исходники 1603? Я видел патч, но, а толку. Вот, db распаковал. А наверно к этому и binы надо? https://cloud.mail.ru/public/2cB2/6it2o8Bhi Про 03 патч, поясните, а то я уже движков других накачал, и собирался валить из сталкера? Изменено 5 Сентября 2015 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 11 Сентября 2015 @НаноБот, пошла работа. Хоть кому то это важно. Сейчас придёт "Тень" и меня покарает за флуд. Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 12 Сентября 2015 (изменено) HESH, есть Фрапс, кому надо качественно щелкнуть и видео самое крутое ( просто, видео - супер вес). Конечно это полезно новый формат, но не стоит так сильно, прям заморачиваться. Изменено 12 Сентября 2015 пользователем Дизель 2 Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 12 Сентября 2015 @Forser, человек когда хочет сделать качественный скрин - всегда готовится к этому заранее. Невозможно в игре сделать спонтанно, тем более без хорошего освещения, хороший кадр. Сьёмка скрина сродни фотографированию. Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 12 Сентября 2015 (изменено) @Forser, кому интересно, можете посмотреть на эксперимент скриншота и фрапса https://yadi.sk/d/4NARlQXKj3dsB5 мб. Фрапс более-менее не прихотлив к освещению. Кстати, по форматам, самый лучший на мой взгляд ТГА (см. эксперимент), а остальные примерно того же качества, худший JPEG. Изменено 12 Сентября 2015 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 17 Сентября 2015 @SkyLoader, в ЗП подключил к авто у колёс с соприкосновением материалов велмарки - появился квадратик размером примерно сантиметров 20х20 под колесом и то появление только при ударе колёс о поверхность. Эта запись повлияет на 95% появление велмарков? Охота, что бы велмарки появлялись, да же не от удара. Да и вообще меня не устраивает квадратный велмарк. Можно ли сделать постоянный шлейф велмарков, для следов колёс? И как то изменить пропорции квадрата на прямоугольник с заданными размерами? Вообще, я опять ударился во флуд, можете удалить комментарий. Я наверно попутал тему. Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 17 Сентября 2015 (изменено) @SkyLoader, я не силён в понятиях - для меня всё велмарки. Хотя я знаю, чем они отличаются. Бледмарки значит? Движок править? Досадно. Опять "Тень" умничает: я оговорился. Я знаю, что такое bloodmark\wallmark. Изменено 18 Сентября 2015 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 30 Сентября 2015 @Forser, а зачем его отключать? Это же для логов вылетов предназначено, и использовалось ранее не только в Сталкере. Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 30 Сентября 2015 BugTrap для дампов вроде бы нужен Я не знаю конкретно для чего, но для меня слово Дамп ассоциируется с памятью. То бишь BugTrap чистит память? Короче, я молчу, так как не силён в движке. Пусть Тень нам разъяснит, что и как. Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 1 Октября 2015 Есть ли правки движка ЗП для сетевухи? В частности интересует подключение класса авто. Или движок тут не причём? Поделиться этим сообщением Ссылка на сообщение