Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Редактирование движка
GAMEINATOR forums > S.T.A.L.K.E.R. > Мастерская: создание модов для S.T.A.L.K.E.R.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97
ZveroBoy95rus
AMD на днях выложила исходный код своей технологии FidelityFX Super Resolution.
Если кто то захочет эту фичу в X-Ray пихать то вот ссылка https://gpuopen.com/fidelityfx-superresolution/ laugh.gif
Yara
Помимо этой правки: исправлена путаница с синим и красным каналами при сжатии в dds
https://github.com/abramcumner/xray15/commi...6d33d9b05259a2d

нужно ещё где-то править, ибо с ней при конверте тга в ддс через сдк:


без неё:


CODE

Ещё в tPixel.h есть ошибка:

inline int operator == (const fpPixel& v1, const fpPixel& v2)
{
return
v1.a == v2.a &&
v1.r == v2.r &&
v1.b == v2.g && // здесь
v1.g == v2.b; //
}

И там же есть (в 3-х вариантах):

void SwapRB() // разрабы сами сделали фикс biggrin.gif
{

fpPixel * p = &m_pixels[0];
for(int i=0; i < m_width * m_height; i++ );
{

int r = p->r;
p->r = p->b;
p->b = r;
}
}

Diesel
abramcumner, вопрос на скрипты. ЧН 1.5 твоего разлива - не работает с логикой bak.
Давно я не тестировал сее творение, но по весне, там из за новых луа однако было страшно и печально одновременно.
Старую систему вернуть под визуалку 2019 я так думаю уже не возможно, но и с новой модить неприятно.

Тебе нужно как то адаптировать последнюю хотя бы логику bak для ЧН. Это сейчас очень востребовано, а без этого и люди будут стрематься от движка подальше.
abramcumner
Цитата(Diesel @ 06.08.2021, 01:20) *
Давно я не тестировал сее творение, но по весне, там из за новых луа однако было страшно и печально одновременно.

А какого вида ошибки? Можешь выложить лог?
Diesel
abramcumner, не смогу в данный момент ( у меня вообще мало что осталось от Сталкера). Тебе проще самому проверить. Чистая ЧН, твой патч скриптов, логика bak.
SamArt
Цитата(xrModder @ 13.08.2019, 22:51) *
Изменение движка для использования полноценных кубических карт неба, может кому-нибудь пригодится
В Environment_render.cpp заменить:
CODE
        {-1.f, -1.f, -1.f}, {-1.f, -1.01f, -1.f},     // down
{ 1.f, -1.f, -1.f}, { 1.f, -1.01f, -1.f}, // down
{-1.f, -1.f, 1.f}, {-1.f, -1.01f, 1.f}, // down
{ 1.f, -1.f, 1.f}, { 1.f, -1.01f, 1.f}, // down
{-1.f, 1.f, -1.f}, {-1.f, 1.f, -1.f},
{ 1.f, 1.f, -1.f}, { 1.f, 1.f, -1.f},
{-1.f, 1.f, 1.f}, {-1.f, 1.f, 1.f},
{ 1.f, 1.f, 1.f}, { 1.f, 1.f, 1.f},
{-1.f, 0.f, -1.f}, {-1.f, -1.f, -1.f}, // half
{ 1.f, 0.f, -1.f}, { 1.f, -1.f, -1.f}, // half
{ 1.f, 0.f, 1.f}, { 1.f, -1.f, 1.f}, // half
{-1.f, 0.f, 1.f}, {-1.f, -1.f, 1.f} // half
На:
CODE
        {-1.f, -1.f, -1.f}, {-1.f, -1.01f, -1.f},     // down
{ 1.f, -1.f, -1.f}, { 1.f, -1.01f, -1.f}, // down
{-1.f, -1.f, 1.f}, {-1.f, -1.01f, 1.f}, // down
{ 1.f, -1.f, 1.f}, { 1.f, -1.01f, 1.f}, // down
{-1.f, 1.f, -1.f}, {-1.f, 1.f, -1.f},
{ 1.f, 1.f, -1.f}, { 1.f, 1.f, -1.f},
{-1.f, 1.f, 1.f}, {-1.f, 1.f, 1.f},
{ 1.f, 1.f, 1.f}, { 1.f, 1.f, 1.f},
{-1.f, 1.f, -1.f}, {-1.f, 1.f, -1.f}, // half
{ 1.f, 1.f, -1.f}, { 1.f, 1.f, -1.f}, // half
{ 1.f, 1.f, 1.f}, { 1.f, 1.f, 1.f}, // half
{-1.f, 1.f, 1.f}, {-1.f, 1.f, 1.f} // half
Вертексы Skybox'а

