Перейти в начало страницы

Здравствуйте, гость ( Авторизация | Регистрация )

Gameru.net останавливает работу в связи с вторжением армии РФ в Украину. Следите за дальнейшими анонсами.
Support Gameru!

> Помощь по разделу

Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов

> Редактирование движка
RayTwitty
сообщение 22.01.2016, 17:18
Сообщение #4441


Игровой Бог
**********************

Репутация:   648  
Группа: Участник
Сообщений: 5354
Регистрация: 24.09.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа



Редактирование собранного движка
Проект X-Ray extensions и его вики
Lua-перехватчик от alpet
xrLuaFix от RvP
xrLuaFix в редакции от Artos
xrLuaFix в редакции от svarog2741
LuaXML библиотека парсинга xml-файлов из скриптов (подключается при помощи функции require, которая есть в xrLuaFix)
NoProtect 1.0006 исполнительные файлы из Steam-версии без защиты
Документация к X-Ray (11.10.2004)
Файл заголовков от отладочного 6 патча
Cut X-Ray
Цель проекта - создание отдельных изменений движка игры с их последующей комбинацией с другими правками.
Авторы: SkyLoader, _призрак_
Для платформ: ТЧ 1.0004 и 1.0006, ЧН 1.5.10, ЗП 1.6.02
Адрес проекта на Google Code: https://code.google.com/p/cut-x-ray-project/
Страница на Moddb: http://www.moddb.com/mods/cut-x-ray-project-soc-cs-cop
Пак 1
1. Исправление вылета "can't find rank" для оружий.

2. Смерть от первого лица.
Видео: https://www.youtube.com/watch?v=c-4dNyvizxY

3. Collide
Возвращена коллизия мертвых тел с неписями и актором, как она сделана в старой физике билдов.
Видео: https://www.youtube.com/watch?v=1xNn04f3djc

4. Круглый прицел.
Возвращен круглый прицел вместо перекрестья, как билдах.

5. Исправление вида от 3-го лица.
Изменено положение камеры от 3-го лица (1). Стрельба идет по перекрестью, а не по направлению актора. Если включить вид от 3-го лица (1) и удерживать Shift, то ГГ будет автоматически целиться в ближайшего непися или монстра.
Проблемы: Стрельба по перекрестью идет также при виде от 3-го лица (2). Если при автоматическом нацеливании непись/монстр удалится или перейдет в оффлайн, будет движковый безлоговый вылет. Я думал вырезать это нацеливание, но решил оставить.
Пак 2
1. Luminosity progress (только ТЧ)
Возвращение шкалы освещения вместо шкалы "заметности" ГГ, как в билдах.

2. Запрет на доставание оружия в машине (только ТЧ и ЧН) и на лестнице (ТЧ, ЧН, ЗП).

3. Руки на руле в машине. (только ТЧ и ЧН)
Видео: https://www.youtube.com/watch?v=nYrnrfGkO7Y

4. Отсутствие распознавания неписей перекрестием:
При наведении на непися перекрестье имеет дефолтный цвет. Также не показывает информацию о неписе, если смотреть на него.

5. Bind_object:
Возможность использовать скрипты в мультиплеере.

6. Из оружия на классе бинокля можно стрелять (только ТЧ)
Пак 3
1. Включение некоторых команд без использования ярлыка. Можно патчить по отдельности. Команды: -smap_4096 (максимально улучшенные карты теней), -mblur (включение блюра).

2. Измененная анимация безоружного гг.

3. Увеличение дистанции диалога с неписями (для создания сценок на расстоянии)

4. Исправление вылета при использовании предметов из трупов неписей.
В отличии от версии Kolmogor'а, здесь отключено само меню использования.

