h0N0r 367 Опубликовано 8 Июля 2022 @Ghilli , начать с этого: \xrGame\ai\stalker\ai_stalker_fire.cpp (void CAI_Stalker::Hit). Мне же интересно, что делает это кусок кода: Скрытый текст if(eacFirstEye == cam_active) { xrXRC xrc; xrc.box_options(0); xrc.box_query(Level().ObjectSpace.GetStaticModel(), point, Fvector().set(VIEWPORT_NEAR,VIEWPORT_NEAR,VIEWPORT_NEAR) ); u32 tri_count = xrc.r_count(); if (tri_count) { _viewport_near = 0.01f; } else { xr_vector<ISpatial*> ISpatialResult; g_SpatialSpacePhysic->q_box(ISpatialResult, 0, STYPE_PHYSIC, point, Fvector().set(VIEWPORT_NEAR,VIEWPORT_NEAR,VIEWPORT_NEAR)); for (u32 o_it=0; o_it<ISpatialResult.size(); o_it++) { CPHShell* pCPHS = smart_cast<CPHShell*>(ISpatialResult[o_it]); if (pCPHS) { _viewport_near = 0.01f; break; } } } } из оригинального ТЧ 1.0007rc1 под vs2019: https://github.com/mortany/xray/blob/master/trunk/xr_3da/xrGame/ActorCameras.cpp#L227 Долго искал причину этого бага (всё из-за: _viewport_near = 0.01f;): https://www.youtube.com/playlist?list=PLNqMq1ELaaezZ_tM-nDFEjBmvaDUrhrtc Заменил значение в 2-х строчках на 0.2f, как в дефайне VIEWPORT_NEAR, и глюки пропали, но всегда есть сомнения, починил одно - сломал другое. В слитых исходниках за 2002 / 2007, в истории правок этого файла: 9 Oct 2006 (этого блока ещё нет): https://github.com/ixray-team/xray-vss-archive/blob/267da766e8d90ed97268f32fc5a6704a667ff0a7/xr_3da/xrGame/ActorCameras.cpp#L229 14 Oct 2006 (уже частично есть): https://github.com/ixray-team/xray-vss-archive/blob/89ff124d62a040316956f63212ed9c7d418c10d2/xr_3da/xrGame/ActorCameras.cpp#L225 Чуть выше, в этом же файле: Скрытый текст // Smooth out stair step ups if ((character_physics_support()->movement()->Environment()==peOnGround) && (flCurrentPlayerY-fPrevCamPos>0)){ Возможно ошибка, т.к. только здесь ==peOnGround, а в остальном коде ==CPHMovementControl::peOnGround, да и в ЗП также. https://sites.google.com/view/xray-sdk-0-4-smg Поделиться этим сообщением Ссылка на сообщение
h0N0r 367 Опубликовано 10 Июля 2022 08.07.2022 в 15:24, dsh сказал: Судя по всему - это такая реализация псевдо коллизии камеры. Так и есть, после правок - частичное проникновение за геометрию, но только при наклонах. Вспомнил, в ЗП бывает крутанёшь камеру (чуток или на 180) и можно увидеть мерцающий nosun. https://sites.google.com/view/xray-sdk-0-4-smg Поделиться этим сообщением Ссылка на сообщение
h0N0r 367 Опубликовано 15 Июля 2022 @macron , случайно нашёл (пока искал причину бага выше): Скрытый текст \xr_3da\xrGame\CarCameras.cpp bool CCar::HUDView() const { // не считать режимом худа, если в тачке от 1-го лица return FALSE; //active_camera->tag==ectFirst; } ... void CCar::OnCameraChange (int type) { if(Owner()) { if (type==ectFirst) { // Не скрывать игрока от 1-го лица Owner()->setVisible(TRUE); // FALSE } else if(active_camera->tag==ectFirst) { Owner()->setVisible(TRUE); } } ... } И нужно менять анимации, а то одна рука на руле, другая, типа, с волыной. В stalker_animation.omf есть нормальные. 1 https://sites.google.com/view/xray-sdk-0-4-smg Поделиться этим сообщением Ссылка на сообщение