2025년 1월 26일 일요일

생성AI, LLM, AI Agent와 그래픽, 디자인, 미디어아트 관련 자료 소개

이 글은 생성AI, LLM, AI Agent와 그래픽, 디자인, 미디어아트에 관한 자료를 정리한 것이다. 관련 도구 및 예제는 다음 링크에 자세히 설명하였으니 참고한다.
프롬프트에서 생성된 그래픽스 예시

Blender LLM 기반 그래픽 모델링 관련 자료
LLM, ollama, Blender python library 등을 이용하면, 프롬프트를 입력해, 3차원 모델을 자동 생성할 수 있다. 다음은 관련 예시를 보여준다. 
Prompt: Create 100 cubes. The y position of each cube follows the cosine function along the x-axis with random color.

이를 이용해 다음과 같은 GPT 에이전트가 구현된다. 

상세한 동작 메커니즘은 다음 링크를 참고한다.

LLM과 컴퓨터 그래픽스
앞에서 사용한 방법과 동일하게, OpenGL, processing.org 등 3차원 가시화 도구를 이용해 실시간으로 프롬프트를 통해 컴퓨터 그래픽스 장면을 생성할 수 있다. 다음은 프롬프트를 통해 생성된 그래픽스를 보여준다. 

데이터 기반 그래픽스 렌더링 예시

생성된 그래픽스 코드는 다음과 같다. 
from p5 import *
import pandas as pd

# Load the dataset
data = pd.read_csv('input.csv')

def setup():
  size(720, 400)
  no_stroke()

def draw_cone(size_x, size_y, position):
  with push_matrix():
    translate(*position)
    cone(size_x, size_y)

def draw():
  background(20, 100, 24)
  lights()
  rotate_x(frame_count * 0.01)
  # rotate_y(frame_count * 0.01)
  blinn_phong_material()

  interval = 200
  for i, row in data.iterrows():
    x = (i % 3) * interval - interval
    y = 0
    z = (i // 3) * interval - interval
    draw_cone(row['energy'], row['temperature'], (x, y, z))

  locX = mouse_x - width/2
  locY = mouse_y - height/2
  light_specular(0, 0, 255)
  point_light(360, 360*1.5, 360, locX, locY, 400)

if __name__ == '__main__':
  run(mode='P3D')

LLM과 사운드 엔지니어링
동일한 원리로 사운드를 개발할 수 있다. 다음은 LLM을 통해 생성된 사운드 코드를 실행한 결과이다. 
사운드 생성 예

생성된 코드는 다음과 같다.
from psonic import *
import time
from threading import Thread, Condition

set_server_parameter_from_log("127.0.0.1")

def play_mozart(condition):
  while True:
    with condition:
      condition.notifyAll() # Message to threads      

    beat = 0.33

    melody = [
      E5, E5, F5, G5, G5, F5, E5, D5, C5, C5, D5, E5, E5, D5, D5,
      E5, E5, F5, G5, G5, F5, E5, D5, C5, C5, D5, E5, D5, C5, C5
    ]

    # Drum beat pattern
    def play_beat():
      sample(DRUM_HEAVY_KICK, amp=1.5)  # Strong kick drum
      sample(ELEC_CHIME, amp=1.2)  # Electric guitar sample
      sample(BD_ZOME, amp=1.5)
      sleep(beat / 2)

      sample(DRUM_CYMBAL_CLOSED, amp=1.2)  # Closed cymbal
      sample(ELEC_CHIME, amp=0.6)  
      sample(BD_ZOME, amp=0.6)
      sleep(beat / 2)

      sample(DRUM_SNARE_HARD, amp=1.3)  # Strong snare
      sample(ELEC_CHIME, amp=1.2)   
      sample(BD_ZOME, amp=1.3)
      sleep(beat / 2)
      
      sample(DRUM_CYMBAL_CLOSED, amp=1.2)
      sample(ELEC_CHIME, amp=0.6)  
      sample(BD_ZOME, amp=0.6)
      sleep(beat / 2)

    # Melody, Beat Channel Play 
    for note in melody:
      play(note, amp=1.0) # , release=0.2)  # Melody
      play_beat()  # Beat Pattern


condition = Condition()
mozart_thread = Thread(name='producer', target=play_mozart, args=(condition,))
mozart_thread.start()

input("Press Enter to continue...")

LLM과 피지컬 컴퓨팅
피지컬 컴퓨팅에 많이 사용되는 아두이노 등을 이용해, 프롬프트로 명령을 주면, 임베딩 컴퓨터가 명령을 실행할 수 있는 코드를 LLM이 생성해, 모터, 조명과 같은 액추에이터를 동작시킬 수 있다. 다음은 그 예를 보여준다. 

참고로, 아두이노의 경우, .ino 코드 파일을 실시간으로 컴파일해 아두이노보드로 전송하는 cli 도구가 설치 시 포함되어 있다. 이를 이용해, 컴파일 에이전트를 구현할 수 있다. 
Arduino CLI 도구

이 주제와 관련된 레퍼런스는 다음과 같다.

레퍼런스

AI 에이전트
그래픽 모델링
사운드 엔지니어링
피지컬 컴퓨팅

댓글 없음:

댓글 쓰기