[javascript] P5.js에서 컨트롤러 및 센서와의 통합을 어떻게 진행하나요?

P5.js는 사용자 인터페이스를 만들고 센서와의 상호 작용을 위한 컨트롤러를 이용하는데에 매우 편리한 기능을 제공합니다. 이를 위해 ‘p5.dom’ 라이브러리를 사용하여 컨트롤러 및 센서와의 연결을 가능하게 할 수 있습니다.

먼저, p5.dom 라이브러리를 스케치에 추가합니다. 이를 위해 <script> 태그를 사용하거나, <head> 태그 안에서 p5.dom 라이브러리 스크립트를 로드합니다.

<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/addons/p5.dom.min.js"></script>

이제 컨트롤러를 만들어 보겠습니다.

let slider;

function setup() {
  createCanvas(400, 400);
  
  // 슬라이더 생성
  slider = createSlider(0, 255, 0);
  slider.position(10, 10);
}

function draw() {
  background(220);
  
  // 슬라이더 값을 이용하여 원 그리기
  let val = slider.value();
  fill(val);
  circle(width/2, height/2, 100);
}

위의 예제에서는 createSlider() 함수를 사용하여 슬라이더를 만들고, position() 함수를 사용하여 슬라이더의 위치를 지정합니다. slider.value()를 통해 슬라이더 값에 접근할 수 있고, 이 값을 가지고 그림을 그릴 때 사용할 수 있습니다.

위의 예제는 슬라이더를 이용하여 배경 색을 변경하는 간단한 예시입니다. P5.js에서는 다른 종류의 컨트롤러도 제공하며, 이를 사용하여 다양한 상호 작용을 구현할 수 있습니다.

이제 센서와의 통합을 살펴보겠습니다. 주로 웹 브라우저에서 접근 가능한 센서를 이용할 수 있습니다. 예를 들어, 가속도계 센서를 이용하여 스마트폰의 기울기를 감지하거나, 마이크를 이용하여 소리의 크기를 측정할 수 있습니다.

이러한 센서와의 통합은 p5.dom 라이브러리와 브라우저의 Web API를 함께 이용하여 구현할 수 있습니다. 여기서는 가속도계 센서를 이용한 예시를 보여드리겠습니다.

let xAcceleration = 0;

function setup() {
  createCanvas(400, 400);
  
  if (window.DeviceMotionEvent) {
    window.addEventListener('devicemotion', handleMotion);
  }
}

function handleMotion(event) {
  xAcceleration = event.accelerationIncludingGravity.x;
}

function draw() {
  background(220);
  
  // 센서 값을 이용하여 원 그리기
  let x = map(xAcceleration, -10, 10, 0, width);
  circle(x, height/2, 100);
}

위의 예제에서는 handleMotion() 함수를 통해 가속도계의 x축 가속도 값을 가져옵니다. map() 함수를 사용하여 센서 값의 범위를 캔버스의 범위로 변환한 후, 그래픽을 그립니다.

참고로, 센서를 이용한 통합은 사용자의 동의를 얻어야 할 수도 있습니다. 이를 위해 브라우저의 권한 요청 기능을 이용하거나, HTTPS를 통해 앱을 배포하는 등의 방법을 사용할 수 있습니다.

이것은 P5.js에서 컨트롤러 및 센서와의 통합을 진행하는 방법에 대한 간단한 예시입니다. 더 많은 정보는 P5.js 공식 문서를 참조하십시오.

참고 문서: