Show HN: Impossible Machines, 폰에서 기계 장치를 선언적으로 조립하는 물리 시뮬레이터
- 벨을 울리거나 문을 여는 상호작용은 현재 사실상 이진 입력만 지원해서, 댓글에서 "벨을 세 번 울려라" 같은 시간열 입력을 넣자는 제안이 나옴
- 제작자는 렌더링에 ThreeJS, 강체·조인트·충돌·힘 시뮬레이션에 Rapier를 쓰고, 장면에 넣은 제약을 만족하는 배치를 단순 휴리스틱 탐색으로 찾아 해를 제시함
- 소리는 충격음을 카메라 기준으로 패닝하고 압축과 소규모 생성 리버브를 걸어 에코와 감쇠까지 흉내 내는 방식으로 만들었음
- 코드가 아직 지저분해 정리한 뒤 며칠 안에 오픈소스로 공개하겠다고 답변함
- 댓글에서 디즈니 연구소의 경로 추종 링키지 생성 연구와 The Incredible Machine을 선행 사례로 언급했고, 제작자는 그쪽이 미리 계산된 데이터베이스를 쓰는 만큼 자기 방식보다 효율적이라고 봄
Hacker News 의견들
이거 재밌네. 근데 지금 벨이나 문 상호작용이 사실상 이진이라 좀 아쉬움. 벨 세 번 울려라 같은 걸 시키면 그 리듬을 내는 기계를 만들어 주면 좋겠는데, 그러려면 세계가 일정 시간 동안 입력을 기록하고 있어야 할 듯.
맞아, 나도 이진인 걸 미처 몰랐음. 연속 입력도 넣고 싶은데, 오디오는 에코나 감쇠까지 흉내 내서 만들었으니까 입력 힘을 연속으로 주고 메커니즘이 그 소리를 정확히 재현하게 하는 것도 상상 가능함.
비슷한 걸 예전에 본 적 있는데 마이크로소프트 연구 논문이었음. 접근이 겹치는 것 같더라.
데모 영상 잘 봤음. 논문은 아직 안 봤고, 지금은 간단한 휴리스틱으로 후보를 뽑아 Rapier에 돌리는 중인데 simulated annealing으로 설정 공간을 뒤지면 훨씬 나을 것 같음.
The Incredible Machine 생각나네.
그거 이제 알았음, 부끄럽다. 공기압까지 시뮬레이션한 게 신기하더라. 소리 질감에도 영향을 주면 재밌겠음.
디즈니 연구소에서 경로를 그리면 그 경로를 따라가는 링키지를 생성해 주는 연구를 했었음. 후속 작업도 많았고, 영상 한번 봐봐.
논문 훑어봤는데 미리 계산된 데이터베이스로 조립품을 찾는 방식이더라. 내 방식보다 확실히 효율적임. 3D 프린터로 캐릭터 몇 개를 실제로 제작한 것도 좋았고, 벨트 드라이브 같은 건 프린터로 좀 까다롭겠지만 직접 만들어 보고 싶음.
데모 봤고 직접 만져봤는데 저장소 링크는 없나? 어떻게 구현했는지 궁금함.
오픈소스 할 거고 지금은 코드가 좀 지저분해서 며칠 안에 정리해서 링크 올림. 대략 ThreeJS로 렌더링하고 Rapier로 바디·조인트·충돌·힘을 시뮬레이션하면서, 장면에 넣은 제약을 휴리스틱 탐색으로 풀어 동작하는 배치를 찾는 구조임.