Как редактор 3D-моделей Blockbench использует API EyeDropper, чтобы пользователи могли выбирать цвета где угодно

API EyeDropper предоставляет механизм для создания инструмента «Пипетка», который позволяет пользователям выбирать цвета со своих экранов, в том числе за пределами окна браузера. Узнайте, как редактор 3D-моделей Blockbench использует этот API в своей кодовой базе.

Введение

(Эта статья также доступна в виде видео.)

Blockbench — бесплатный современный редактор моделей для низкополигональных моделей с пиксельными текстурами. Если вы когда-либо играли в Minecraft , скорее всего, вы видели ресурсы, созданные с помощью Blockbench, например козу, которая была добавлена ​​в Minecraft как часть обновления Caves and Cliffs, часть 1. Код Blockbench под лицензией GPL версии 3 открыт . исходник на GitHub .

Овца из Майнкрафта, созданная с помощью Blockbench.

Чтобы попробовать Blockbench, запустите приложение, перейдя на web.blockbench.net . Как PWA, вы можете установить его на свой рабочий стол и запустить в отдельном окне. Если вы новичок в 3D-моделировании, вы можете начать с одного из многих примеров файлов .bbmodel с открытым исходным кодом, которые можно найти с помощью поиска кода на GitHub. Например, попробуйте модель поезда, которую вы можете увидеть на следующем снимке экрана.

Редактирование модели поезда в Blockbench.

API-интерфейс EyeDropper

Среди многих других функций Blockbench предлагает функцию рисования, поэтому, если вы когда-либо хотели пометить поезд, теперь вы можете это сделать. Пожалуйста, не делайте этого в реальном мире. Вы можете видеть, что для маркировки я использовал ярко-оранжевый цвет.

Тег «Здесь был Том» и знак мира, написанный на модели поезда.

На самом деле это апельсин, который я извлек прямо из обоев macOS Ventura через API EyeDropper . Как вы можете видеть на следующем снимке экрана, пипетка (оранжевый кружок слева от окна приложения) может выходить за пределы приложения прямо на мой рабочий стол или в любое другое приложение, которое у меня открыто.

Показана палитра цветов, выходящая из приложения Blockbench и выбирающая цвет из фонового изображения рабочего стола.

Поскольку Blockbench имеет открытый исходный код, вы можете узнать, как разработчики реализовали API. Рассматриваемый код находится в JannisX11/blockbench/blob/master/js/texturing/color.js . Blockbench также доступен как приложение Electron.js. Как видно из комментария, в нем предусмотрена специальная обработка случаев для проблемы в Electron , когда палитра цветов не может выбрать цвет за пределами окна. С веб-API, который вы можете увидеть в выделенной части фрагмента кода, это не проблема. Использовать API просто. Создайте экземпляр нового экземпляра EyeDropper и вызовите его метод open() . Этот метод разрешает строку sRGBHex , представляющую выбранный цвет в шестнадцатеричном формате sRGB .

new Action("pick_screen_color", {
  icon: "colorize",
  category: "color",
  condition: () => typeof EyeDropper == "function",
  click: async function () {
    if (Blockbench.platform == "win32") {
      // workaround for https://github.com/electron/electron/issues/27980
      ipcRenderer.send("request-color-picker", {
        sync: settings.sync_color.value,
      });
    } else if (typeof EyeDropper == "function") {
      let dropper = new EyeDropper();
      let { sRGBHex } = await dropper.open();
      ColorPanel.set(sRGBHex);
    }
  },
});

Выводы

Палитры цветов — это небольшая, но важная часть программного обеспечения для творчества, такого как Blockbench. Чаще всего желаемый цвет не является частью окна приложения, а находится где-то снаружи, возможно, даже на другом экране . Палитра цветов, которая не позволяет выбирать цвета в таких случаях, может оказаться практически бесполезной. API EyeDropper был создан именно для подобных случаев использования и отлично работает для Blockbench с момента его реализации в ноябре 2021 года. Если вы играете с Blockbench, удачного выбора цвета!