Во первых у Вас должна быть своя система рендера. То есть Вы не грузите две больших картинки которые потом двигаете, а Вы грузите любые картинки части которых потом рисуете в один холст.
Получается что у Вас должен быть модель, который рисуете картинки по заданным координатам.
Эти координаты должен задавать другой модуль, которым управляет третий модуль управляемый юзером. Юзер нажал кнопку -> третий модуль передал значение смещения -> второй модуль перевел это смещение в конкретные координаты -> первый модуль отрисовал.
А когда нужно сделать фокус-покачивание или ещё какие-то манипуляции с камерой, то заменяете третий модуль и управляете им программно.
https://c9.io/ можете попробовать начать вот с этого. Тут даже редактор кода не потребуется + можно бесплатно проекты заводить ( у меня штук пять, правда они публик при этом ).
Лучше никакой! Все известные мне заточены только под отображение текста, а не для "конструирования". По этому лично мне было бы проще сделать все самому с полного нуля чем подстраиваться под полную ерунду разукрашенную и разпиаренную маркетолагами. Если что-то и использовать то только библиотеки на чистом js.
Юрий: я как бы и написал что мне этого не достаточно чтобы другие это поняли. И всего-то. Ну а если Вы считаете что между событиями requestAnimationFrame, реактовскими не может влесть больше одного нативного, то что с Вами филосовствовать..? Прежде чем я Вам смогу это объяснить, мне придется ного дней учить Вас.
G_tost: это в конфиге загрузчика. Но если его нет, то я не знаю тогда как... Возможно прямая ссылка на библиотеку.. Этого я не знаю, никогда так не писал.
Neyury: это хорошо что понимаете. А вот теперь представьте что я тоже не понимаю зачем Вам это нужно. Хотите знать как устроен квантовый мир, станьте физиком, иначе Вы даже ответа не поймете.