* требуется пересобрать все используемые текстуры Skybox без растягивания:
Было
Стало


Спасибо, работает! biggrin.gif Только из-за этой правки я сел так основательно за визуалку. С 5 раза с Божьей помощью все скомпилировалось и заработало. Кривой скайбокс залогуспеха. laugh.gif Теперь надо будет переработать всё небо, но это уже дело макросов в Фотошопе. Вот прекрасный пример использования этой правки. Красыво имхо. ohmy.gif

xrModder
SamArt, лучше используй вот этот код:
Код
        // Кубический SkyBox без нижней половины
        {-1.f, -1.f, -1.f}, {-1.f, -1.f, -1.f}, // down
        { 1.f, -1.f, -1.f}, { 1.f, -1.f, -1.f}, // down
        {-1.f, -1.f,  1.f}, {-1.f, -1.f,  1.f}, // down
        { 1.f, -1.f,  1.f}, { 1.f, -1.f,  1.f}, // down
        {-1.f,  1.f, -1.f}, {-1.f,  1.f, -1.f},
        { 1.f,  1.f, -1.f}, { 1.f,  1.f, -1.f},
        {-1.f,  1.f,  1.f}, {-1.f,  1.f,  1.f},
        { 1.f,  1.f,  1.f}, { 1.f,  1.f,  1.f},
        {-1.f,  0.f, -1.f}, {-1.f, -1.f, -1.f}, // half
        { 1.f,  0.f, -1.f}, { 1.f, -1.f, -1.f}, // half
        { 1.f,  0.f,  1.f}, { 1.f, -1.f,  1.f}, // half
        {-1.f,  0.f,  1.f}, {-1.f, -1.f,  1.f}  // half
или
Код
        // Кубический SkyBox
        {-1.f, -1.f, -1.f}, {-1.f, -1.f, -1.f}, // down
        { 1.f, -1.f, -1.f}, { 1.f, -1.f, -1.f}, // down
        {-1.f, -1.f,  1.f}, {-1.f, -1.f,  1.f}, // down
        { 1.f, -1.f,  1.f}, { 1.f, -1.f,  1.f}, // down
        {-1.f,  1.f, -1.f}, {-1.f,  1.f, -1.f},
        { 1.f,  1.f, -1.f}, { 1.f,  1.f, -1.f},
        {-1.f,  1.f,  1.f}, {-1.f,  1.f,  1.f},
        { 1.f,  1.f,  1.f}, { 1.f,  1.f,  1.f},
        {-1.f,  1.f, -1.f}, {-1.f,  1.f, -1.f}, // full
        { 1.f,  1.f, -1.f}, { 1.f,  1.f, -1.f}, // full
        { 1.f,  1.f,  1.f}, { 1.f,  1.f,  1.f}, // full
        {-1.f,  1.f,  1.f}, {-1.f,  1.f,  1.f}  // full

Тут координаты точные.

Для полной красоты можно убрать несколько проверок "высоты" Солнца (Луны) для вращения по кругу, добавить вращение скайбокса по вертикали и вращение облаков по горизонтали.
Pavel_Blend
В шапке темы есть мёртвая ссылка на правленый движок 1.0007 от KD и Alpet (xp_dev). Я этот движок нашёл на github:
github.com/xer-urg/xp-dev_xray

У меня есть скомпилированная версия этого движка, но не последней версии. У меня билд 5578 за 14 мая 2014. А последний коммит на гитхабе за 13 августа 2016.

Как можно скомпилировать последний коммит? У меня в VS 2019 ошибки. Мне нравится эта версия движка из-за того, что включены команды g_god, g_unlimitammo. И нет правок, которые изменят ТЧ и ТЧ уже не будет ТЧ. То есть максимально каноничный движок.

Или может в сети есть уже скомпилированная последняя версия?
Pavel_Blend
Цитата(Pavel_Blend @ 25.08.2021, 17:21) *
Как можно скомпилировать последний коммит?

получилось скомпилировать в visual studio 2010. Только пришлось заменить библиотеки xrSound.dll и xrParticles.dll, так как были ошибки и некорректная работа.

Залил в релизы:
github.com/PavelBlend/xp-dev_xray

