Sharfik писал(а):Читаю и суть вопроса не совсем ясна, что в конце. Наверно шифр для избранных.
Ну извиняюсь что "не в стихах"...

Но если серьезно, то мне нужно что-то вроде "записи макроса", то есть запись событий от клавиатуры мышки (и прочих источников данных) в реальном масштабе времени с последующим воспроизведением . (Еще есть загвоздка в том, что часть событий работает только последовательно, а мне желательно сделать "перемотку" в обе стороны )
Если еще не понятно, то объясню более конкретно :
Сейчас я пишу
управляемую 3D/VR техно демку, а раз она
управляемая значит не содержит заранее заданного сценария, а это и хорошо и плохо . Хорошо, потому что с ней можно провозится "в ручном режиме" и вообще использовать как полезную утилиту, но плохо если я хочу просто показать "возможности технологии" и похвастаться достижениями. А поскольку технодемка постепенно усложняется, то сходу четко показать ее возможности чем дальше тем сложнее (Получается эдакий "орган" на котором нужно сходу "слабать мурку" )
Да, для "простого 3D" можно просто записать с экрана ролик ....

(Запуск оп клику.)
Но во первых, это местами проблемно (в программе уже сейчас несколько окон с настройками + есть неизбежная потеря качества ) а вторых демка рассчитана на поддержку VR, что вообще делает "плоскую" запись изрядно бессмысленной, а если пытаться записывать "сферическое стерео" это еще сложнее и файлы выходят чудовищными по размеру + такой ролик не позволит показать работу программы в целом .
Вывод прост: нужно сделать запись и воспроизведение "полетов фантазии " в самой программе .
Добавлено спустя 44 минуты 21 секунду:Скалогрыз, спасибо за отзыв и участие в мозговом штурме !
скалогрыз писал(а):Alex2013 писал(а):В моем проекте "Цифрова оптика" есть возможность записи и воспроизведения состояния, но это разумеется, не то что нужно мне сейчас ( как-то пробовал сделать там "анимацию" из набора "сэйвов состояния" вместо кадров но это как-то криво работает дискретно и без "ощущения полета" ) .
запись состояния это то, что тебе нужно.
при воспроизведении списка состояний, тебе просто нужно интерполировать результат, и тогда будет "ощущения полёта", потому что всё будет плавно.
В принципе мысль годная . Но как это совместить с кучей настроек и переключений режимов во "внешнем интерфейсе" программы большой вопрос.
Естественно, сохранять состояние "целиком" может быть избыточным. Но это уже вопрос к "движку".
Если в "движке" есть некоторые данные, которые можно надёжно интерполировать опираясь на предыдущее значение + время, тогда такие данные не нужно сохранять на "каждое состояние", а только в те моменты, когда эти данные меняются.
Количество данных не проблема( Все равно сильно меньше записи видео ) проблема в переключение режимов и изменениях настроек, часть которых к "движку" вообще не относятся . То есть просто записывать координаты камеры и состояние движка может быть недостаточно.
Как в видео кодировке, есть "ключевой кадр" (который по сути - картинка целиком), есть последующие слайды, которые "только изменения к ключевом".
Общий подход прост:
* снимать состояние на каждый "кадр" ("тик", "апдейт") движка
* сохранять те данные, которые невозможно надёжно интерполировать
* те данные, которое можно интерполировать, сохранять только с тем "кадрами", когда значение данных меняется/задано впервые.
По моем большая часть реализаций "записи ролика на движке" делается существенно проще! Просто записывается не состояние движка, а поток данных идущий от клавиатуры мышки и т.д., а при воспроизведении записанный поток тупо подменяет реальный. (Запись состояния нужна только одна и исключительно для задания верной "стартовой позиции" )