5. Возможность поднимать болты как обычные инвентарные предметы (комбинировать с модом Charsi "Заканчивающиеся болты")
Скачать все паки
Правки от RayTwitty aka Shadows
Geometry LOD fix (CS 1.5.10) – расширение диапазона консольной команды r__geometry_lod
Camblu crosshair for build 1865 – замена перекрестия прицела на кружок в билде 1865
Vertex buffer fix for NC Project – исправление вылета по переполнению буфера в NC Project
NO 100 sovetov fix (COP 1.6.02) – убирает надписи "100 советов" с экрана загрузки
Demo Record fix (SOC 1.0006) – убирает красные надписи в режиме demo_record
Weapon Bobbing Beta (SOC 1.0006) – раскачка оружия при ходьбе (бета-версия)
Build Loadscreen (SOC 1.0006) – билдовский экран загрузки со статичным изображением
Detail Density fix (SOC 1.0006) – расширение диапазона консольной команды r__detail_density
Mipbias fix (SOC 1.0006) – расширение диапазона консольных команд r1_tf_mipbias и r2_tf_mipbias
No Quick Use fix (SOC 1.0006) – запрет на использование аптечек и бинтов по быстрым клавишам
Sun Near fix (SOC 1.0006) – расширение диапазона консольной команды r2_sun_near
Target Font (SOC 1.0006) – замена шрифта под перекрестием прицела на шрифт DI
Unload Magazine fix (SOC 1.0006) – фикс скриптовой функции unload_magazine - теперь патроны разряжаются в инвентарь
PNG Screenshots (SOC 1.0006) – игра теперь делает качественные скриншоты в формате png

Скачать все правки
Правки от K.D.
xrPatch v0.8 – патчер для увеличения радиуса прорисовки травы
detail radius+density fix [SOC 1.0006] – добавляет регулировку радиуса отрисовки травы через консольную команду и расширяет диапазон регулировки плотности травы до 0.02
Правки от macron
Исправленный экзешник для SoC 1.0006
Доработанный и исправленный экзешник для ТЧ 1.0006 (на основе Steam-версии без защиты)
Включает в себя исправления вылетов, а также очистку лога игры от засоряющих сообщений. Более подробное описание внутри архива.

Ссылка: https://yadi.sk/d/At9Tw0ueSaDyS
X-Ray extensions portable
Портативная версия расширений движка "X-Ray extensions"
Платформы: ТЧ 1.0006, ЧН 1.5.10, ЗП 1.6.02
Эта версия имеет все нужные библиотеки и патчеры, а также настроенные bat-файлы для успешной компиляции. Более подробное описание внутри архива.

Ссылка: https://yadi.sk/d/OLYPbDXWjyEkH
Правки от Kolmogor
Правленный xrGame для SoC 1.0004
Изменения:
1. Добавлена консольная команда fov [5.0, 180.0] - изменяет глобальный FOV камеры.
2. Добавлена консольная команда k_ammo_on_belt [on\off] - включает\выключает использование патронов с пояса.
3. Артефакты работают из рюкзака, а пояс служит контейнером.

Ссылка: http://rusfolder.com/42636653
Правки от Kontro-zzz
Изменение значения hud_fov
Правки фиксированных значений параметра hud_fov - 0.37 либо 0.53, для CS 1.5.10 и для билда 3120.
Должно работать на GOG версии и no DVD.
Редактирование исходников
Скачать все исходники отсюда или с оригинальных постов SoC 1.0007rc1 SoC и CS CoP X-Ray 2
Репозитории

[SoC]
() Alpet & KD / оригинальное репо [Архивная ценность]
() xrDev [Архивная ценность]
() CleanXR [Архивная ценность]
() KRoddin [Архивная ценность][/b]
() Lost Alpha old [Архивная ценность]
() Репозиторий OGSE | Самый актуальный форк (KRoddin) | Версия от Abramcumner с небольшими исправлениями
() 1exx [Архивная ценность]
() Shkiper2012 [Архивная ценность]
() Morrey (dx10) [Архивная ценность]
() OP Engine (Winsor)
() Kondr48 [Архивная ценность]

[CS]
() RedPython [Архивная ценность]
() xrDev [Архивная ценность]
() OpenXRay [Архивная ценность]
() Charsi82 [Архивная ценность]
() Abramcumner | drksnc (MP) [Архивная ценность]
() RainbowZerg [Архивная ценность]