Но работоспособность не гарантирую, так как я первый раз компилировал движок и не знаю си++. У себя вылетов пока не заметил. Вроде бы корректно всё скомпилировалось.
sergy172
Может кто нибудь помочь восстановить блеск поверхностей в шейдере\шейдерах Return to castle Wolfenstein?
Стандартный "блеск металла", такой же как Кваке3 если кто помнит (в самой Кваке, не проверял), и прочих поверхностей, с какого то времени не работает на картах Нвидиа.
Один человек это вроде как восстановил, но с одним жирнющим НО.
Делал он это для своего мода Веном и прописал в шейдер кучу, отсутствующих в оригинале текстур.
Может кто нибудь убрать лишнее из его шейдера или ещё лучше, переместить решение в оригинальный?
Если я правильно разобрался, то основная часть "отражений" содержится в walls.shader, но возможно и в других тоже.
По ссылке, sp_vpak7.pk3 с модифицированными шейдерами и соответственно sp_vpak7_old_original.pk3 с оригинальными из pak0.pk3 ГОГовского Return to castle Wolfenstein.
https://drive.google.com/drive/folders/1meX...kMH?usp=sharing
xrModder
Цитата(Pavel_Blend @ 28.08.2021, 17:19) *
были ошибки и некорректная работа.

Какие?
Pavel_Blend
xrModder, вылетало из-за xrParticles.dll. Лог не сохранился. Я удалил эту dll и скопировал её из билда 5578 от KD (патч 1.0007).

А xrSound.dll глючил. Когда включал demo_record и летал по локации, тональность звуков менялась. Сталкеры то пищали, то бубнили. Частота звучания зависела от скорости полёта камеры. Чем быстрее лететь, тем больше искажение звука.
xrModder
Цитата(Pavel_Blend @ 28.08.2021, 22:54) *
А xrSound.dll глючил. Когда включал demo_record и летал по локации, тональность звуков менялась. Сталкеры то пищали, то бубнили. Частота звучания зависела от скорости полёта камеры. Чем быстрее лететь, тем больше искажение звука.

Это не глюк, а эффект Доплера. Для X-Ray такая правка есть.
Pavel_Blend
xrModder, а зачем такая правка нужна? Чтобы как в реальной жизни? Но оно ведь через чур гипертрофировано. Звучит как глюк. Даже если пешком идти, а не летать с demo_record. Вертолёт искажается к примеру, когда подлетает.
RayTwitty
Цитата(Pavel_Blend @ 28.08.2021, 14:19) *
получилось скомпилировать в visual studio 2010. Только пришлось заменить библиотеки xrSound.dll и xrParticles.dll, так как были ошибки и некорректная работа.

Я решил это, сделав установку студии согласно инструкции:
Цитата
Для работы требуются следующие предустановленные компоненты:

1 Microsoft DirectX SDK (June 2007)
2 Microsoft DirectX SDK (June 2010)
3 OpenAL Redistributable
4 Microsoft Visual Studio 2010 (полная версия, Express-версия не поддерживается)
5 Microsoft Visual Studio 2010 Service Pack 1

Устанавливать компоненты необходимо в указанном выше порядке.
Diesel
Цитата(RayTwitty @ 29.08.2021, 01:45) *
1 Microsoft DirectX SDK (June 2007)
2 Microsoft DirectX SDK (June 2010)

Да уж!?
xrModder
Цитата(Pavel_Blend @ 28.08.2021, 17:19) *
получилось скомпилировать в visual studio 2010. Только пришлось заменить библиотеки xrSound.dll и xrParticles.dll, так как были ошибки и некорректная работа.

Только на vs2010? Без SP1 и SP1 Update?
Pavel_Blend
xrModder, вроде бы без SP1. Я просто скачал VS2010 и установил. Хотя может в комплекте уже были SP1.
xrModder
Цитата(Pavel_Blend @ 29.08.2021, 19:20) *
xrModder, вроде бы без SP1. Я просто скачал VS2010 и установил. Хотя может в комплекте уже были SP1.

Сборка на голом Visual Studio 2010 чревато ошибками. Собирай на Visual Studio 2010 с SP1 + SP1 Update. Вечером выложу установщик Visual Studio 2010 с SP1 и SP1 Update.
Pavel_Blend
Цитата(xrModder @ 29.08.2021, 16:27) *
Цитата(Pavel_Blend @ 29.08.2021, 19:20) *
xrModder, вроде бы без SP1. Я просто скачал VS2010 и установил. Хотя может в комплекте уже были SP1.

