3D 모델 편집기 Blockbench가 EyeDropper API를 사용하여 사용자가 어디서나 색상을 선택할 수 있도록 하는 방법

EyeDropper API는 사용자가 브라우저 창 외부를 포함하여 화면에서 색상을 샘플링할 수 있는 스포이트 도구를 만드는 메커니즘을 제공합니다. 3D 모델 편집기 Blockbench가 코드베이스에서 이 API를 어떻게 사용하는지 알아보세요.

토마스 슈타이너
토마스 슈타이너
야니스 피터슨
야니스 피터슨

소개

(이 도움말은 동영상 형식으로도 제공됩니다.)

Blockbench는 픽셀 아트 텍스처가 적용된 로우 폴리 모델을 위한 최신 무료 모델 편집기입니다. Minecraft를 플레이해 본 적이 있다면 Blockbench로 만든 애셋(예: Caves and Cliffs Update, 1부)의 일환으로 Minecraft에 추가된 염소를 본 적이 있을 것입니다. GPL 버전 3 라이선스가 부여된 Blockbench 코드는 GitHub의 오픈소스입니다.

Blockbench로 디자인한 Minecraft 양입니다.

Blockbench를 사용해 보려면 web.blockbench.net으로 이동하여 앱을 실행하세요. PWA의 경우 데스크톱에 설치한 후 독립형 창에서 실행할 수 있습니다. 3D 모델링을 처음 사용한다면 GitHub의 코드 검색을 사용하여 찾을 수 있는 여러 오픈소스 .bbmodel 파일 예시 중 하나로 시작할 수 있습니다. 예를 들어 다음 스크린샷에서 볼 수 있는 학습 모델을 사용해 보세요.

Blockbench에서 학습 모델 수정

EyeDropper API

Blockbench는 다양한 기능 중에서도 페인트 기능을 제공합니다. 따라서 기차에 태그를 지정할 수 있습니다. 실제 세계에서는 그렇게 하지 마세요. 제가 태그할 때 밝은 주황색을 사용했음을 알 수 있습니다.

학습 모델에 '톰이 있었다'라는 태그와 평화 기호

실제로는 EyeDropper API를 통해 macOS Ventura 배경화면에서 직접 추출한 주황색입니다. 다음 스크린샷에서 볼 수 있듯이 스포이트 (앱 창의 왼쪽에 있는 주황색 원)는 애플리케이션 외부에서 내 데스크톱이나 내가 연 다른 앱으로 바로 연결할 수 있습니다.

색상 선택 도구가 Blockbench 앱에서 나와 데스크톱 배경 이미지에서 색상을 선택하는 모습

Blockbench는 오픈소스이므로 개발자가 API를 구현한 방법을 알아볼 수 있습니다. 문제의 코드는 JannisX11/blockbench/blob/master/js/texturing/color.js에 있습니다. Blockbench는 Electron.js 앱으로도 제공됩니다. 댓글을 통해 확인할 수 있듯이 색상 선택 도구가 창 외부의 색상을 선택할 수 없는 Electron의 문제에 대한 특수한 케이스 처리가 포함되어 있습니다. 코드 스니펫의 강조표시된 부분에서 볼 수 있는 Web API의 경우에는 문제가 되지 않습니다. API 사용 방법은 간단합니다. 새 EyeDropper 인스턴스를 인스턴스화하고 open() 메서드를 호출합니다. 이 메서드는 선택된 색상을 16진수 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를 사용하여 플레이한다면 즐겁게 색을 피하세요!