איך עורך המודלים התלת-ממדי Blockbench משתמש ב-EearDropper API כדי לאפשר למשתמשים לבחור צבעים מכל מקום

EyeDropper API מספק מנגנון ליצירת כלי טפטפת שמאפשר למשתמשים לדגום צבעים מהמסכים שלהם, כולל מחוץ לחלון הדפדפן. איך נערך המודל התלת-ממדי Blockbench משתמש ב-API הזה בקוד הבסיסי שלו.

מבוא

(המאמר הזה זמין גם כסרטון).

Blockbench הוא עורך מודלים מודרני בחינם למודלים עם פוליגוניים מעטים ומרקמים של אומנות פיקסלים. אם שיחקתם פעם ב-Minecraft, סביר להניח שראית נכסים דיגיטליים שנוצרו באמצעות Blockbench, למשל העז שנוספה ל-Minecraft כחלק מעדכון המערות והצוקים, חלק 1. הקוד של Blockbench ברישיון GPL גרסה 3 הוא קוד פתוח ב-GitHub.

כבש Minecraft שתוכנן באמצעות Blockbench.

כדי לנסות את Blockbench, פותחים את האפליקציה בכתובת web.blockbench.net. כ-PWA, אפשר להתקין אותה במחשב ולהפעיל אותה בחלון נפרד. אם אתם רק מתחילים ליצור מודלים תלת-ממדיים, תוכלו להתחיל עם אחת מהדוגמאות הרבות לקובצי .bbmodel בקוד פתוח שאפשר למצוא באמצעות חיפוש הקוד ב-GitHub. לדוגמה, נסו את המודל 'רכבת' שמוצג בצילום המסך הבא.

עריכת מודל רכבת ב-blockbench.

EyeDropper API

בין היתר, Blockbench מציע תכונה של צביעה, כך שאם תמיד רציתם לתייג רכבת, עכשיו תוכלו. אין לעשות זאת בעולם האמיתי. אפשר לראות שבתיוג שלי השתמשתי בכתום בהיר.

התג 'טום היה כאן' וסימן שלום שכתוב על דגם הרכבת.

זהו למעשה תפוז שחולצתי ישירות מהטפט של macOS Ventura באמצעות EyeDropper API. כמו שאפשר לראות בצילום המסך הבא, הטפטפת (העיגול הכתום שבצד שמאל של חלון האפליקציה) יכול להגיע ישירות לאפליקציה ישירות משולחן העבודה שלי, או לכל אפליקציה אחרת שפתחתי.

חלון בוחר הצבעים שמופיע מתוך אפליקציית Blockbench ובוחר צבע מתוך תמונת הרקע של שולחן העבודה.

Blockbench הוא קוד פתוח, כך שתוכלו ללמוד איך המפתחים הטמיעו את ה-API. הקוד המדובר נמצא ב-JannisX11/blockbench/blob/master/js/texturing/color.js. Blockbench זמין גם בתור אפליקציית Electron.js. כפי שאפשר לראות מהתגובה, יש לו טיפול מיוחד במקרה של בעיה ב-Electron, שבה בורר הצבעים לא יכול לבחור צבע מחוץ לחלון. ב-Web 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. ברוב המקרים, הצבע הרצוי הוא לא חלק מהחלון של האפליקציה, אלא אפשר למצוא אותו במקום כלשהו בחוץ, אולי אפילו במסך אחר. בוחר צבעים שלא מאפשר לבחור צבעים במקרים כאלה יכול להיות כמעט חסר תועלת. EyeDropper API נוצר בדיוק לתרחישים לדוגמה כאלה, והוא עובד מצוין ב-Blockbench מאז שהווטמע בנובמבר 2021. אם אתם משחקים ב-Blockbench, תהנו מהבחירת הצבעים!