Сборка на голом Visual Studio 2010 чревато ошибками. Собирай на Visual Studio 2010 с SP1 + SP1 Update. Вечером выложу установщик Visual Studio 2010 с SP1 и SP1 Update.

можешь не скидывать установщик. Я ведь уже скомпилировал последнюю версию движка. Больше мне и не нужна студия. То, что не удалось собрать xrParticles.dll, не критично. Игра работает со старой версией.
RayTwitty
Цитата(Pavel_Blend @ 29.08.2021, 22:14) *
Игра работает со старой версией.

То что она работает, это не значит что без ошибок. Помимо проблем с этими 2 либами, были какие-то странные баги в самых неожиданных местах. Уже не помню все, но точно были проблемы с load_last_save командой (пунктом в меню). Ради интереса проверь как загружается последний сейв сделанный в игре и при первом запуске.
xrModder
Цитата(Pavel_Blend @ 30.08.2021, 01:14) *
можешь не скидывать установщик. Я ведь уже скомпилировал последнюю версию движка. Больше мне и не нужна студия. То, что не удалось собрать xrParticles.dll, не критично. Игра работает со старой версией.

Ок, на всякий случай пусть лежит на Mega.
Pavel_Blend
Цитата(RayTwitty @ 29.08.2021, 23:36) *
Ради интереса проверь как загружается последний сейв сделанный в игре и при первом запуске.

да, загружается. Запустил игру и сразу нажал в меню "загрузить последнее сохранение". Без ошибок запустилось.

Я несколько дней побегал. Прошёл до тёмной долины. Вылетов не было. А вообще, мне не все правки нравятся в последнем коммите за 2016 год. И ещё окна инвентаря и при обыске подтормаживают. И команда demo_record всё так же не телепортирует. Мне она нужна для теста своих локаций и моделей.
Yara
Цитата(Pavel_Blend @ 30.08.2021, 13:46) *
И команда demo_record всё так же не телепортирует. Мне она нужна для теста своих локаций и моделей.

FDemoRecord.cpp,

#ifndef NDEBUG - эту
g_pGameLevel->CurrentEntity()->ForceTransform(m_Camera);
#endif - и эту строку удалить
RayTwitty
Цитата(Pavel_Blend @ 30.08.2021, 10:46) *
да, загружается. Запустил игру и сразу нажал в меню "загрузить последнее сохранение". Без ошибок запустилось.

Под ошибками я подразумевал не вылеты, а неправильную работу кода. На этой сборке у меня точно, без всякой на то причины грузился не тот сейв, который должен. Как минимум это, как максимум было что-то ещё по мелочи, чего я уже не помню.
Впрочем дело твое. Лично я считаю, тестировать что-либо на заведомо криво-собранном ПО смысла не имеет вообще.
RayTwitty
Кстати, раз уж вскрыли эту тему, решил ещё раз попробовать разобраться с этим вопросом.

Вкратце - на версии движка 1.0007rc1 (от KD на бывшем xp-dev) вылетает менеджер динамических заданий. И раз уж у меня две версии под рукой, решил протестировать один и тот же код:
Код
-- msg - функция вывода в консоль

function actor_binder:save(packet)
    ...
    packet:w_u32(-1)
    msg("saved -1")
end

function actor_binder:load(reader)
    ...
    local num = reader:r_u32()
    msg("loaded "..num)

    local sobj = alife():object(num)
    if sobj then
        msg("sobj name = "..sobj:name())
    else
        msg("sobj not found")
    end
end

Результаты такие:
Код
1.0006

saved -1
loaded 4294967296
sobj name = single_player
Код
1.0007rc1

saved -1
loaded 4294967295
sobj not found

Поведение действительно изменилось. Вот только из-за обновленного lua? Или дело в компиляторе самого С++ уже?

Выдержка из "изменений":
Цитата
добавлены библиотеки: lua5.1, luabind, FreeImage, nvtt
обновлены библиотеки: OpenAL, luaJIT (до версии 1.1.8), xrDXT, stlport, ogg, vorbis, theora, nvdxt

PS
Код
CSE_ALifeDynamicObject *alife_object        (const CALifeSimulator *self, ALife::_OBJECT_ID object_id)

typedef u16    _OBJECT_ID;
Тут вообще u16 на вход...