[CoP]
() Forser
() OpenXRay
() CoC | Demosfen | Last Day
() Abramcumner
() Im-Dex [Архивная ценность]
() xrDev [Архивная ценность]
() Tron [Архивная ценность]
() mrmnwar [Архивная ценность]
() Avo [Архивная ценность]
() vincent-t [Архивная ценность] | Старый репозиторий
() Shoкer
() Morrey CS-COP [Архивная ценность]
() Morrey [Архивная ценность]

[2.0]
() Saas
() xrOxy
Компиляторы x64: SoC CS CoP
NDA GSC
Оригинальные версии движков
Могут понадобиться для восстановления оригинальных библиотек.
SoC SoC ENG CS CoP
GOG version [1.0006, 1.5.10, 1.6.02]
Multi-patch version [1.0006, 1.5.10, 1.6.02]
Официальный мультиплеерный (невышедший) патч для SoC 1.0007rc1.
Уроки
Изменение плотности травы и создание патча через IDA Pro
Автор: _призрак_
edited by: RayTwitty aka Shadows

Для редактирования нам понадобится программа IDA Pro.

1. Запускаем IDA Pro.
2. Загружаем бинарник рендера xrRender_R1.dll или xrRender_R2.dll.
3. Теперь необходимо найти, где регистрируется консольная команда. Жмем Ctrl+T и вводим r__detail_density.
4. Находим функцию и тщательно ее разбираем (я ее полностью разбирать не буду, только укажу, где задаются параметры:
Код регистрации консольной команды
Код
fld ds:flt_10064400 -- нижнее ограничение равное 0.6
or dword_1007CACC, 8
sub esp, 8
fstp [esp+30h+var_2C]
mov ecx, offset unk_1007CA9C
fld ds:flt_10064380 -- верхнее ограничение равное 0.2
fstp [esp+30h+var_30]
push offset aSs; "ЪЩЩ>"
push offset aR__detail_dens; "r__detail_density"
call ds:??0CCC_Float@@QAE@PBDPAMMM@Z; CCC_Float::CCC_Float(char const *,float *,float,float)
push offset sub_1005E080; void (__cdecl *)()
call _atexit
add esp, 4
Если вы заметили, чтобы трава стала плотней нужно уменьшить параметр, а чтобы травы стало меньше, нужно параметр увеличить
5. Нам нужно увеличить плотность травы: следовательно нужно изменить верхнее ограничение. Как это сделать? Есть три варианта:

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

Второй: взять другую, уже существующую переменную с подходящим значением. Хороший вариант которым я и воспользовался. Но и тут есть недостаток - переменных в бинарнике не так уж и много и можно просто не найти нужную.

Третий: создать переменную. Отличный вариант. Единственный минус - я не знаю как это сделать smile.gif

Я пошел по второму пути. Два раза щелкнув на ds:flt_10064380, IDA отправила меня в дебри под названием .rdata. Там я нашел переменную, которая называлась - flt_1006452C и которая имела значение 0.0720999.
Насколько я понял, flt_1006452C - не является названием переменной, это сборка из двух показателей - (тип числа)_(смещение). В нашем случае это число типа float, которое находится по адресу 1006452C. Ну что же, приступим к редактированию!
6. Отправляемся в самое начало файла. Как? Сверху есть что-то типа статус-бара - строка состоящая из синего, серого, черного цвета. Нажимаем там в любом месте мышкой и ведем влево до конца.
7. Опять ищем r__detail_density. Находим в этой функции строку fld ds:flt_10064338. Дальше самое интересное - жмем на вкладку Hex View и там у нас выделяются какие-то цифры. Это наша переменная 10064338, только написано наоборот. Сравните:
Код
38 43 06 10
10 06 43 38
Похоже, не правда ли? smile.gif
8. Начинаем редактировать. Нам нужно поменять 4338 на 452C (т.е. заменить ссылку с одной переменной на другую). Жмем правой кнопкой мыши на этих цифрах и выбираем пункт Edit. Меняем 38 43 на 2С 45. Дальше жмем где-нибудь в коде (это нужно сделать обязательно!).
9. После этого жмем правой кнопкой мыши и выбираем commit changes. Таким образом, мы поменяли ссылку на переменную и теперь верхнее ограничение будет равно значению из другой переменной.
Но IDA не меняет исходный файл. В нашем случае мы можем только создать файл изменений. Делается это так: File -> Produce file -> Create DIF file. Назовем его test. Этот файл можно открыть при помощи блокнота и посмотреть, что получилось.
10. Теперь необходимо внести изменения из этого файла в движок. Это можно сделать при помощи патчера bpatch. Качаем, смотрим и запускаем bpatch.cmd. Я думаю, что батник вы сможете изменить самостоятельно (настроить пути файлов и т.п.) - там все элементарно.
11. Все! Изменения внесены в движок, можно тестировать smile.gif

Огромное спасибо Kolmogor'у и malandrinus'у. Если бы не они, я бы ничего не сделал. Спасибо вам еще раз.
Спасибо и Rolan'у, с которым я очень много беседовал и тоже узнал много чего smile.gif




Сообщение отредактировал RayTwitty - 27.08.2021, 00:15
Перейти в начало страницы
 
242 страниц V  « < 221 222 223 224 225 > »   
Начать новую тему
Ответов
mortan
сообщение 04.02.2020, 20:52
Сообщение #4442


Продвинутый геймер
********

Репутация:   16  
Группа: Участник
Сообщений: 222
Награды: 3
Регистрация: 28.06.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Zagolski, скинь, плиз, пример такой модели.
Перейти в начало страницы
 
ed_rez
сообщение 05.02.2020, 00:23
Сообщение #4443


Почти Игроман
*********

Репутация:   42  
Группа: Участник
Сообщений: 626
Награды: 1
Регистрация: 10.12.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Дизель @ 04.02.2020, 15:23) *
пару палок дёгтя кинет

Нема дегтя. biggrin.gif Я вообще о таком впервые слышу. Я еще понимаю, когда скелеты, как у худ ЗП, там все понятно. Движковая какая недоработка. Если на одном скелете это происходит, вероятно к одним текстурам подключен параллакс, а к другим нет. Такое видел, знатное смещение происходит.

Цитата(Zagolski @ 04.02.2020, 15:29) *
так там модель скелета состоит из 16 групп, причем на всех одинаковый материал

Давай переведу на нормальные термины. Не скелет, а мешь, т.к. у динамической модели ТЧ только одна мешь. У статики может быть немерено мешей.
Есть кривой термин "меш", родился в моддинге на Шталкер, когда мешью стали называть материалы. Поэтому и сам использую это слово в моддинге, чтобы не вводить в ступор других участников. biggrin.gif

Цитата(mortan @ 04.02.2020, 18:15) *
Material ID?

Именно так.

Цитата(mortan @ 04.02.2020, 18:15) *
При экспорте сдк объединяет все материалы с одинаковой текстурой в одну

Дополню недописанное, чтобы не путать людей. Материалы должны иметь также идентичные настройки шейдера, компила и игрового материала. Модельный материал и игровой материал- разные вещи.
Цитата(Zagolski @ 04.02.2020, 18:32) *
Почему тогда при импорте этой ogf в милку группы опять разделены?

Потому, что разные настройки у всех материалов. Не группы, а материалы!

Сообщение отредактировал ed_rez - 05.02.2020, 00:10


--------------------
Перейти в начало страницы
 
ed_rez
сообщение 05.02.2020, 00:38
Сообщение #4444


Почти Игроман
*********

Репутация:   42  
Группа: Участник
Сообщений: 626
Награды: 1
Регистрация: 10.12.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(mortan @ 04.02.2020, 19:48) *
скинь, плиз, пример такой модели.

Присоединяюсь, ибо ни фига не понятно. Юзать не собираюсь. Я чужого, окромя, ПЫС не юзаю. Мне проще самому сделать, чем исправлять.


--------------------
Перейти в начало страницы
 
