Russian Qt Forum
Ноябрь 22, 2024, 13:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Анимашки, графы и пытон  (Прочитано 12322 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Апрель 16, 2021, 14:06 »

Ну так и начните разрабатывать. Сомневаюсь, что найдётся лох, кто подобное будет делать нахаляву.
Прибегаете к дешевым приемам
Цитировать
Ты хочешь чтобы за тебя сделали твою работу!
Такой упрек можно бросить любой теме

Если подобное заказывать - ТЗ всё равно будет нужно.
Если заказывать - то нужна хоть какая-то надежда на "сасес" Улыбающийся А из нашего обсуждения она даже меньше нуля  Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #16 : Апрель 16, 2021, 14:26 »

1) написать аналогичный тестовый код на С++
2) определить его ключевые элементы: какие классы и объекты используются
3) создать к ним питоновские привязки (по-моему один из вариантов — SWIG)
4) переписать 1) на питоне для верификации

не знаю, может поможет подобное из другого проекта (понятия не имею как оно работает):
- https://github.com/xbmc/xbmc/tree/master/xbmc/interfaces/swig
- https://github.com/xbmc/xbmc/tree/master/xbmc/interfaces/python
- https://github.com/xbmc/xbmc/tree/master/tools/codegenerator
Спасибо за ссылки, но (как я понял) они посвящены интеграции пытона. Это давно есть (PyQt, спасибо sergek). И небольшой, минимальный опыт создания API на пытоне (для др целей). Трудности 100% "идейные"

1) написать аналогичный тестовый код на С++
Ну хорошо, давайте попробуем, вот вверху описана простая сцена "стадион, гол!! (штангв)". Или предложите др, нет проблем. Что писать? И у меня как-то  в голове совсем пусто.

Такое иногда бывает. Помню в школе писал сочинение "Осень". Начал бодро
Цитировать
Настала осiнь. Поховалися комахи та жаби. Все коротшають та коротшають днi
Эти неск фраз я где-то слышал. Но дальше - я не могу придумать ничего. Совсем. Включив логическое мЫшление я еще дописал
Цитировать
Все длиннiшають та длиннiшають ночi
Хотя понимал что учительнице это не понравится. В общем - тупик
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #17 : Апрель 16, 2021, 15:09 »

и как писать, словами? Улыбающийся никто кроме вас ваш код не видит, что в нем доступно — неизвестно.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #18 : Апрель 16, 2021, 15:23 »

Такое иногда бывает. Помню в школе писал сочинение "Осень". Начал бодро
Цитировать
Настала осiнь. Поховалися комахи та жаби. Все коротшають та коротшають днi
Эти неск фраз я где-то слышал. Но дальше - я не могу придумать ничего. Совсем. Включив логическое мЫшление я еще дописал
Цитировать
Все длиннiшають та длиннiшають ночi
Хотя понимал что учительнице это не понравится. В общем - тупик

Можно было еще ж написать, что "почало падаты лыстя, та поховолыся билкы та дятлы" Улыбающийся
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #19 : Апрель 16, 2021, 20:58 »

