Примеры Three.js - как к ним подойти

Я изучал Three.js и наткнулся на эти примеры от Nat Geo. Мне было интересно, знает ли кто-нибудь, как заставить колесо прокрутки контролировать ход анимации и как она смешивается с обычным видом их веб-сайта ... В первом примере кажется, что элемент webgl находится в фоновом режиме с обычным html элементы плавают над ним, но я не понимаю, как они синхронизировали анимацию с этим.

Если у кого-то есть представление о том, как они были созданы, я был бы признателен!

https://www.nationalgeographic.com/science/2017/09/cassini-saturn-nasa-3d-grand-tour/#enceladus

https://www.nationalgeographic.com/science/2016/11/exploring-mars-map-panorama-pictures/

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
96
2

Ответы 2

Прокрутка - это событие браузера.

Я специально не просматривал связанные страницы, вместо этого я опишу более общий сценарий.

Как только вы поймете, как работает событие, легко увидеть, что можно отслеживать, как далеко вы прокручивали текущую страницу. Посмотрите на расстояние прокрутки как на своего рода триггер: когда вы пройдете расстояние X, должно произойти что-то конкретное.

Рассмотрим приведенный ниже фрагмент, в котором пересечение определенных пороговых значений меняет цвет фона кнопки:

var button = document.getElementById("myButton");
var position = 0;

function scrollHandler(e) {
  e.preventDefault();
  if (e.wheelDeltaY > 0 || position !== 0) {
    position += e.wheelDeltaY;
  }
  console.info(position);
  if (position < 500) {
    button.style.background = "";
  }
  if (position > 500) {
    button.style.background = "red";
  }
  if (position > 1000) {
    button.style.background = "green";
  }
}

button.addEventListener("mousewheel", scrollHandler);
button.addEventListener("DOMMouseScroll", scrollHandler);
<input id = "myButton" type = "button" value = "BUTTON!" />

Запустите фрагмент кода, затем наведите указатель мыши на кнопку и прокрутите вверх / вниз.

Для анимации вам нужен время.

var uniTime = gl.getUniformLocation( prg, "uniTime" );
gl.uniform1f( uniTime, time );

Но вы можете обмануть и использовать количество прокрутки вместо реального времени. Например, если вам нужно, чтобы полная прокрутка экрана составляла 7 секунд, вы можете использовать этот фрагмент кода в цикле анимации:

time = 7000 * screen.scrollTop / screen.scrollHeight;

Вот живой пример: https://jsfiddle.net/m1a9qry6/23/

Другие вопросы по теме