ed_rez
сообщение 05.02.2020, 00:59
Сообщение #4445


Почти Игроман
*********

Репутация:   42  
Группа: Участник
Сообщений: 626
Награды: 1
Регистрация: 10.12.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Zagolski @ 04.02.2020, 15:29) *
так там модель скелета состоит из 16 групп, причем на всех одинаковый материал

16 материалов, которые разнообразно настроены. Вот тебе пример. Берем модель ПЫС, создаем из, к примеру, 1 материала еще один материал, к примеру, пистолета, настраиваем его, что этот материал имеет шейдер weapon, компиль и игровой материал дефолтный.
Пример, http://sendfile.su/1543112
Должно быть 3 материала. Даже смотреть не буду, что у меня после компила ogf получилось, уверен!

Сообщение отредактировал ed_rez - 05.02.2020, 01:39


--------------------
Перейти в начало страницы
 
Zagolski
сообщение 05.02.2020, 09:28
Сообщение #4446


Почти Игроман
*********

Репутация:   59  
Группа: Участник
Сообщений: 629
Награды: 1
Регистрация: 13.12.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(ed_rez @ 05.02.2020, 00:19) *
Не группы, а материалы!

Материалы в милке в другой закладке идут - там да, материалы. А то что у меня на скрине - это группы, там сверху на закладке написано Groups. Мне же не спорить с самой программой? Возможно в милке какие-то специфичные наименования, не как в более известных 3д редакторах. Не знаю, я не моделер.

Вот модель скелета. После скачивания переименовать в .7z

Сообщение отредактировал Zagolski - 05.02.2020, 09:52
Прикрепленные файлы
Прикрепленный файл  skelet_crash.zip ( 268,07 килобайт ) Кол-во скачиваний: 57
 
Перейти в начало страницы
 
mortan
сообщение 05.02.2020, 14:13
Сообщение #4447


Продвинутый геймер
********

Репутация:   16  
Группа: Участник
Сообщений: 222
Награды: 3
Регистрация: 28.06.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Zagolski, 15 костей с 15 сарфейсами, которые и есть Material ID biggrin.gif Зачем так делать - непонятно, в этом случае действительно все 15 сарфейсов попадают в OGF... Да и вообще судя по логу сплит идёт таки по костям.
Перейти в начало страницы
 
Zagolski
сообщение 05.02.2020, 14:27
Сообщение #4448


Почти Игроман
*********

Репутация:   59  
Группа: Участник
Сообщений: 629
Награды: 1
Регистрация: 13.12.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Недавно встречал ванильную модель баржи на болотах, вот она:

Вроде это динамика, хотя может и статика. В ней ~28 групп (не помню точно). То есть эта баржа обрабатывается как 28 отдельных моделей. Куда это годится?
Завод нефтеперегонный в центре болот тоже около того.
Перейти в начало страницы
 
ed_rez
сообщение 05.02.2020, 19:13
Сообщение #4449


Почти Игроман
*********

Репутация:   42  
Группа: Участник
Сообщений: 626
Награды: 1
Регистрация: 10.12.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(mortan @ 05.02.2020, 13:09) *
Зачем так делать - непонятно

Предположу, но не факт. Мне нужно разместить эту модель, как статику в разных позах и с разными разрушениями. Скелет позволяет быстро сделать. Затем скелет удаляется, а статическая модель остается. Годится для локаций. Иного применения разделения на столько материалов не вижу.

Цитата(Zagolski @ 05.02.2020, 13:23) *
Куда это годится?

Если статика, то очень даже годится, если модель разбита на множество мешей. Удобно работать в редакторе, а также создавать сектора,... на локациях.


--------------------
Перейти в начало страницы
 
Zagolski
сообщение 06.02.2020, 01:43
Сообщение #4450


Почти Игроман
*********

Репутация:   59  
Группа: Участник
Сообщений: 629
Награды: 1
Регистрация: 13.12.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Эти скелеты в игре функционируют таким образом: при спавне на локе он стоит в полный рост, но стоит к нему применить физ. воздействие, как скелет падает и рассыпается на части - череп и кости. Может быть разбитие на разные группы как раз и нужно для того, чтобы он рассыпался на отдельные модели. Если он будет цельный, вряд ли рассыплется.

