Media Art ProgrammingWeek 15 · Period 01 Handout

p5.js / Media Art Programming

1교시 — 진행 점검과 공통 가이드라인

Final Project Workshop 주제의 학생용 강의 자료입니다.

WEEK 15 PERIOD 01 P5.JS MEDIA ART

1교시 — 진행 점검과 공통 가이드라인

항목 링크
아웃라인 week-15-outline
다음 교시 week-15-period2-student
학습 목표
  • 기말 프로젝트의 현재 상태를 점검하고 1주일 안의 마일스톤을 스스로 설정합니다
  • 16주차 제출 요건(시연영상 + 소스코드)을 정확히 이해합니다
  • 자주 발생하는 6가지 기술 문제의 해결 패턴을 익힙니다
  • 1:1 면담을 준비하고, 면담에서 무엇을 묻고 합의할지 알고 옵니다

오늘은 작품을 완성하는 날이 아니라 방향을 확정하고 막힘을 푸는 날입니다. 완성은 다음 주말까지, 제출은 다음 주 화요일까지입니다.

오늘의 수업 흐름

  1. 1교시 — 공통 가이드라인 + 자주 막히는 6가지 해결 패턴
  2. 2·3교시 — 1:1 면담 (한 명당 5~6분)
  3. 비면담 시간 — 자기 자리에서 작품 작업

면담은 평가 자리가 아니라 막힌 것을 푸는 시간입니다. 부담 없이 솔직하게 가져오면 됩니다.


자기 점검 체크리스트

지금 노트북에서 P5.js Web Editor를 열고, 다음 항목을 자기 점검합니다.

막힌 부분은 구체적으로

“왜 안 되는지 모름”이라고만 적으면 도와드릴 수 없습니다. “X를 하려는데 Y가 안 됨” 형태로 다시 적습니다.


16주차 제출 요건

제출물 2가지

항목 내용
소스코드 P5.js Web Editor 스케치 링크 (Edit 권한 또는 다운로드 zip)
시연영상 30초~1분, 화면 녹화 (mp4, 100MB 이하)
Edit Link 필수

스케치 링크는 반드시 Edit Link로 공유해야 합니다. Present Link만 보내면 코드를 볼 수 없어 평가가 안 됩니다.

시연영상 촬영 가이드

화면 녹화 도구

  1. macOS: Shift + Cmd + 5 → 화면 일부 녹화 선택 → 녹화 시작
  2. Windows: Win + G (Xbox Game Bar) → 녹화 버튼
  3. OBS Studio (양 OS): 더 정밀한 녹화가 필요할 때 무료 사용

사운드 작품 주의사항

macOS는 시스템 사운드를 기본 녹화하지 않음

macOS 기본 녹화 도구는 시스템 사운드를 잡지 못합니다. 화면만 녹화되고 소리는 안 들어갑니다.

해결책 3가지입니다.

  1. BlackHole (무료) 또는 Loopback (유료) 설치 — 시스템 사운드를 녹화에 라우팅
  2. OBS Studio + 오디오 설정 — 시스템 사운드 캡처
  3. 외부 녹음 — 스피커로 재생 + 스마트폰으로 영상 따로 녹화 후 합치기

Windows는 Game Bar가 시스템 사운드를 기본으로 잡습니다. macOS만 이 추가 단계가 필요합니다. 주말 전에 한 번 테스트해봅니다.

인터랙션 작품 주의사항

마우스나 키보드로 인터랙션하는 작품은 커서가 보이도록 설정합니다. 시스템 환경설정에서 커서 강조 옵션을 켤 수 있습니다.

시연영상 구성 권장

  1. 0~5초: 시작 화면 + 작품 제목 (텍스트로라도)
  2. 5~50초: 다양한 인터랙션 시연 3~5가지 상황
  3. 50초~끝: 인상적인 한 컷 또는 페이드아웃
1분 안에 핵심 매력을

단조롭게 흐르는 1분보다, 인터랙션이 바뀌는 순간을 3~5개 보여주면 점수가 잘 나옵니다.

제출 마감

항목 내용
일시 다음 주 화요일 수업 시작 시각
방법 [LMS / 이메일 / 클라우드 — 강사 안내에 따름]
마감 직전 업로드 금지

1분이라도 늦으면 감점입니다. 매년 마감 직전 업로드 실패 사례가 있습니다. 최소 2시간 전에 업로드를 끝냅니다.


공통 트러블슈팅 6가지

면담 전에 자주 막히는 6가지를 미리 짚습니다. 여기서 해결되는 것은 면담에서 다시 묻지 않고, 자기만의 문제에 면담 시간을 씁니다.

1. “소리가 안 나와요”

브라우저 보안 정책 때문에 사용자 인터랙션 없이는 오디오가 차단됩니다.

let song;

function preload() {
  song = loadSound('assets/music.mp3');
}

function setup() {
  createCanvas(400, 400);
}

function mousePressed() {
  userStartAudio();      // 첫 클릭에서 오디오 컨텍스트 활성화
  song.loop();
}
자동 재생은 불가능

