Исходник Софт mirror - когда одной игровой камеры уже реально мало

AdCKuY_DpO4uLa

Адский дрочер
Друг
414
875
Как использовать в mimgui? Если это является текстура.
Вот такой пример:
Объект Camera содержит поле frameBuffer, представляющий собой указатель на RwRaster с текстурой. В LUA API в данный момент его получение не предусмотрено.
Если освежить в памяти содержимое RwRaster и получение из него d3d9 текстуры, то вывод в Imgui окно будет возможным.
В данный момент такой функционал не предусмотрен, открыт к PR или сам позже покопаюсь
Посмотрите в сторону D3DUSAGE_DYNAMIC
 

B365

Известный
31
17
Спс, все отлично работает, только в зеркале видно источники света из основной камеры (передние и задние фары, столбы), они как бы летают в воздухе

byNwyN9qMu.jpg
 
  • Влюблен
  • Нравится
Реакции: 2elnwndrer. и MrCreepTon

MrCreepTon

Неизвестный
Автор темы
Всефорумный модератор
2,411
5,579
Спс, все отлично работает, только в зеркале видно источники света из основной камеры (передние и задние фары, столбы), они как бы летают в воздухе

Посмотреть вложение 297020
Да, такая же беда с облаками (туманом). Уверен что фиксится очень просто, но в свое время не нарыл место.
Это связано с тем, что на самом деле камера остается одна, которая игровая. Просто во время рендера одна камера делает сразу несколько "снимков" и возвращается на исходную позицию. И в связи с этим могут оставаться артефакты, хотя я постарался их по максимуму минимизировать
 
  • Нравится
Реакции: B365

amb

Новичок
8
11
Очень классная идея, респект

если развивать тему с бодикамерами. можно ведь к примеру сделать маломальскую синхронизацию между пользователями, и рендерить в условную текстуру телевизора изображение с бодикамеры человека подключенного к системе?..)
 
Последнее редактирование:
  • Нравится
Реакции: Vintik и MrCreepTon

MrCreepTon

Неизвестный
Автор темы
Всефорумный модератор
2,411
5,579
Очень классная идея, респект

если развивать тему с бодикамерами. можно ведь к примеру сделать маломальскую синхронизацию между пользователями, и рендерить в условную текстуру телевизора изображение с бодикамеры человека подключенного к системе?..)
Можно
 
  • Нравится
Реакции: amb

MrCreepTon

Неизвестный
Автор темы
Всефорумный модератор
2,411
5,579
Успешный успех 🥳
1784466124145.png

Сейчас попробую сделать связь с объектами, как в CEF плагине. Если получится, то в следующий релиз тоже закину
 
  • Нравится
Реакции: kyrtion и amb

MrCreepTon

Неизвестный
Автор темы
Всефорумный модератор
2,411
5,579
Обновление 1.0.1
  • frameBuffer объекта Camera вынесен в LUA API
Строчка буквально одна, но раскрывает множество применений камер (большая часть из которых может быть реализована нативно прямо из Lua!)

Новые примеры использования:
demo.gif

Позволяет создавать несколько камер, несколько телевизоров и... связывать их друг с другом!
Подробнее см тут
demo.gif

Позволяет выводить изображение с камеры в mimgui (imgui) окошко
Подробнее тут

Скачать
 

T.Barrett

Участник
43
3
Господа, при попытке приаттачить источник изображения к технике в процессе её движения - картинка будто не успевает за ней (отстаёт). Как можно поправить?
 
  • Эм
Реакции: MrCreepTon

MrCreepTon

Неизвестный
Автор темы
Всефорумный модератор
2,411
5,579
Господа, при попытке приаттачить источник изображения к технике в процессе её движения - картинка будто не успевает за ней (отстаёт). Как можно поправить?
Поделишься сниппетом кода для воспроизведения?
 

Rei

Известный
Друг
1,638
1,713
Господа, при попытке приаттачить источник изображения к технике в процессе её движения - картинка будто не успевает за ней (отстаёт). Как можно поправить?
Нужно обновлять не в бесконечном цикле, а в хуке CCam
 

Rei

Известный
Друг
1,638
1,713
Подскажи, пожалуйста, как это сделать? Ранее с хуками не работал
В этом скрипте реализовано
 

MrCreepTon

Неизвестный
Автор темы
Всефорумный модератор
2,411
5,579
Не особо получилось

Код:
local hook
   
    local function CCam_Process(cam)
        do -- update raw
            camera.posX = px
            camera.posY = py
            camera.posZ = pz
            camera.rotX = 90
            camera.rotY = 0
            camera.rotZ = qz - 90.0
           
            cam.vecSource.x = px
            cam.vecSource.y = py
            cam.vecSource.z = pz + 2.0

            cam.vecFront.x = -math.cos(90.0) * math.cos(0.0)
            cam.vecFront.y = -math.sin(90.0) * math.cos(0.0)
            cam.vecFront.z = math.sin(0.0)

            cam.vecUp.x = -math.tan(0.0) * cam.vecFront.x
            cam.vecUp.y = -math.tan(0.0) * cam.vecFront.y
            cam.vecUp.z = math.cos(0.0)
        end
        hook.stop()
        return 1
    end
   
    hook = hook_t.jmp.new("void(__thiscall*)(CCam *this)", CCam_Process, 0x526FC0)
    hook.start()
Проблему решил добавлением callback-a, но загружу попозже (сегодня вечером - завтра утром)
 
  • Нравится
Реакции: T.Barrett