PS2
Что интересно, в 1.0006 версии, функции object можно скормить хоть 4294967295, хоть 4294967296 и в обоих случаях она находит актора (single_player).
cjayho
QUOTE (xrModder @ 28.08.2021, 19:47) *
QUOTE (Pavel_Blend @ 28.08.2021, 22:54) *
А xrSound.dll глючил. Когда включал demo_record и летал по локации, тональность звуков менялась. Сталкеры то пищали, то бубнили. Частота звучания зависела от скорости полёта камеры. Чем быстрее лететь, тем больше искажение звука.

Это не глюк, а эффект Доплера. Для X-Ray такая правка есть.


ухты. а можно ссылочку?

QUOTE (xrModder @ 29.08.2021, 15:27) *
QUOTE (Pavel_Blend @ 29.08.2021, 19:20) *
xrModder, вроде бы без SP1. Я просто скачал VS2010 и установил. Хотя может в комплекте уже были SP1.

Сборка на голом Visual Studio 2010 чревато ошибками. Собирай на Visual Studio 2010 с SP1 + SP1 Update. Вечером выложу установщик Visual Studio 2010 с SP1 и SP1 Update.


интересно, а есть ли версии исходников двигла под современные инструменты сборки, типа свежей vs community? не хочется себе тащить в систему тонны древнего хлама только ради сборки двигла.
MegaNub
Цитата
интересно, а есть ли версии исходников двигла под современные инструменты сборки, типа свежей vs community? не хочется себе тащить в систему тонны древнего хлама только ради сборки двигла.

Попробуйте это: VC++ .
В архиве Visual C++ версии 16, сборка 30319. Соответствует Visual Studio 2010.

Этим точно собирался b1154, и по-моему этим же 1.0007 RC1.
xrModder
Цитата(cjayho @ 03.09.2021, 12:53) *
ухты. а можно ссылочку?

У меня нет этой правки.

Цитата(cjayho @ 03.09.2021, 12:53) *
интересно, а есть ли версии исходников двигла под современные инструменты сборки, типа свежей vs community? не хочется себе тащить в систему тонны древнего хлама только ради сборки двигла.

Чистые навряд ли. Либо движок с тонной правок, часто ломающий работу движка (вышестоящее сообщение RayTwitty тому подтверждение), либо с кучей не движковых правок.
mortan
Есть вот такая версия, можно по примеру свой проект обновить если нужно https://github.com/mortany/xray
ForserX
Цитата(RayTwitty @ 31.08.2021, 00:19) *
PS
CSE_ALifeDynamicObject *alife_object        (const CALifeSimulator *self, ALife::_OBJECT_ID object_id)

typedef u16    _OBJECT_ID;Тут вообще u16 на вход...

Проверил у себя. Да, объект не валидный. Да, новый Луа. Да и в целом, он делает правильно. Айди актора вроде 0, если я не ошибаюсь? Есть так сказать два стула. Первый - переписать скрипты, второй - сделать костыль на повторный проход по нулевому айди, если по -1 нет результата
RayTwitty
Цитата(ForserX @ 06.09.2021, 08:59) *
Айди актора вроде 0, если я не ошибаюсь?

Да, ноль.

Цитата(ForserX @ 06.09.2021, 08:59) *
Первый - переписать скрипты, второй - сделать костыль на повторный проход по нулевому айди, если по -1 нет результата

Затычку для таскменеджера я уже сделал. В CRandomTask:load после инициализации defend_object дописал такое:
Код
-- затычка от не найденного актора
if not defend_object then
    defend_object = alife():actor()
end
Можно еще так, покороче
Код
local defend_object = alife():object(self.task_info[id].selected_target) or alife():actor()

То есть явно скармливаем ему серверный объект ГГ. Вроде всё работает. Конкретно тут. Но проблема в том, что вызовов alife():object в игре достаточно много и надо каждый проверить, может ли ему передаться невалидное значение (>65535). То есть нужно по-хорошему править движок на этот счет.

А какое именно нововведение Lua повлияло на изменение этого поведения? Может ты в луашных ченжлогах лучше ориентируешься?)

Цитата(cjayho @ 03.09.2021, 09:53) *
ухты. а можно ссылочку?

https://github.com/OGSR/OGSR-Engine/commit/...d3b00ced0df073d

