Jak Blockbench używa interfejsu EyeDropper API w edytorze modeli 3D, aby umożliwić użytkownikom wybieranie kolorów z dowolnego miejsca

Interfejs EyeDropper API udostępnia mechanizm do tworzenia narzędzia zakraplacza, które pozwala użytkownikom pobierać próbki kolorów z ekranów, w tym poza oknem przeglądarki. Dowiedz się, jak edytor modeli 3D Blockbench używa tego interfejsu API w swojej bazie kodu.

Wprowadzenie

(Ten artykuł jest też dostępny w formie filmu).

Blockbench to nowoczesny, bezpłatny edytor modeli z teksturami w technologii pixel art. Jeśli grałeś/grałaś w Minecraft, prawdopodobnie widziałeś/widziałaś zasoby utworzone w Blockbench, na przykład kozę, która została dodana do Minecrafta w ramach aktualizacji Jaskinie i Urwiska, część 1. Kod Blockbench na licencji GPL w wersji 3 jest dostępny w wersji open source na GitHubie.

Owca w Minecraft zaprojektowana za pomocą Blockbench

Aby wypróbować Blockbench, otwórz aplikację, przechodząc na stronę web.blockbench.net. Jako aplikację PWA możesz ją zainstalować na komputerze i uruchomić w oknie osobnym. Jeśli dopiero zaczynasz modelować w 3D, możesz zacząć od jednego z wielu przykładów plików .bbmodel open source, które znajdziesz w wyszukiwarce kodu GitHuba. Wypróbuj na przykład model pociągu widoczny na poniższym zrzucie ekranu.

Edytowanie modelu pociągu w Blockbench.

Interfejs EyeDropper API

Wśród wielu innych funkcji Blockbench oferuje funkcję malowania, dzięki której możesz dodać tag do pociągu. Nie rób tego w prawdziwym życiu. Jak widać, do oznaczenia użyłem jaskrawo pomarańczowego koloru.

Etykieta „Tom was here” i znak pokoju namalowany na modelu pociągu.

To pomarańcza wyodrębniona bezpośrednio z tapety macOS Ventura za pomocą interfejsu EyeDropper API. Jak widać na tym zrzucie ekranu, pipeta (pomarańczowe kółko po lewej stronie okna aplikacji) może sięgnąć poza aplikację, bezpośrednio na pulpit lub inną otwartą aplikację.

Selektor kolorów wyciągnięty z aplikacji Blockbench i wybierający kolor z obrazu tła na pulpicie.

Blockbench jest oprogramowaniem open source, więc możesz dowiedzieć się, jak deweloperzy wdrożą interfejs API. Kod, o którym mowa, znajduje się w pliku JannisX11/blockbench/blob/master/js/texturing/color.js. Blockbench jest też dostępny jako aplikacja Electron.js. Jak widać z tego komentarza, ma on specjalny przypadek obsługi problemu w Electronie, w którym selektor kolorów nie może wybrać koloru poza oknem. W przypadku interfejsu web API, który możesz zobaczyć w wyróżnionym fragmencie kodu, nie jest to problem. Korzystanie z interfejsu API jest proste. Utwórz nową instancję EyeDropper i wywołaj jej metodę open(). Ta metoda zwraca ciąg znaków sRGBHex reprezentujący wybrany kolor w szesnastkowym formacie 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);
    }
  },
});

Podsumowanie

Wybieraki kolorów to mały, ale ważny element oprogramowania do tworzenia, takiego jak Blockbench. Najczęściej pożądany kolor nie znajduje się w oknie aplikacji, ale gdzieś na zewnątrz, a czasem nawet na innym ekranie. Selektor kolorów, który nie pozwala wybrać kolorów w takich przypadkach, może być prawie bezużyteczny. Interfejs EyeDropper API został stworzony właśnie do takich zastosowań i od czasu wdrożenia w listopadzie 2021 r. świetnie się sprawdza w Blockbench. Jeśli grasz w Blockbench, życzę udanego doboru kolorów.