Как программно создать картинку с анимированными аспектами
Вопрос
Предыстория
Клиент попросил меня создать картину мира с анимированными стрелками / лучами, которые идут из одной части света в другую.
Лучи будут рандомизированы, будут представлять транзакцию, будут исчезать после того, как они произойдут, и будут увеличиваться по частоте с течением времени.Лучи будут начинаться на границе одной страны и заканчиваться на границе другой.По мере выполнения каждой анимированной транзакции в нижней части изображения будет отображаться постоянно обновляемая сумма сумм всех транзакций.Суммы отдельных транзакций будут рандомизированы.На изображении также будет показан год, который будет увеличиваться каждые n секунд.
Рандомизация, суммирование и увеличение для меня не проблема, но я в растерянности относительно того, как подойти к анимации стрелок / лучей.
Мой вопрос в том, каков наилучший способ сделать это?Какие фреймворки / библиотеки лучше всего подходят для этой работы?
Я лучше всего владею python, поэтому предложения на python для меня наиболее просты, но я открыт для любого элегантного способа сделать это.Клиент представит это в виде слайда в презентации на компьютере с Windows.
Решение
Если вы любитель приключений, используйте OpenGL :)
Вы можете нарисовать кривые Безье в 3d-пространстве поверх текстурированной плоскости (карта земли), вы можете указать для них толщину и вы можете нарисовать точку (маленький конус) в конце.Это просто и выглядит красиво, проблема в том, чтобы изучить основы OpenGL, если вы им раньше не пользовались, но это было бы весело и, вероятно, полезно, если вы увлекаетесь программированием графики.
Вы можете использовать OpenGL из python либо с пиопенгль или пиглет.
Если вы создадите анимацию таким образом, вы можете записать ее в avi-файл (используя камтазия или что-то подобное), которые можно поместить на слайд презентации.
Другие советы
Клиент представит это в виде слайда в презентации на компьютере с Windows
Я думаю, что это ключ к вашему ответу.Прежде чем перейти к 3d-реализации и написать весь код в мире для создания этой функции, вам нужно взглянуть на презентационное программное обеспечение.Скорее всего, ваши варианты будут сводиться к двум вещам:
- Анимированный Gif-файл
- Пользовательские Сценарии презентаций
Очевидно, что анимированный gif-файл не идеален из-за того, что он повторяется при завершении рендеринга, и чтобы он длился долго, получился бы большой gif.
Пользовательские сценарии презентаций, вероятно, были бы другим способом, позволяющим ему представить это в презентации, не запуская никаких побочных программ и не делая ничего странного.Я не уверен, какое презентационное приложение является целевым, но это может быть ценной информацией.
Похоже, он более нетехничен, и просить о чем-то, чего он не осознает, будет сложно.Я думаю, вам следует предложить несколько вариантов, объяснить трудности в их реализации и предложить другое решение, которое подпадает под категорию "за свои деньги".
Это во многом зависит от усилий, которые вы хотите затратить на это, но в общих чертах это простой способ.Можно было бы загрузить изображение стрелки и использовать библиотеку рисования для раскрашивания и поворота ее в нужном направлении (или нарисовать ее с помощью фигур / кривых).
Наконец, чтобы действительно анимировать его, выполните интерполяцию между координатами на основе времени.
Если это просто для презентации, я бы использовал Macromedia Flash или аналогичную анимационную программу.(сделал бы то же самое, что и выше, но вам не нужно ничего программировать)