Сообщение отредактировал Zagolski - 06.02.2020, 01:52
Перейти в начало страницы
 
Diesel
сообщение 06.02.2020, 01:59
Сообщение #4451


Почти Мастер
***********

Репутация:   111  
Группа: Участник
Сообщений: 1158
Награды: 3
Регистрация: 07.08.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Zagolski, это батенька дестроябле-объект. рассыпается он по конфигу. Один удаляется, а два подспавниваются. Как у машины примерно.

Или просто динамический объект с переломом кости. Упал, потерял сознание....

Цитата(Zagolski @ 06.02.2020, 03:39) *
Может быть разбитие на разные группы как раз и нужно для того, чтобы он рассыпался на отдельные модели. Если он будет цельный, вряд ли рассыплется.

Это работает только у стёкл статики. И в движках типа Крайэнгина.
В Сталкере у динамики, такого нет. Никаких групп нет и не будет.

Под группой я уже понял что вы подразумеваете - это элементы по-нашему, и выше написано - ни как.

Сообщение отредактировал Дизель - 06.02.2020, 02:00
Перейти в начало страницы
 
ed_rez
сообщение 06.02.2020, 02:39
Сообщение #4452


Почти Игроман
*********

Репутация:   42  
Группа: Участник
Сообщений: 626
Награды: 1
Регистрация: 10.12.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


ed_rez,
как минимум этой информации не хватало, чтобы объяснить необходимость. Это разрушаемый объект.



Цитата(Дизель @ 06.02.2020, 00:55) *
дестроябле-объект. рассыпается он по конфигу

Точно так и есть.


--------------------
Перейти в начало страницы
 
Zagolski
сообщение 08.02.2020, 12:34
Сообщение #4453


Почти Игроман
*********

Репутация:   59  
Группа: Участник
Сообщений: 629
Награды: 1
Регистрация: 13.12.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Вот сделал видео тряски с GetPosition (рецепт от Shoker). Что важно, в режиме прильнуть к прицелу тряска даже в оригинале заметно снижается. А если сменить IPosition на GetPosition, тогда при прицеливании тряска исчезает полностью. Почему именно в режиме прицеливания? Наверное, потому что при прицеливании direction не меняется, а при анимированном покачивании смена происходит. И при обзоре камерой тряска всегда есть.
Важно то, что тряска в одном из режимов полностью ликвидируется. По идее это значит, что точность float тут ни при чем...


А здесь то же самое, только оружие без аттачей. Тоже трясет само оружие приаттаченное к рукам.


Сообщение отредактировал Zagolski - 08.02.2020, 13:28
Перейти в начало страницы
 
ed_rez
сообщение 08.02.2020, 13:51
Сообщение #4454


Почти Игроман
*********

Репутация:   42  
Группа: Участник
Сообщений: 626
Награды: 1
Регистрация: 10.12.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Zagolski,
видео не пашет.


--------------------
Перейти в начало страницы
 
Zagolski
сообщение 08.02.2020, 14:10
Сообщение #4455


Почти Игроман
*********

Репутация:   59  
Группа: Участник
Сообщений: 629
Награды: 1
Регистрация: 13.12.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


У меня норм. Да и судя по тому, что там немало просмотров, значит пашет. У тебя какие-то проблемы с воспроизведением или доступом.

Сообщение отредактировал Zagolski - 08.02.2020, 14:13
Перейти в начало страницы
 
ed_rez
сообщение 08.02.2020, 14:22
Сообщение #4456


Почти Игроман
*********

Репутация:   42  
Группа: Участник
Сообщений: 626
Награды: 1
Регистрация: 10.12.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Zagolski,
разобрался. Мешает пройти блокировщик рекламы. Нужно на время прохода по видео-превью отключить.


--------------------
Перейти в начало страницы
 
Shoкer
сообщение 08.02.2020, 14:58
Сообщение #4457


