3D 模型編輯器 Blockbench 如何使用 EyeDropper API 讓使用者選擇世界各地的顏色

EyeDropper API 提供一種建立滴管工具,可讓使用者從自己的畫面 (包括瀏覽器視窗外) 取樣顏色。瞭解 3D 模型編輯器 Blockbench 如何在程式碼集中使用這個 API。

雅尼斯.彼得森 (Jannis Petersen)
Jannis Petersen

簡介

(這篇文章也可以影片的形式提供)。

Blockbench 是免費的現代化模型編輯器,適用於採用像素藝術紋理的低多邊形模型。如果您曾經玩過 Minecraft,大概會見過使用 Blockbench 建立的資產 (例如山羊)。在《洞穴與懸崖更新》(第 1 部分) 中,將山羊加入 Minecraft 中。GPL 第 3 版授權的 Blockbench 程式碼是 GitHub 上的開放原始碼

使用 Blockbench 設計的 Minecraft 牧羊。

如要試用 Blockbench,請前往 web.blockbench.net 以啟動應用程式。做為 PWA,您可以將應用程式安裝至電腦,並在獨立視窗中啟動。如果您是第一次使用 3D 模型建立模型,可以從眾多開放原始碼 .bbmodel 檔案範例開始著手,您可以使用 GitHub 的程式碼搜尋功能找到。例如,試試訓練模型,如下方的螢幕截圖所示。

在 Blockbench 中編輯訓練模型。

EyeDropper API

在許多其他功能中,Blockbench 就提供彩繪功能,因此現在你也能標記火車名稱。請勿在現實世界中這麼做。如畫面所示,我使用亮橘色的標記。

「Tom was here」標記和在訓練模型上寫著和平標誌。

這其實是我透過 EyeDropper API 直接從 macOS Ventura 桌布擷取的橘色。如以下螢幕截圖所示,滴管 (應用程式視窗左側的橘色圓圈) 可直接從應用程式外連到桌面,或我開啟的任何其他應用程式。

顯示在 Blockbench 應用程式外的顏色挑選器,並從電腦版背景圖片中挑選顏色。

透過 Blockbench 做為開放原始碼後,您可以瞭解開發人員如何實作這個 API。相關程式碼位於 JannisX11/blockbench/blob/master/js/texturing/color.js。Blockbench 也可做為 Electron.js 應用程式使用。在註解中,我們有針對 Electron 問題的特殊案例處理,而顏色挑選器無法挑選視窗以外的顏色。如果您使用 Web API,如程式碼片段中醒目顯示的部分所示,這並不會造成問題。使用 API 的方式相當簡單。將新的 EyeDropper 例項執行個體化,並呼叫其 open() 方法。此方法會以十六進位 sRGB 格式表示所選顏色的 sRGBHex 字串。

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。經常出現的顏色並非應用程式視窗的一部分,而是顯示在外部的某處,甚至在不同螢幕上也能找到。如果顏色挑選器在這類情況下無法挑選顏色,可能看起來非常微不足道。EyeDropper API 專為這類用途而建立,自 2021 年 11 月實作以來,一直在 Blockbench 方面都十分有效。如果你們玩的是 Blockbench,請開心挑選顏色!