https://www.youtube.com/watch?v=kY2KyUfGvFk
Trollz0r
Цитата(RayTwitty @ 06.09.2021, 21:06) *
У меня такое чувство, что сделано шиворот-навыворот. Эффект же должен применяться не к статичному, а к быстродвижущемуся звуку. Как, например, для пешехода меняется звук сигналящего автомобиля или поезда, который едет на большой скорости. В сталкире эффект можно применить к какой-нибудь ракете от рпг или суперпупераномалии. Или падающему вертолёту.
RayTwitty
Цитата(Trollz0r @ 06.09.2021, 23:30) *
В сталкире эффект можно применить к какой-нибудь ракете от рпг или суперпупераномалии

Там самый прикол в том, что сталкерский звук ракеты уже был записан с искажением, подобным эффекту Доплера biggrin.gif Вообще, фича сомнительная и я пока не могу представить, где ее можно реально услышать в игре, кроме деморекорда. Обычно такое используется в каких-нибудь гоночных аркадах.

ЗЫ Хотя нет, два кейса я таки придумал - падение с большой высоты и передвижение на транспорте. В идеале конечно с этой фичей надо побегать, посмотреть.

Цитата(Trollz0r @ 06.09.2021, 23:30) *
У меня такое чувство, что сделано шиворот-навыворот. Эффект же должен применяться не к статичному, а к быстродвижущемуся звуку

Если я правильно понял код, оно работает в обе стороны. Просто есть две позиции в пространстве. Но, учитывая, что ГГ не может двигаться быстро по дефолту, то должно работать как бы правильно.
Trollz0r
Вот что я имею в виду.
https://www.youtube.com/watch?v=ryZ2mKiBUy0
https://www.youtube.com/watch?v=DAstbo17fWU


ГГ стоит, грузовик едет и сигналит, звук искажается.
Pavel_Blend
Возможно ли сделать (без особых усилий и переписывания движка на 90%) такую правку?:

сделать возможность поставить игру/рендер на паузу. Чтобы в консоль ввести команду, и игра останавливается. И не просто останавливается, а перестаёт обрабатывать геометрию, сектора, порталы, анимацию и т. д. Если, к примеру, от ГГ на расстоянии километра будет сталкер, то во время паузы, если к нему подойти, можно будет увидеть низкополигональную версию сталкера. Или к дереву: вместо дерева будет один полигон с текстурой level_lods.dds. И вся геометрия, за пределами камеры и в секторах, будет отсечена. Это нужно для тестирования. И ещё сделать правку: добавить отображение рёбер визуальных объектов и геометрии коллизии. Может даже сделать отрисовку шейпов костей в самой игре. Такие правки облегчают создание своих моделей.
atanda
Несколькими правками это точно не сделать. Для этого, как мне это видится, нужно сделать так, чтобы при паузе рендер и прочие системы начали работать не с камерой, через которую идёт рендер, и её матрицей, а с другой камерой и её трансформацией, которая была до нажатия "паузы". Как-то так.
Pavel_Blend
atanda, понятно. Интересно было бы в самой игре визуально видеть чисто техническую информацию. Шейпы костей, наглядно видеть, как работает отсекатель геометрии за пределами камеры и в секторах. Лоды, swi, рёбра треугольников и т. д. Или даже редактор внутриигровой сделать. Чтобы в самой игре много чего редактировать. Погоду хотя бы в ТЧ, например.
Hozar_2002
Цитата(Pavel_Blend @ 07.09.2021, 16:29) *
Возможно ли сделать
Ну не сильно то и сложно. Насчет паузы не скажу, по идее и в ней должно работать, но суть в чем. В есть расчет SSA и лодирования. Так вот. Расчет SSA нужно вести в реальных координатах камеры, но при этом камеру смещать по условным координатам на консоле. Если что файлы для правки r__dsgraph_. Если будет нужна более точная наводка, то позже могу подсказать как реализовывать.
Цитата(Pavel_Blend @ 07.09.2021, 21:10) *
Лоды, swi, рёбра треугольников и т. д.
В ЗП вроде все это доступно на DEBUG сборке
Pavel_Blend
Цитата(Hozar_2002 @ 08.09.2021, 16:52) *
В ЗП вроде все это доступно на DEBUG сборке

а как это включить? Консольная команда? Или они всегда отрисовываются?
Winsor
ТЧ.
Подскажите пожалуйста - при установке texture_lod отличном от 0 на втором рендере "ломаются" текстуры UI на худе.
- тут должен быть худ с полосочками...
Это простыня с текстурами виновата или я в движке накосячил?
Благодарю!
macron
Цитата(Winsor @ 13.09.2021, 11:12) *
на втором рендере "ломаются" текстуры UI на худе.