Кандидат Игровых Наук
******************

Репутация:   2153  
Группа: Участник
Сообщений: 3488
Награды: 4
Регистрация: 27.07.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Zagolski, форум вместо видео открывает превью-картинку (UPD: подсказали про блокировщик).

Вот прямые ссылки:
https://radikal.ru/video/f37sRufsDBT
https://radikal.ru/video/NxHrTMeF82b

Мне кажется факт того что виновата точность float уже очевиден. Вот видео где я нахожусь на дне на расстоянии 9.000 метров от центра и 99.000 метров от центра - на последнем даже прицеливание уже кривое.

https://yadi.sk/i/ljgMvQmLmiCMIw

PS: Модели от 3-его лица на таком расстоянии даже не отображаются laugh.gif .

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

PSS: Это кстати вполне себе актуальная проблема для идеи "сделать бесшовную зону". Интересно как с этим борятся те же Ray of Hope, у которых по 4-6 локаций склеено в одну было.

- - - - - -
И вот ещё в догонку: https://yadi.sk/i/HnffjLNbWjJyKA

1) Движок по какому принципу разбивает одну модель на несколько .ogf при отрисовке (FHierarchyVisual)? Только по разным текстурам? Если да то такие модели не трясёт по кускам (в модели из видео 6-8 текстур, но материал вроде один).

2) Также видно что руки, магазин и сам ствол дёргаются даже когда камера стоит на месте. Потому что играет анимация и она заставляет модель смещаться.

Сообщение отредактировал Shoкer - 08.02.2020, 14:59


--------------------
Мне просто нравятся синие буквы под сообщением.
Перейти в начало страницы
 
Zagolski
сообщение 08.02.2020, 15:10
Сообщение #4458


Почти Игроман
*********

Репутация:   59  
Группа: Участник
Сообщений: 629
Награды: 1
Регистрация: 13.12.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Shoкer @ 08.02.2020, 14:42) *
Мне кажется факт того что виновата точность float уже очевиден.

Я когда выше отписал, не с той стороны подумал и слишком рано выводы сделал. То ведь было в режиме прицеливания без движения, било по одной координате и не тряслось. А небольшой сдвиг - сразу прыжок. Точность однозначно виной всему. А у тебя на видео это вообще сильно проявляется. На моем видео - край ЧН болот, от центра локи где-то ~500 м.

Цитата(Shoкer @ 08.02.2020, 14:42) *
Это кстати вполне себе актуальная проблема для идеи "сделать бесшовную зону".

Очень даже актуальная. Кстати, на видео в Ray of Hope слегка заметно, что худ трясет. Мне так показалось, если приглядеться. Так что они наверное тоже страдальцы. biggrin.gif

Сообщение отредактировал Zagolski - 08.02.2020, 15:20
Перейти в начало страницы
 
Zagolski
сообщение 08.02.2020, 18:09
Сообщение #4459


Почти Игроман
*********

Репутация:   59  
Группа: Участник
Сообщений: 629
Награды: 1
Регистрация: 13.12.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Руки не дрожат. Не знаю, почему. В прошлый раз вроде замечал тряску рук, а может что напутал. И фонарик на голове тоже дрожит, кстати. Но не так сильно. И мировая модель ствола. Сам перс не дрожит. Какая-то проблема в аттаче, скорее всего координаты приаттачивания сбоят, во флоат упираются. И это на любом оружии, даже если болт в руки взять, он дрожит. И это не скиннинг и не шейдеры, тогда бы вообще вся динамика дрожала.

Прямая ссылка: https://radikal.ru/video/2uiTCAq97U3

Сообщение отредактировал Zagolski - 08.02.2020, 18:16
Перейти в начало страницы
 
SkyLoader
сообщение 08.02.2020, 19:30
Сообщение #4460


Почти Игроман
*********

