Pull to refresh

Comments 17

В связи с самой анимацией вспомнилось старинное видео:


Более 40 лет назад, 1968 год… Группа под руководством Николая Николаевича Константинова создает математическую модель движения животного (кошки). Машина БЭСМ-4, выполняя написанную программу решения обыкновенных (в математическом смысле слова) дифференциальных уравнений, рисует мультфильм «Кошечка», содержащий даже по современным меркам удивительную анимацию движений кошки, созданную компьютером.


В части матриц, могу предложить недавнюю публикацию — habrahabr.ru/post/243011/
Спасибо большое за ссылки. Материала много — изучу, будет результат, обязательно отпишусь.
Я честно говоря профан несколько, но в чём отличие скелетной анимации от этого варианта?
Я тоже, не специалист, поэтому воспользуюсь определением из википедии, а потом сопоставлю его с вариантом из статьи: «Скелетная анимация заключается в том, что моделер создаёт скелет, представляющий собой как правило древообразную структуру костей, в которой каждая последующая кость «привязана» к предыдущей, то есть повторяет за ней движения и повороты с учётом ИЕРАРХИИ в скелете». Ключевое слово — иерархия. Если в скелетной анимации я «дерну за локоть», то дернется и кисть, В настоящем варианте — это просто точки без иерархии. Эти точки, скорее, напоминают технологию motion capture — копирование движения. С помощью уже добавлений, описанных мной, можно характер этих движений до некоторой степени разнообразить.
То что вы описали в коментарии называется «инверсная кинематика». И это не имеет отношения к самой анимации, это куда больше к ее созданию или моделированию тег же рагдолов.
Не сильно понимаю в чем смысл. В скелетной анимации никогда не было проблемой сделать собственно кости, скелет или фреймы (forward kinematics). Куда больше проблем в привязке изображения к костям и что бы это нормально выглядело, солвер риггинга.
понятно. это не серебряная пуля
смысл же для меня, например, подробнее если:
1. нужна 2D анимация, которую можно было бы сделать в куче продуктов а-ля dragonbones.effecthub.com/demo.html. НО! для этого надо изучить какой-нибудь из продуктов, чтоб понять, а годится ли? а удобен ли? а смогу ли я в нем разобраться? научиться моделировать? (одну из статей я обязательно посвящу тому, как «натянуть» скины на эти точки, используя РАЗНЫЕ проекции)
2. метод «инверсной кинематики» (спасибо, не знал) позволяет это сделать легко (в рамках конкретной узкой задачи, конечно) БЕЗ моделирования — перенося точки хоть из полюбившегося кино
3. при этом можно разнообразить типовые actions путем нехитрых манипуляций, описываемых в статье.
4. далее, на эти точки, понятно, легко цепляется реальный рэгдолл — чтоб умереть персонажу. или чтоб плавно сделать переход между разными actions. зачем он еще нужен?
5. хочется максимально облегчить код — не привлекать сторонние библиотеки без надобности — ради потенциальной кроссплатформенности (полезного кода ведь там только массив с точками, и «интерполлятор», остальное выносится в редактор)
Мне остается только поднять брови на такой ответ.
То есть Вы хотите сделать то что уже все давно сделали, но при этом вместо того что бы разобраться в предметной области хотите написать свой велосипед. Анимации со скелетом невероятно простая тема. Каждый студент с семестром линейной алгебры и теормеха сможет написать прямую кинематику а и обратную. Инверсная кинематика это не метод. Это задача. Методом решения может быть, напрмер, матрици Якоби. Про вообще не понял о чем Вы.
Больше всего удивление вызывает нежелание пользоваться инструментами. Как я уже говорил, написать скелетную движек скелетной анимации может каждый на коленке. Это элементарная задача. Даже оптимизировать его не сложно. Это делали десятки раз. Что есть не элементарной задачей — это делать анимации. Для этого люди придумали множество инструментов. Например, тот же блендер. Есть специализированные для 2Д, такие как Spine или Spriter. Да тот же флеш! Ну общим, ваш код може быть интересен только в академических целях. Практическое его применение может быть только во вред.
1. это не скелетная анимация — в первом же предложении отмечено.
это нежелание моделировать.
это попытка копировать (мне неучу, кажется, что скопировать и чуть откорректировать в определенных ситуациях проще и дешевле, нежели моделировать с нуля).
2. всегда завидовал умениям и знаниям студентов теормеха — я, к сожалению, был студентом медвуза.
3. что русскому хорошо, то немцу смерть — без претензий. Да — статья от неуча. Но, нет предела совершенству — научусь. И благодаря обсуждениям в том числе. Спасибо за это.

Виноват, если не смог ясно объясниться в рамках статьи.
Теормех это не факультет, это предмет (теоретическая механика), начало которого рассказывает о том как рассчитывать кинематику. Насколько я знаю его учат во всех технических ВУЗах. В нужной Вам части очень легко разобраться, хоте, мне тяжело об этом судить, так я ее давно знаю, и она уже отошла на один план с умножением и прочими простыми задачами над которыми не приходится задумываться. Просто хочу предупредить, что написать ее самому это просто. Куда сложнее — именно делать анимации. Т.е. получать ключевые позиции, и прочее. Не думаю что набивать цифры руками это вариант. Есть множество инструментариев для этого. Когда Вы пишите полностью свою систему, вы отказываетесь от этих инструментов, ничего собственно не преобретая.
Например, вы ведь не разрабатываете свой формат сжатия картинок, потому что не знаете как работает png. Если вы это сделаете вдруг, то вам придется или писать и поддерживать конверторы, или писать свой графический редактор, что занимает время, и, собственно не то что мы (я) хотим делать — писать игры.
метод, предложенный автором (Jochen Diehl) не предусматривает «получения» ключевых позиций, он НЕ создает анимацию, а именно КОПИРУЕТ прямо из раскадровки записи уже «готового движения». Затем просто соединяет точки линиями (в статье, на которую я ссылаюсь, все подробно описано).
Мне кажется, что между нами сложилось некоторое недопонимание.
«mocap на ...»
Mockup же, и Вы не среагировали на замечание об этом в ЛС уже сутки.
Видимо, имеется в виду не mock-up, а MOtion-CAPture
ага, не ответил — виноват. почему-то принял Ваше сообщение за рекламу (поздно было, похоже), хотел было было ответить… а потом подумал, что на рекламу обычно не отвечают
Я могу ошибаться, но вроде в флеше, а значит и акшенскрипте уже давно есть средства для создания 2д скелетной анимации с перетаскиванием мышей и прочими блекжеками и ш… ну вы понимаете.
Затем, если не секрет, чем вышеупомянутая «не скелетная анимация» все же отличается от «скелетной анимации», если в наличи имеются и джоинты (судя по статье даже с излишней z координатой) и матричные вычисления и интерполяция ключевых кадров?
Ну и в догонку, вопрос по мелочи, что означает в заголовке цифра 2?
нет, Вы не ошибаетесь — действительно для флэша существует много решений для СОЗДАНИЯ 2D анимации.
А вот автор оригинальной статьи (Jochen Diehl), помянутой в самом начале, которую он озаглавил как «Skeletal Animations» предложил способ не создания анимации, а КОПИРОВАНИЯ уже существующий анимации с любого раскадрованного движения.
Поскольку моя заметка писалась «по мотивам» статьи с названием «Skeletal Animations», то и я счел возможным в скобках «примазаться» к плодам его работы.
Джоинты (joint — сустав (англ.)) — в оригинальной статье автор отмечал точками в ключевых кадрах суставы. Если же фигуру «подключить» к физическому движку в качестве рэгдола, то обычные joint (суставы) могут стать специальными joint (сочленениями).

Наверное, перед моей заметкой, мне все-таки стоило переписать статью автора идеи — тогда не возникло бы столько недопонимания (я и сам при первом прочтении не понимал, при чем тут «скелетная анимация»).

Название «Skeletal Animations», как мне кажется, было дано ради звучности, привлечения внимания. Ведь идея описывалась в далеком 2007 году — не было тогда еще для флэша сегодняшнего инструментального разнообразия. Ну и как имя для JavaScript сделали очень похожим на популярный тогда Java, так и Jochen Diehl назвал статью «Skeletal Animations».
Sign up to leave a comment.

Articles