Попробуй пережать текстуры в dxt3.
Hozar_2002
Цитата(Winsor @ 13.09.2021, 13:12) *
Это простыня с текстурами виновата
Сохраняй текстуры для GUI без мип мапов.
Winsor
Стоит ли заморачиваться с текстурами в геймдате для приведения их в pow2? или хватит написать в движке D3DX_DEFAULT_NONPOW2 для D3DXCreateTextureFromFileInMemoryEx и забыть? занимался кто-то таким?
Pavel_Blend
Такой вопрос возник:

как actor editor вычисляет трансформации шейпов для костей, когда нажимается кнопка Generate Shape > All / Selected? Шейп меняет вращение, масштаб и позицию, чтобы максимально плотно описать вершины, которые привязаны к кости. Это называется OBB (object oriented bounding box). Здесь описан алгоритм, но судя по комментариям, в нём есть ошибки:
jamesgregson.blogspot.com

И есть библиотека на питоне, которая создана по этой статье:
github.com/pboechat/pyobb

Я хочу в аддон для блендера добавить просчёт вращения для шейпов, а не только позицию и габариты. Но питоновский код по ссылке выше выдаёт неверные результаты. Так как системы координат отличаются от блендеровских. Я пока не могу преобразовать нормально эти трансформации для блендера, так как не совсем понимаю алгоритма (что с чем менять местами, чтобы получилось нормально).

Как в сдк это сделано?
Modera
Цитата(Pavel_Blend @ 30.09.2021, 22:12) *
Как в сдк это сделано?

В СДК кубические шейпы считает библиотечка WildMagic, смотри файл editors\ECore\WildMagic\WmlContMinBox3.cpp.


Вообще процесс генерации шейпа для определённой кости выглядит вот так:
1. Из модели выбираются все точки на которые кость влияет сильнее всего
2. Точки трансформируются в систему координат относительно кости (то есть инверсной матрицей кости)
3. Трансформированные точки передаются библиотеке WildMagic, которая вырабатывает размер смещение и поворот шейпа
4. Полученные данные копируются в шейп кости как есть.

Эта штука кстати называется minimal bounding box, можно в поиске больше информации найти по такому запросу.
Pavel_Blend
Modera, это метод ContOrientedBox вычисляет OBB? Я посмотрел, он может принимать 4 параметра:
CODE
iQuantity
akPoint
abValid
rkBox

Из этих параметров нет треугольников. Есть только вершины. В этой статье:
jamesgregson.blogspot.com
написано, что для вычисления OBB, нужно использовать треугольники, чтобы результат был более точным. Так как на основе точек можно получить такой результат:

Вместо такого, который с треугольниками получается:


Тогда наверное алгоритм из сдк мне не подойдёт. Лучше тогда адаптировать код из этого репозитория, чтобы результат был более точным:
github.com/pboechat/pyobb

Вот только я пока не знаю, как это сделать. Наверное завтра попробую как в сдк сделать. Если получится и результат будет нормальным, то не буду использовать другой вариант.
Modera
Цитата(Pavel_Blend @ 01.10.2021, 00:03) *
Из этих параметров нет треугольников. Есть только вершины. В этой статье:

Всё правильно, СДК для расчётов использует только точки.

Кстати насчёт того что данные берутся без изменений я немного недоглядел, матрица поворота коробки там ортонормируется. Хотя может это не критично.
abramcumner
Цитата(Pavel_Blend @ 01.10.2021, 00:03) *
Тогда наверное алгоритм из сдк мне не подойдёт. Лучше тогда адаптировать код из этого репозитория, чтобы результат был более точным:
github.com/pboechat/pyobb

По ссылке в примере с зайцем выдает какой-то странный obb smile.gif
Pavel_Blend
abramcumner, возможно в скрипте ошибка. Этот скрипт основан на си++ коде из этой статьи:
jamesgregson.blogspot.com
Внизу статьи есть комментарии, в которых говорится об ошибке. Видимо питоновский код наследовал эти ошибки из си++ примеров. Я думаю, что не хватает вычисления переменной c22 после этой строчки кода:
https://github.com/pboechat/pyobb/blob/9cb1...yobb/obb.py#L99

Если это так, то скорее всего obb будет правильным.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.