Репутация:   153  
Группа: Участник
Сообщений: 614
Награды: 4
Регистрация: 03.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Что-то вы тут заморочились по поводу тряски худа, решил тоже посмотреть.
Что тут можно сказать. Как известно, проблема действительно в точности float координат. А худ - это объект, рисующийся в отдельной очереди со своей несколько измененной проекцией. Это значит, что для очереди худа можно изменить отрисовку по своему желанию. Зачем рисовать худ из координат камеры, когда мы можем их рисовать в координатах 0,0,0? Тем более, что теней от худа всё-равно нет. Если рисуем в нулевых координатах, значит и точность у нас будет выше. Собственно, решил опробовать идею, и записал результат. Толком не тестировал, но проблем пока не заметил.
Видео до правок:
https://youtu.be/4PynL2gQeIg
Видео после правок:
https://youtu.be/WLK2yzSh4r4

Собственно, что сделал:
В CActor::UpdateCL() ищем код апдейта матрицы худа:
Код
    if(IsFocused())
        g_player_hud->update            (trans);

Нам нужно вычесть позицию камеры из матрицы трансформации, чтобы остались только смещения от камерных эффектов:
Код
    if (IsFocused())
    {
        trans.c.sub                    (Device.vCameraPosition);
        g_player_hud->update            (trans);
    }


Далее нужно сделать так, чтобы отрисовка худа велась от нулевых координат. Идем в R_dsgraph_structure::r_dsgraph_render_hud(). После:
Код
    Fmatrix FTold                = Device.mFullTransform;

Добавляем сохранение оригинальной view матрицы и создаем матрицу из нулевых координат:
Код
    Fmatrix Vold                = Device.mView;
    Device.mView.build_camera_dir(Fvector().set(0.f, 0.f, 0.f), Device.vCameraDirection, Device.vCameraTop);


После строки:
Код
    Device.mFullTransform.mul    (Device.mProject, Device.mView);

Добавляем обновленную матрицу:
Код
    RCache.set_xform_view        (Device.mView);


В конце функции после:
Код
    Device.mFullTransform        = FTold;

Возвращаем оригинальную матрицу
Код
    Device.mView                = Vold;
    RCache.set_xform_view        (Device.mView);


В случае наличия отрисовки полупрозрачных объектов худа и подобных отдельных очередей (r_dsgraph_render_hud_emissive(), r_dsgraph_render_hud_sorted(), r_dsgraph_render_hud_ui() и прочих), следует повторить эти же действия.

Теперь мы имеем проблему, что на удалении от центра координат худ начинает пропадать. Это связано с тем, что расчет SSA работает от координат камеры. Сделаем для худа свой расчет SSA. В r__dsgraph_build.cpp добавим функцию расчета SSA от нулевых координат:
Код
ICF    float    CalcHudSSA            (float& distSQ, Fvector& C, dxRender_Visual* V)
{
    float R    = V->vis.sphere.R + 0;
    distSQ    = Fvector().set(0.f, 0.f, 0.f).distance_to_sqr(C)+EPS;
    return    R/distSQ;
}


Теперь применим её в R_dsgraph_structure::r_dsgraph_insert_dynamic. Строку:
Код
    float SSA = CalcSSA(distSQ, Center, pVisual);

Заменим на следующее:
Код
    float SSA;
    if (!RI.val_bHUD)
        SSA = CalcSSA(distSQ, Center, pVisual);
    else
        SSA = CalcHudSSA(distSQ, Center, pVisual);


Собственно, пока данных правок достаточно. Было бы неплохо, чтобы кто-то у себя это потестил и сказал результат.
Перейти в начало страницы
 
Zagolski
сообщение 08.02.2020, 20:04
Сообщение #4461


Почти Игроман
*********

Репутация:   59  
Группа: Участник
Сообщений: 629
Награды: 1
Регистрация: 13.12.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


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

Сделал у себя, все работает корректно. Тряска полностью исчезла.

Сообщение отредактировал Zagolski - 08.02.2020, 20:10
Перейти в начало страницы
 

242 страниц V  « < 221 222 223 224 225 > » 
Ответить в данную темуНачать новую тему
7 чел. читают эту тему (гостей: 7, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 27.04.2024, 12:31