Если заказывать - то нужна хоть какая-то надежда на "сасес" Улыбающийся А из нашего обсуждения она даже меньше нуля  Улыбающийся
Просто есть впечатлнение (опять же, из нашего разговора), что вы сами не осознаёте, что именно вам надо. Я потому и затеял разговор за ТЗ.
Нормальный ТЗ как раз и предполагает, что заказчик точно знает, что он хочет. И знает, как это проверить.
А вариант "хочу, шоб было круто" - чаще всего означает, что работа:
1) никогда не будет закончена (ибо условия будут меняться на лету)
2) достойна не будет оплачена (в последний момент появится какая-нибудь "хотелка", которая приведёт к полному переписыванию кода (или к существенной его переработке).
Просто задача довольно обширная. Несколько операционных систем (если упоминать Qt), несколько движков игр (если анимации делать именно для игр), несколько языков программирования (допустим в Qt c++, а в unity c#). Соответственно или корректные переходники, или дикие костыли. Ну, либо можно поиграть в национальную русскую забаву "каша из топора". Улыбающийся
« Последнее редактирование: Апрель 16, 2021, 21:29 от tux » Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #20 : Апрель 17, 2021, 10:30 »

Нормальный ТЗ как раз и предполагает, что заказчик точно знает, что он хочет.
А в данном случае он как раз и не знает - и в этом смысл задачи Улыбающийся Простая аналогия - язык программирования. Для какой (конкретной) задачи он нужен? Ответа (конкретного, точного, как Вы настаиваете) здесь нет. Так что, выходит "язык программирования - бесполезная вещь"? Вовсе нет.

И знает, как это проверить.
А вот это неплохая мыслишка. Хорошо, пусть что-то сделано, как это проверить/оценить? Наверное так: исполнитель должен предъявить код на созданном API который обеспечивает анимацию 3-4 заранее известных сцен (стадион и др). Если это работает, то в присутствии заказчика исполнитель (напр в течение часа) пишет код на API для пары задач заранее подготовленных заказчиком, но исполнителю заранее неизвестных. Чтобы было ясно чего стоит созданное API или так, захардкодил.

Разумеется всегда можно придумать такую сцену что никакое API не потянет  Улыбающийся Или скрипт окажется слишком сложным. Ну как видно из примеров выше речь идет о простых случаях. Доклепаться конечно можно и тут (а что такое "просто"?), но в конце-концов какое-то "понимание" между заказчиком и исполнителем должно быть всегда
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #21 : Апрель 17, 2021, 10:55 »

и как писать, словами? Улыбающийся никто кроме вас ваш код не видит, что в нем доступно — неизвестно.
Писать псевдокодом. Никакого кода у меня пока нет, что доступно - надо решать. Есть приложение на плюсах, оно располагает предметом анимации (character) и набором именованных анимаций для него (напр idle, walk, run, jump). Кадр за кадром приложение вызывает скрипт который должен вернуть имя текущей анимации и ее (локальный) кадр. Все, дальше приложение разберется, на экране char напр побежал.

Таким образом скрипт имеет по меньшей мере "object" и доступ ко всем его анимациям. Разумеется если в скрипте мы хотим "реагировать на событие", то скрипт должен иметь ф-ции проверки этого события. Ну это не проблема, подобное уже делал.

А вот какие методы должен иметь object в скрипте - большой вопрос, собсно это и есть предмет разработки.
Записан
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #22 : Апрель 18, 2021, 10:48 »

Хорошо, пусть что-то сделано, как это проверить/оценить?
Должно быть полное соответствие ТЗ. Если уж совсем "по-взрослому", то к ТЗ должен прилагаться "протокол испытаний".
С границами возможных отклонений в качестве ПО. Ну и со штрафами разработчику, если он косячит. И с жестким дедлайном.
А "код на созданном АПИ" - это уже будет совсем отдельная работа, за совсем другие деньги.
Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #23 : Апрель 18, 2021, 11:33 »

Должно быть полное соответствие ТЗ.
...
...за совсем другие деньги.
Я не предлагал эту работу, во всяком случае пока, поэтому разговоры о ТЗ и деньгах, мягко говоря, преждевременны.

И с чего Вы решили что это вещь "достойная заказа"? Может потому что прозвучало слово "игра"?  Улыбающийся Нет, созданием игр я не занимаюсь (там и без меня умельцев хватает). Речь идет об "интеграции скриптов в приложение", в принципе задача типовая, но везде своя специфика, здесь - анимации.

В общем, давайте смотреть на вещи проще. А то пока я ничего не увидел и не услышал, ну вот совсем ничего. А меня уже посылают писать ТЗ и заряжать бабульки  Улыбающийся
Записан
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #24 : Апрель 18, 2021, 12:36 »

В общем, давайте смотреть на вещи проще. А то пока я ничего не увидел и не услышал, ну вот совсем ничего.
Давайте. Я про ТЗ говорил не в свете "заряжания бабулек", а в свете понимания масштаба задачи.
Совершенно понятно, что анимации используются не только в играх. Также понятно, что в силу отсутствия некоего общего API для подобных вещей, каждый разработчик пилит свой велосипед для решения этой задачи.
Я вот, пока, даже не представляю себе такой "комбайн" для решения этой задачи "в общем". Хотя, штука может быть весьма популярной, если её удастся осуществить. Но, даже если представить 4 ОС и с десяток движков (если смотреть на игры, к примеру), то API будет просто гигантским. Впрочем, возможно, что я и ошибаюсь...
Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #25 : Апрель 18, 2021, 16:43 »

Я вот, пока, даже не представляю себе такой "комбайн" для решения этой задачи "в общем". Хотя, штука может быть весьма популярной, если её удастся осуществить. Но, даже если представить 4 ОС и с десяток движков (если смотреть на игры, к примеру), то API будет просто гигантским. Впрочем, возможно, что я и ошибаюсь...
Попробуем с чего-то начать. Давайте плясать от того "какой скрипт должен написать юзер", учитывая что он вовсе не горит желанием учить какие-то скрипты, поэтому чем меньше ему писать - тем лучше. Та же сцена "стадион-гол" (не вижу др предложений), думаю идеальным вариантом было бы
Код:
if (global_frame() == 100)
 object.set_next_anim("apploud")
Задумка: метод set_next_anim автоматычно находит путь в графе от текущей анимации до "apploud" и помещает все найденные по дороге анимации на стек, дальше они тупо плеются. Конечно копаться в графе на пытоне нафиг надо, это на плюсах, со всеми удобствами, напр привлекая QStateMachine

Да, но что должно проигрываться дj кадра 100 и после того как кончится "apploud"? Нагружать этим скрипт никак не хочется. А не свалиться ли в "default"? Т.е. если текущая анимация кончилась и стек пуст - идем на default анимацию. А назначим дефаулт а приложении, там все равно список анимаций юзеру придется заполнять. А из скрыпта может дадим доступ.

Круто (червона рута)? Ну пока хватит, а то выходит "монолог" Улыбающийся. Критикуем, улучшаем, предлагаем
Записан
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #26 : Апрель 19, 2021, 12:46 »

Вы с кода начинаете. А надо с плана.
Понятно, что хочется открыть IDE и начинать "кодить", но так, обычно, ничего не выходит.
Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #27 : Апрель 19, 2021, 14:06 »

Вы с кода начинаете. А надо с плана.
Это когда части кода очевидны, или хотя бы "достаточно ясны", тогда да, торопиться писать не следует. А здесь все наоборот - главная трудность что нет никакого понятия что юзер должен писать, с этого и надо начинать. А "план" в данном случае подозреваю будет набором общих слов (типа "интеграция" и.т.п.), в общем верных, но ничего не проясняющих.

Продолжим, немного усложним задачу: юзер хочет нечто типа "волны", т.е. когда забили гол, сначала встают болельщики передних рядов, потом более дальних и.т.п.  Как это сделать скриптом ?

[off]Ну это точно ппц, дальше нравоучений дело не уйдет. Блин, ну хоть бы раз ошибиться   Плачущий[/off]
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #28 : Май 12, 2021, 12:00 »

Немного покрутил, поприкидывал, ну в общем придумать скриптовое API - "сама по себе" задача несложная. Проблема в том что API просто сваливает работу на ф-ции которые еще надо реализовать (как в примере выше). И пока выходит что каждая новая задача требует новых ф-ций, типа "замаскированный хардкодинг" Улыбающийся  Ну "на старте" это терпимо, нужно накопить какой-то набор базовых ф-ций.

Продолжим, немного усложним задачу: юзер хочет нечто типа "волны", т.е. когда забили гол, сначала встают болельщики передних рядов, потом более дальних и.т.п.  Как это сделать скриптом ?
Ну это слишком пошло/банально, для простоты считаем что это всем ясно.

Вот есть большой класс задач - подстройка анимации под заданную траекторию движения. Напр летит стая птиц - и каждая машет крылышками. Простое решение
Код:
// скрипт
anim = object.get_anim("flap")
anim.set_random_start(0.0, 2.0)
anim.set_random_speed(0.75, 1.25)
object.set_next_anim(anim)
Т.е. избавиться от однообразия чтобы стая не походила на взвод солдат идущих в ногу.

Ну а если "не так просто"? Перед работой я пью чай, курю и смотрю в окно, во дворе обычно летает десятка полтора голубей. И они совсем не "глупые птахи" чтобы все время крыльями хлопать - они машут при наборе высоты. А при снижении они "планируют", хотя в обоих случаях бывают редкие исключения (выглядят красиво).

Ну хорошо, юзер заготовил 2 короткие базовые анимации "flap" (взмах), и "plane" (планирование). Есть траектория движения (контейнер пар "номер кадра + позиция") и есть номер текущего кадра. На основании этой траектории нужно вычислить какую анимацию заряжать следующей (flap или plane). Как это сделать в скрипте?

Конечно "задача смешная", но проблема в том что нет никакой "матчасти" к которой можно привязаться.  Напр
Цитировать
А откуда я знаю какой формат у "траектории движения"? В каком виде это получает скрипт? Вот вы мне все это дайте, распишите, а потом я покажу силу богатырскую (ну конечно сначала покритикую)
При этом почему-то совсем не приходит в голову что если у кого-то хватило ума расписать - то тем более хватит реализовать.

Др трудный момент - делать такие гибкие ф-ции API которые могли бы юзаться в др задачах. Как уже говорил, с этим пока напряженка. Напр взлет/посадка (тех же птичек) - пока нет идей. Ах, ну да
Цитировать
Вот видите? Теперь он уже говорит про взлет/посадку, он же все время меняет задачу!
Улыбающийся Да, ну что поделать, задача такая, типа "динамическая" (не путать с динамическим программированием). Так редко, но бывает


Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.056 секунд. Запросов: 23.