-
Вычислительный поток плагина шейдера
Дата: Январь 12th, 2010 Neill Комментариев нет* картинка взята из документации к Autodesk MotionBuilder 7.5
При написании плагина шейдера вебкамеры столкнулся с таким противоречием: с одной стороны необходимо обрабатывать каждый кадр веб камеры без влияния на общую производительность MoBu сцены, а с другой – правило создания плагинов под MoBu гласит, что добавление своих потоков может только ухудшить производительность, мол не делайте так, а используйте то что уже есть. Вот цитата из документации: Any extra threads or processes running parallel to MotionBuilder might seriously slow down performance or even prevent MotionBuilder from running at all.
Но я не нашел места, где можно было бы выполнять все вычисления по обработке кадров веб камеры в MoBu. Плагин шейдера имеет только вызов внутри рисования кадра, а если там производить обработку, то начнет тормозить дико вся сцена целиком. Это не годится. Пробовал подставить обработку кадров в UI поток MoBu, но тоже провально – ведь ui обрабатывается для шейдера только в активном режиме. Если выйти из интерфейса, вычисления проводится не будут, а кадры обрабатывать нужно постоянно. Пробовал переписать OnIdle события FBSystem, тоже не помогло, тормозит сцена.
В итоге пришел к выводу, что нужно использовать свой параллельный поток, не смотря на слоган архитектуры MoBu и был прав, все заработало как надо. Отсюда вывод, архитектуру MoBu еще следует оттачивать, и вычисление шейдеров сейчас не рассчитано на сложные конвейеры и процессинг.
MotionBuilder, Программирование OpenReality, overview, Plugin, SDK, WebCamДобавить комментарий



Свежие комментарии