페이지를 열자마자 자동으로 소리가 나올 수 없습니다. 사용자가 한 번 클릭하거나 키를 눌러야 합니다. 시연영상에서도 처음에 클릭하는 모습이 포함되도록 합니다.

2. “파티클이 점점 느려져요”

죽은 파티클이 배열에 남아 계속 그려지기 때문입니다.

function draw() {
  background(0, 25);  // 잔상 효과 — 검정 위에 알파 25

  for (let i = particles.length - 1; i >= 0; i--) {
    particles[i].update();
    particles[i].display();
    if (particles[i].isDead()) {
      particles.splice(i, 1);  // 죽은 파티클 제거
    }
  }
}

핵심 두 가지입니다.

  1. 뒤에서부터 순회 (i--) — splice()로 배열을 줄여도 인덱스가 꼬이지 않음
  2. 잔상 효과background() 대신 background(0, 25)로 반투명 덮기

3. “색이 다 똑같아 보여요”

RGB로 한두 가지 색만 쓰면 단조로워집니다. HSB 색상환을 활용합니다.

function setup() {
  createCanvas(400, 400);
  colorMode(HSB, 360, 100, 100);
}

function draw() {
  let hue = (frameCount * 0.5) % 360;
  fill(hue, 80, 90);
  ellipse(mouseX, mouseY, 30);
}
Hue를 시간에 따라 돌리기

Hue를 시간에 따라 돌리면 자동으로 무지개색이 나옵니다. Saturation 80, Brightness 90 정도면 채도가 너무 죽지도, 너무 튀지도 않습니다.

4. “인터랙션이 단조로워요”

마우스 위치 하나만 쓰는 경우가 대부분입니다. 조합 패턴을 권장합니다.

  1. 마우스 위치 → 파티클 생성 위치
  2. 마우스 속도 → 파티클 속도 (이전 프레임과의 차이)
  3. 마우스 거리 → 색상/크기 (dist(mouseX, mouseY, width/2, height/2))
  4. 키보드 모드 전환if (key === '1') 같은 식으로 모드 변경
  5. 시간 (frameCount) → 자동 변화 효과
최소 2가지 입력 채널

마우스 위치 하나만으로는 인터랙션 점수가 잘 안 나옵니다. 거리 + 속도, 마우스 + 키보드, 마우스 + 시간 같은 조합을 사용합니다.

5. “화면이 휑해 보여요”

단색 배경 + 도형 한 종류만이 원인입니다. 4가지 해결 패턴이 있습니다.

  1. 배경 그라데이션for (let y = 0; y < height; y++) { stroke(...); line(0, y, width, y); }
  2. 잔상 효과background(0, 25)로 움직임의 궤적 남기기
  3. 다중 레이어 — 큰 도형 뒤에 작은 도형, 또는 흐릿한 큰 원 위에 선명한 작은 점
  4. 텍스트 한 줄 — 작품 제목이나 상태 텍스트를 모서리에 작게
배경과 디테일이 완성도를 결정

메인 도형은 그대로 두고 배경에 그라데이션이나 잔상만 추가해도 완성도가 확 올라갑니다.

6. “코드가 너무 길어지고 헷갈려요”

길이 자체는 문제가 아닙니다. 다음 신호를 봅니다.

두 가지 신호만 기억

같은 일을 두세 번 반복하면 함수로, 같은 종류의 객체가 여러 개면 클래스로 묶습니다.


면담 안내

면담 순서

학번 순으로 진행됩니다 (또는 미리 공지한 시간표대로). 면담 자리에 올 때는 노트북에 스케치 링크를 열어둔 상태로 옵니다.

면담 구조 (한 명당 5~6분)

시간 활동
1분 자기 보고 — 주제, 활용 기술, 진행도, 막힌 부분
2~3분 함께 진단 — 코드 같이 보면서 방향 점검
1~2분 다음 단계 합의 — “이번 주말까지 X 끝내기” 형태로 약속
자기 보고는 미리 머릿속으로 정리

자기 보고가 30초 안에 안 끝나면 컨셉이 정리가 안 됐다는 신호입니다. 자기 자리에서 미리 한 번 말해보고 옵니다.

비면담 시간 활용

면담을 안 하는 동안에는 자기 자리에서 작업합니다.

  1. 면담 전 — 자기 점검 체크리스트에서 비어있는 항목 채우기
  2. 면담 후 — 강사와 합의한 다음 단계 바로 착수
면담 후 바로 손대기

면담 끝나고 자리 돌아가서 멍하니 있지 않습니다. 합의한 작업을 5분이라도 손대고 다음 주차로 넘어가는 게 훨씬 효과적입니다.


1교시 핵심 요약

  1. 자기 점검 체크리스트 6항목을 채우고 면담에 옵니다
  2. 제출물은 스케치 링크(Edit) + 시연영상(30~60초) 두 가지
  3. macOS 사용자는 시스템 사운드 녹음 도구를 주말 전에 테스트합니다
  4. 트러블슈팅 6가지는 면담에서 다시 묻지 않습니다 — 여기서 해결합니다
  5. 면담은 5~6분, 자기 보고 1분을 미리 머릿속으로 정리해 옵니다

다음 교시: 1:1 면담 라운드 1이 시작됩니다.