Как создать анимированную интерактивную схему?

Ссылка скопирована
9 апреля 2026 1 ответ

Есть вот такой сайт https://hlebozavod9.ru/

На нем есть вот такая схема
https://disk.yandex.ru/i/GP12c0mWKc9yUg

Она реализована таким образом:
1. Есть общая статичная картинка со зданиями и прочим
2. Есть SVG в котором прорисованы "белые" состояния зданий. Который отображаются при наведении
3. И есть картинка с анимацией где бегают человечки и так далее. В этой картинке быстро меняется src атрибут от 1 до 50 примерно. В итоге создается эффект анимации.

Вопрос: Можно ли сделать примерно тот же функционал, но по другому. Более оптимизированно и удобно, чем просто менять src у картинок.

Думали в сторонуу lottie , но дизайнеры говорят что у них 3d объекты и lottie для этого не очень подходит.

Самое главное чтобы можно было интерактивно взаимодействовать. Желательно чтобы была возможность ускорять/замедлять / останавливать / запускать анимацию в любой момент.

Дополнительно:

Если не ошибаюсь то в adobe illustator там толи плагин есть толи фича какая-то, благодаря которой специально под lottie можно экспортировать код, 3д модели любые

Ну то есть не просто экспорт svg, а именно под lottie, кароч загугли где-то эту тему

  • https://developer.mozilla.org/en-US/docs/Web/CSS/C...
  • imko, Идея интересная, но тут двухмерная модель, мне бы пример где есть 3-х мерная модель как на сайте примере. В этом вся загвостка.
  • szQocks, Дизайнер работает в after effects , наверное да , там есть какой то плагин. Но вроде как он сказал что для 3d моделей почему то не подойдет.
  • vahromeevilya-widestudio, зайдите на сайт threejs там почти подобная анимация но она выполнена в webgl подключаете плагин и саму модель и мягко говоря результат будет
  • vahromeevilya-widestudio, а да да , after effects, перепутал, раз говорит нельзя значит походу нельзя - ему виднее, хотя думал что любые можно хм
  • vahromeevilya-widestudio, вот этот пример: https://threejs.org/examples/#webgl_animation_keyframes
  • Максим, Такс это уже поинтереснее, попробую поизучать что это такое
  • vahromeevilya-widestudio, там код есть...если разберётесь то цены не будет
  • vahromeevilya-widestudio, ну.. пока трехмерная модель не крутится она может быть представлена своей двухмерной проекцией, я не заметил ничего такого что требовало бы тру 3д
  • vahromeevilya-widestudio, а.. сами человечки 3д, ну одно другому не ешает, моделим чувака, крутим его трансформом)
  • imko, Хмм, хорошо, тоже подумаю над этим вариантом, может реально сработает.
  • vahromeevilya-widestudio, я конечно не большой эксперт в анимациях и сложных композициях но тут скорее всего работает общее правило - ради мелочевки не бери библы/фреймворки. Трансформы расчитываются браузером и обрабатываются ГП это самый простойй и производительный варианьт когда нету специфических требований
  • Как сейчас реализована анимация:
    У вас есть 50 срендереных картинок анимации вроде этой и каждые n милисекунд меняется номер картинки

    Как создать анимированную интерактивную схему?

    В таком виде реализации вы ограничены по плавности анимации именно количеством таких кадров и в целом больше ничем

    Как можно сделать лучше:
    Вариант 1.
    Анимация станет плавнее, если просто будете вопроизводить ее в 60 fps.
    То есть просто поменяете код для смены аттрибута src на что-то такое:

    let i = 0; let a = setInterval(()=>{     document.querySelector("body > div.page > div.places > div > div > div > div.places-map-wrap > div > div > img").src= "/assets/images/home_sequence/" + i + ".webp";     i = (i + 1) % 49; }, 1000/60) // 1000 / 60 означает что вы хотите вопроизводить 60 кадров в секунду

    let i = 0; let a = setInterval(()=>{ document.querySelector("body > div.page > div.places > div > div > div > div.places-map-wrap > div > div > img").src= "/assets/images/home_sequence/" + i + ".webp"; i = (i + 1) % 49; }, 1000/60) // 1000 / 60 означает что вы хотите вопроизводить 60 кадров в секунду

    Минусы: из-зи увеличения fps таким способом увеличится и скорости анимации

    Вариант 2.
    Cделать не 50 типовых картинок, а 100 и менять их способом из варианта 1 c фпс в два раза выше чем сейчас
    Тогда удастся сохранить и скорость анимации и сделать плавнее
    Минусы: много работы (придется переделывать раскадровку всей анимации) + упадет скорость сайта из-за того что придется загружать в два раза больше картинок

    Вариант 3.
    ВОЗМОЖНО самый удачный, но ТОЧНО самый сложный и требующий много сил. Используйте вместо картинок вида

    Как создать анимированную интерактивную схему?

    canvas и библиотеку three.js (тут уже как-то самому придется разбираться, советов дать не могу, потому что сам недостаточно работал с этой библиотекой
    Минусы: вполне вероятно, что из-за того что на сайт добавится +1 библиотека, а также 3д модельки скорость сайта будет не сильно отличаться от второго варианта.
    Плюс по сравнению с вариантом № 2: Вы получите полную свободу в управлении этой анимацией. Сможете когда надо замедлить, когда надо ускорить без лишней работы
    В целом скорость сайта не должна стать большой проблемой, потому что это не первый экран и даже не самое важное в карте. Соответственно можно что-то подгрузить попозже, что-то пораньше, что-то вообще не подгружать если слабый инет
    Иными словами, загружать эту анимацию только после того как загрузили все остальное

    В общем я постарался понятно расписать минусы и плюсы. Плюс многое зависит от того, как сделана эта штука у ваших дизайнеров
    Если что-то непонятно объяснил - спрашивайте

    • В целом все понятно, походу придется изучать tree.js . Наличие доп библиотеки на сайте не критично, так как все кэшируется.
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Роман IT Ответ

    Для создания анимированной интерактивной схемы существует несколько способов, в зависимости от ваших потребностей и уровня опыта. Одним из популярных способов является использование библиотеки JavaScript, такой как D3.js, которая позволяет создавать красивые и динамичные визуализации данных.

    Прежде всего, вам необходимо определить структуру вашей схемы и какие элементы вы хотите включить в нее. Затем вы можете использовать HTML и CSS для создания базовой структуры вашей схемы, а затем добавить интерактивность с помощью JavaScript.

    Пример создания анимированной интерактивной схемы с использованием D3.js:

     
     
     
      <title>Interactive Diagram</title>
     
     
     
     
     
     
        const svg = d3.select("svg");
     
        // Создаем круг
        svg.append("circle")
          .attr("cx", 50)
          .attr("cy", 50)
          .attr("r", 20)
          .attr("fill", "blue")
          .on("mouseover", function() {
            d3.select(this).attr("fill", "red");
          })
          .on("mouseout", function() {
            d3.select(this).attr("fill", "blue");
          });

    <title>Interactive Diagram</title> const svg = d3.select("svg"); // Создаем круг svg.append("circle") .attr("cx", 50) .attr("cy", 50) .attr("r", 20) .attr("fill", "blue") .on("mouseover", function() { d3.select(this).attr("fill", "red"); }) .on("mouseout", function() { d3.select(this).attr("fill", "blue"); });

    В этом примере мы создаем круг на SVG-холсте и добавляем ему интерактивность: при наведении мыши круг меняет цвет с синего на красный.

    Вы также можете использовать другие библиотеки, такие как GreenSock Animation Platform (GSAP) или Anime.js, для создания анимаций на вашей схеме. Кроме того, вы можете использовать CSS анимации для добавления дополнительных эффектов.

    Надеюсь, эта информация поможет вам создать свою анимированную интерактивную схему!

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно