생성 예술 및 Hydra 시작하기
히드라란?
Hydra는 Olivia Jack이 만든 대화형 시각 예술을 만들기 위한 JavaScript 라이브러리입니다. API는 한 프로세스의 출력이 다음 프로세스로 공급되는 아날로그 비디오 합성기처럼 작동하도록 설계되었습니다.
Image: Sandin Image Processor, exhibited at School of the Art Institute of Chicago (SAIC), photographed by Rosa Menkman, https://commons.wikimedia.org/wiki/File:Sandin\_Image\_Processor.jpg
Hydra는 결과 출력을 가져와 fragment shader element. 이 기사에서는 히드라 스케치를 만드는 데 필요한 세 가지 기본 요소인 소스, 수정자 및 출력에 대해 설명합니다.
시작하기
로 렌더링되는
을 구성합니다.
코드 예제를 따라 하려면 https://hydra.ojack.xyz/에서 hydra 편집기를 사용할 수 있습니다.
출처
소스는 모든 히드라 스케치의 시작 입력입니다. hydra에서 제공하는 몇 가지 미리 정의된 조각 셰이더가 있습니다. osc
부터 살펴보겠습니다.
오실레이터는 화면의 x
좌표를 가져와 사인파를 통해 전달하며 기본적으로 검은색(vec3(0.0,0.0,0.0)
)과 흰색(vec3(1.0,1.0,1.0)
) 사이를 계속 이동합니다.
오실레이터를 렌더링하기 위해 소스 함수에 out
함수를 첨부합니다.
osc().out()
osc
함수는 주파수, 속도 및 오프셋의 세 가지 매개변수를 사용합니다.
Image: Sandin Image Processor, exhibited at School of the Art Institute of Chicago (SAIC), photographed by Rosa Menkman, https://commons.wikimedia.org/wiki/File:Sandin\_Image\_Processor.jpg
osc().out()
osc(10, 0.1, 0.3).out()
gradient
, noise
, shape
, solid
또는 voronoi
를 사용하면 어떻게 되는지 확인하십시오.수식어
수정자는 이전 프로세스에서 픽셀 데이터를 가져와 조작하고 다른 수정자 또는 출력 채널에 전달할 수 있는 새 함수를 반환합니다.
예를 들어 오실레이터를 90도 회전시킬 수 있습니다. WebGL로 작업하고 있으므로 각도를 라디안으로 변환해야 합니다.
이를 설정하는 쉬운 방법은
<DEGREES> * Math.PI / 180
를 사용하는 것입니다.osc(10, 0.1, 0.3).rotate(90 * Math.PI / 180).out()
// or
osc(10, 0.1, 0.3).rotate(Math.PI * 0.5).out()
모든 매개변수는 함수 또는 배열로 정의할 수 있으므로 시간이 지남에 따라 회전을 변경할 수 있습니다.
osc(10, 0.1, 0.3)
.rotate((args) => {
const d = args.time * 0.1
return Math.PI * d
})
.out()
const r1 = Math.PI * 0.5
const r2 = Math.PI * 0.25
osc(10, 0.1, 0.3)
.rotate([r1, r2])
.out()
saturate
를 사용하여 셰이더의 채도를 높일 수도 있습니다.osc(10, 0.1, 0.3).rotate(Math.PI * 0.5).saturate(5).out()
add
, blend
, mult
와 같은 연산자를 사용하여 레이어를 혼합할 수도 있습니다.const triangle = shape(3, 0.4).scrollY(0.07).rotate(Math.PI)
osc(10, 0.1, 0.3)
.rotate(Math.PI * 0.5)
.saturate(5)
.mult(triangle)
.out()
산출
Hydra에는 네 가지 가능한 출력 버퍼가 있습니다. 기본적으로
out
셰이더를 첫 번째 버퍼 또는 o0
로 보냅니다. 매개변수 없이 render
함수를 사용하여 4개의 버퍼를 모두 관찰할 수 있습니다.osc().out(o0)
noise().out(o1)
shape().out(o2)
voronoi().out(o3)
render()
버퍼 이름을 매개변수로 전달하여 단일 버퍼 표시로 전환할 수 있습니다.
render(o2)
실험!
이제 소스, 수정자 및 출력 버퍼를 포함하여 hydra의 구문에 익숙해졌으므로 여러 가지 방법으로 함수를 함께 연결하여 몇 가지 재미있는 시각적 개체를 만드는 탐색을 시작할 수 있습니다!
추가 리소스:
Reference
이 문제에 관하여(생성 예술 및 Hydra 시작하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/zachkrall/getting-started-with-generative-art-and-hydra-2ikn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)