3P by GN⁺ | ★ favorite | 댓글 1개
  • 모션 블러를 “논리적 극한”까지 밀어붙이는 이 실험은 인간 시각의 motion smear와 화면 재생의 차이를 줄이는 방식으로 흐림을 다시 정의하고, 이를 절차적 실시간 애니메이션에 적용함
  • 자연 장면에서는 망막 원추세포가 빛 자극을 시간적으로 통합해 수용체 단계의 흐림이 생기지만, 낮은 프레임레이트 화면에서는 블러 없는 영상이 자연스러운 smear 대신 겹친 프레임처럼 보임
  • 전통적 모션 블러는 한 프레임의 시간 구간을 평균내 자연 장면에 가까워지지만, 빠른 물체에서는 불연속이 남을 수 있어 시작과 끝의 가중치를 낮추는 셔터 함수(shutter function) 가 더 자연스러운 결과를 만듦
  • 실시간 셰이더 구현은 멀티샘플링과 해석적 레이트레이싱을 피하고, 움직이는 물체를 시간 포함 좌표의 밀도 함수로 표현한 뒤 시간 적분값을 볼륨 레이 캐스팅으로 렌더링함
  • 최종 “Torusphere Accelerator”는 궤도 운동하는 구와 회전하는 토러스를 사실상 무한 속도까지 블러 처리하며, “모션 블러된 법선”이 없기 때문에 표면 법선은 별도 보간으로 다룸

자연 장면의 움직임과 화면 재생의 차이

  • 모션 블러는 원래 카메라 셔터가 열려 있는 동안 피사체가 움직여 생긴 필름 아티팩트였지만, 영상이 자연 장면과 지각적으로 더 비슷해지는 효과 때문에 유용해짐
  • 3D와 애니메이션에서는 “카메라를 시뮬레이션하는 것”과 “자연스럽게 보이는 것”이 항상 같은 목표가 아닐 수 있음
  • 자연스러운 모션 블러를 보려면 네 가지 질문이 필요함
    • 자연 장면의 움직임을 어떻게 지각하는가
    • 화면에 재생된 장면을 어떻게 지각하는가
    • 두 경우의 지각 차이는 무엇인가
    • 비디오 모션 블러가 그 차이를 어떻게 줄일 수 있는가

원추세포의 시간 통합과 motion smear

  • 밝은 환경에서 인간 시각의 초기 처리는 원추세포가 담당하며, 광변환(phototransduction) 은 즉시 일어나지 않음
  • 빛 자극의 지연은 시간 방향으로 자극을 부드럽게 만드는 방식으로 모델링할 수 있음
  • Howlett et al. (2017)의 금붕어 원추세포 예시는 광수용체로 들어오는 광자 수, 가중 함수, 그 결과인 “effective stimulus”를 보여줌
  • 이 가중 함수 형태와 알려진 인간 원추세포 반응 시간을 결합하면 입력 장면에서 지각된 이미지를 시뮬레이션할 수 있음
  • 그 결과 자연 장면에서도 광수용체 수준의 자연스러운 흐림인 motion smear가 이미 존재함
  • 예시 시뮬레이션은 관찰자가 물체를 눈으로 추적하지 않고 고정된 지점을 보고 있다고 가정함

화면 영상에서 전통적 모션 블러가 하는 일

  • 제한된 초당 프레임 수의 화면을 볼 때, 모션 블러가 없는 영상의 지각 이미지는 기대되는 motion smear가 아니라 겹쳐진 프레임처럼 보임
  • 모션 블러가 적용된 영상은 각 프레임이 한 순간을 보여주는 대신, 프레임이 덮는 시간 구간의 모든 순간을 평균냄
  • 이는 한 프레임 시간 동안 셔터가 열려 있는 카메라로 만든 영상과 유사함
  • 이 방식의 지각 이미지는 자연 장면의 경우와 훨씬 더 비슷해짐

셔터 함수로 불연속 줄이기

  • 전통적 모션 블러에서도 일부 물체 속도에서는 motion smear에 불연속 아티팩트가 남을 수 있음
  • 셔터 함수는 프레임 구간 전체를 균등 평균하지 않고, 프레임의 시작과 끝 순간에 낮은 가중치를 주고 중앙 순간에 더 높은 가중치를 줌
  • 이름은 다이어프램 카메라의 셔터 효율 비유에서 왔지만, 여기서는 카메라 시뮬레이션보다 화면과 자연 장면의 지각 차이를 줄이는 함수 선택이 목적임
  • 이 문제는 신호 처리의 윈도 함수(window function) 를 만드는 문제와 매우 비슷하며, 인기 있는 윈도 함수들이 좋은 결과를 냄
  • 주관적 테스트 기준으로는 물체가 한 프레임 동안 이동하는 거리가 물체 폭과 같은 규모가 될 때 셔터 함수가 유용해짐
  • 낮은 속도에서는 필요성이 크지 않지만, 빠르게 움직이는 물체에서는 더 자연스럽고 정지 프레임도 더 부드럽게 보임
  • 이 접근은 통상적인 카메라 시뮬레이션 방식이 아니며, 연속 프레임의 시간 범위가 서로 겹칠 수 있음
    • 일반적인 카메라 시뮬레이션은 프레임 간 시간 겹침이 없고, 프레임 사이의 순간을 버리는 경우가 많음

실시간 셰이더로 “무한 모션 블러” 만들기

  • 목표 애니메이션은 궤도 운동하는 구회전하는 토러스를 결합하고, 둘 모두를 사실상 무한 속도까지 모션 블러 처리함
  • 최종 결과물을 상호작용 가능하게 만들기 위해 실시간 shader로 구현함
  • 멀티샘플링은 각 프레임마다 여러 시간 지점의 장면을 렌더링하는 방식임
    • 물체 속도가 높을수록 필요한 샘플 수가 비례해서 늘어남
    • “무한 속도” 애니메이션에는 맞지 않음
  • 해석적 레이트레이싱 모션 블러도 대안이 될 수 있음
    • 메시에서는 삼각형을 프리즘으로 바꾸는 방식이 있음
    • 순수 해석적 접근도 가능하지만, 여기서는 더 무거운 방식이 될 수 있음
    • 두 방식 모두 재질 처리를 위해서는 여전히 멀티샘플링이 필요함
  • 선택한 구현은 “integrated volume motion blur”라고 부를 수 있는 해킹에 가까운 방식임
    • 움직이는 물체를 시간까지 포함한 좌표를 입력받아 내부는 1, 나머지는 0의 밀도를 반환하는 함수로 표현함
    • 이 밀도 함수를 시간에 대해 적분하면 임의 시간 구간의 모션 블러된 밀도를 얻음
    • 결과는 volume ray casting으로 렌더링함
    • 사진처럼 정확한 방식은 아니지만, 매우 긴 궤적을 실시간 성능으로 다룰 수 있음

궤도 운동하는 구의 모션 블러 밀도

  • 궤도 운동하는 구는 2D 단면에서 궤도 운동하는 원의 문제로 줄일 수 있음
  • 원의 중심은 원점에서 거리 R에 있고, 원의 반지름은 a라고 둠
  • 극좌표에서 주어진 반지름 r에 대해 물체 표면의 각도 θ를 구하면, 점이 물체 안으로 들어오는 시점과 나가는 시점을 계산할 수 있음
  • 물체가 속도 v로 궤도 운동하면 각도 좌표에서 시간 항 vt를 빼는 형태로 표현됨
  • 어떤 공간 점에서 물체가 존재하는 시간 구간 I와 현재 프레임 시간 구간 F의 교집합 길이가 모션 블러된 밀도가 됨
  • 셔터 함수 s를 적용하면 밀도와 s(t)를 곱해 적분하며, s의 부정적분 S가 있으면 S(max I) - S(min I) 형태로 계산할 수 있음
  • 애니메이션에 사용한 사인 기반 셔터 함수는 적분값이 1이고, 시간축에서 겹쳐도 임의 시점의 합이 항상 1이 되도록 설계됨

회전하는 토러스와 spiric section

  • 회전하는 토러스도 구와 같은 절차로 처리함
  • 토러스의 2D 수직 단면은 spiric section, 또는 Spiric of Perseus라고 불림
  • 토러스의 minor radius를 a, major radius를 b로 두고 특정 위치 c의 단면을 잡으면 극좌표 식으로 토러스 내부 영역을 표현할 수 있음
  • 표면 각도 θ를 풀어 양수와 음수 두 경우를 얻고, 두 경계 사이를 solid torus의 밀도로 사용함
  • 이후 단계는 궤도 운동하는 구와 동일하게 시간 구간을 구하고 셔터 함수 적분을 적용함

최종 Torusphere Accelerator

  • 최종 장면은 구와 토러스를 결합하고 표준 볼륨 레이 캐스팅으로 렌더링함
  • Surface normals는 추가 처리가 필요함
    • “모션 블러된 표면 법선”이라는 개념이 없기 때문에 구현에서는 법선을 섞어 사용함
  • 라이브 애니메이션은 기본 마우스와 터치 상호작용을 지원함
  • 모든 기기에서 잘 동작하지 않을 수 있어 페이지 상단에 미리 렌더링한 영상도 제공함
  • 최종 셰이더는 Shadertoy에서도 볼 수 있음

HN 논의에서 이어진 쟁점

  • Hacker News 논의에서는 모션 블러 품질을 예술적 선택으로 보는 시각이 나옴
  • 색공간 변환의 중요성도 함께 이야기됨
  • 영화 VFX에서 모션 블러가 역사적으로 어떻게 발전했는지도 논의됨
    • 초기 CG 영화인 Jurassic Park는 물리적으로 불가능한 box shutter function을 사용한 사례로 거론됨
  • 게임에서의 모션 블러는 여전히 논쟁적인 주제로 남아 있음

댓글과 토론

Hacker News 의견들
  • 유한한 화면 주사율에서 모션 블러를 렌더링하거나 촬영할 때의 절충점은, 관객이 화면 속 움직이는 물체를 눈으로 따라갈 수 있다는 데 있음
    현실에서는 그렇게 하면 물체가 선명해짐. 그래서 눈 움직임을 추적해 상대 운동에 맞춰 블러를 주거나, 무한 주사율에서 모션 블러를 아예 없애야 함. 둘 다 현재 기술로는 실용적이지 않아서 항상 어딘가 어색해질 수밖에 없음. 좋은 감독이나 게임 디자이너라면 관객의 눈이 어떻게 움직일지 예상해 셔터 속도나 렌더링 블러를 고르게 됨

    • 다만 관객은 이미 셔터 앵글을 시각 언어의 일부로 받아들이고 있음. 예를 들어 좁은 셔터 앵글은 날카로운 랩 비디오 느낌, 긴 셔터 앵글은 몽환적인 복고 느낌을 줌
      렌더링 콘텐츠가 같은 시각 언어를 말할 수 없다면, 주사율과 무관하게 도구 하나가 빠진 셈임. 물론 어느 정도 한계는 있어서, 400Hz에서 차이를 제대로 본다면 꽤 놀라울 듯함
      렌더링 콘텐츠에서 흥미로운 점은 이걸 더 확장할 수 있다는 것임. 예를 들어 한 프레임의 지속 시간을 넘는 셔터 앵글처럼, 이미 이해했다고 생각한 개념을 가지고 놀 수 있음
    • 무한 주사율의 대안으로 각 프레임을 일반 프레임 시간의 일부 동안만 보여주는 방식이 있음. 즉 개별 프레임을 빠르게 섬광처럼 표시하고 나머지는 검은 화면으로 두는 방식임
      이 방식은 최대 화면 밝기를 낮추고 깜빡임을 피하려면 최소 프레임률이 필요하지만, 현실에는 없는 눈 추적 블러인 지속성 블러를 줄여줌. 정확히 말하면 추적 블러를 완전히 없애려면 각 프레임을 무한히 짧은 시간만 표시해야 하므로 현실적이지 않음. 그래도 VR 헤드셋은 이런 섬광/스트로브 방식을 사용함
      이것이 CRT와 플라스마 화면이 LCD나 OLED보다 움직임 선명도가 훨씬 좋았던 이유이기도 함. 전자는 각 프레임을 짧게 번쩍이듯 표시하고, 후자는 프레임 전체 시간 동안 같은 프레임을 유지하는 샘플 앤 홀드 방식임. 예를 들어 60Hz에서는 1/60초 동안 유지함. CRT의 60FPS가 OLED의 120FPS보다 더 유동적으로 보일 수도 있음
      게임에서는 재투영 기법으로 프레임을 많이 추가하는 방법도 있음. 엔진에서 비싼 프레임을 대량 렌더링하지 않고도 실제 카메라 움직임을 근사할 수 있음. 이것도 VR에서 이미 쓰이고 있지만, 아직 아주 높은 프레임률까지는 아님. 자세한 내용은 이 글이 잘 다룸:
      https://blurbusters.com/frame-generation-essentials-interpol...
      재투영으로 1000FPS 정도는 꽤 현실적이라고 하니, 화면 밝기를 낮추지 않고도 추적 블러 문제를 해결할 수 있을 듯함
    • 움직이는 물체는 각 프레임을 고정된 위치에 더 짧은 시간만 표시하면 더 선명해질 수 있음. 즉 MPRT를 줄여, 눈으로 움직임을 따라갈 때 표시된 프레임이 번지는 걸 막는 방식임
      이는 CRT/OLED의 주사 출력, 보통 롤링 방식이나 LCD 백라이트 스트로빙, 대개 전체 프레임 방식으로 구현할 수 있음. 다만 24Hz에서 각 프레임을 짧게 표시하면 참기 어려울 정도로 깜빡임이 생겨서 영화 영사기는 필름 프레임을 2~3번씩 보여줬음. 50Hz에서는 간신히 견딜 만한 수준이라 일부 유럽 CRT TV는 50Hz 영상을 100Hz로 프레임 더블링했고, 그 결과 움직이는 물체가 두 개로 보이기도 했음. 최적으로 부드러운 움직임과 최소 눈 피로를 위해서는 이상적으로 70~75Hz 이상이 필요하지만, 그러면 60FPS로 녹화된 영상을 저더나 찢김 없이 보여주기 어려움
    • 맞음. 이 글을 쓰기 위해 배경 조사를 하다가, 지금 말한 내용을 설명하고 시청자의 눈 움직임을 예측하는 해법을 제안하는 꽤 멋진 논문을 읽었음: Temporal Video Filtering and Exposure Control for Perceptual Motion Blur(Stengel et al., 2015)
    • 유한한 주사율에서는 움직이는 이미지를 제대로 선명하게 만들 수 없음. 충분히 높은 주사율에서는 가까워질 수는 있지만, 물체가 시간적으로 덜컥거리는 경로로만 움직일 수 있어서 눈의 움직임과 맞지 않기 때문임
  • 이게 시각 매체를 더 현실적으로 느끼게 해준다는 기대와 달리, 게임에서는 비디오게임을 과하게 편집된 영화의 싸구려 근사치처럼 보이게 만드는 느낌이 있음
    아주 빠르게 움직이거나, 아주 가까이 지나가거나, 특히 자기 시점이 아닌 움직임에는 말이 됨. 하지만 “캐릭터가 빠르게 돈다” 같은 상황에 너무 남용됨
    머리나 눈을 휙 돌릴 때 흐릿한 이미지를 보는 게 아니라 새 이미지를 보고, 뇌가 중간 데이터를 버림. 거울에서 한쪽 눈을 보다가 다른 쪽 눈으로 초점을 옮겨보면 알 수 있음. 눈이나 얼굴이 흐려지는 게 보이나?
    게임에서 시점을 움직일 때 블러를 추가하면 새 시야를 보여주는 것만 늦어짐. 산만하고 비현실적임

    • 이 테스트는 최선은 아님. 뇌가 도약 안구운동을 보정하면서 잠시 입력을 검열하기 때문임. 또 걸으면서 길거리 표지판을 읽게 해주는 내장 움직임 안정화도 있음
      더 나은 테스트는 손가락이나 손을 아주 빠르게 흔들며 보는 것임. 손가락이 움직일 때 모션 블러가 보일 것임. 어떤 경우에는 잔상으로 개별 “프레임”이 보이기도 함. 예를 들어 최신 자동차 후미등을 보면 LED가 계속 켜져 있는 게 아니라 PWM으로 아주 빠르게 깜빡임. 그래서 밤에 후미등을 보며 눈을 움직이면 흐릿한 이미지가 아니라 점들의 연속이 보임. 이 요령을 알게 되면, 흐릿하게 보이는지 끊어진 점으로 보이는지로 아날로그 조명과 PWM을 구분할 수 있음
    • 모션 블러는 마우스 가속처럼 써야 한다고 느낌. 말한 것처럼 머리를 빠르게 돌리면 이미지는 선명하고 즉시 나타나야 함
      하지만 차 안에 있거나 게임에서 공중을 날고 있을 때, 힐끗 보는 동안 이미지는 왜곡될 수 있음. 기대하는 건 가속할수록 끌리는 듯한 블러이고, 이런 효과는 빠른 장면을 훨씬 더 흥미롭게 만들 수 있음. 문제는 모션 블러가 거의 어디서나 형편없이 구현된다는 것임
    • 게임에서 모션 블러가 논쟁적인 이유는 대체로 구현이 매우 나쁘기 때문임
      가장 큰 세 가지 죄는 물체를 너무 멀리 블러 처리하는 것, 블러 처리하면 안 되는 것을 블러 처리하는 것, 그리고 전체 장면을 블러 처리하는 것임. 세 번째는 결국 두 번째로 귀결되니 실제로는 두 가지 죄일 수도 있음. 가장 중요한 건 모션 블러가 미묘해야 한다는 점임. 제대로 된 모션 블러는 게임을 흐릿하게 만드는 게 아니라 더 현실적이고 부드럽게 보이게 함
      물체가 프레임 사이에 50픽셀 움직인다면 블러 폭은 50픽셀을 넘으면 안 됨. 사실 더 은은하게 하려면 25픽셀 정도가 맞을 가능성이 큼. 그런데 어떤 이유에서인지 레이싱 게임들은 빠르게 달릴 때 전체 장면에 방사형 블러를 잔뜩 걸고, 개인적으로는 그게 장면을 망침
      마찬가지로 카메라에 대해 상대적으로 움직이지 않는 물체에는 모션 블러가 없어야 함. 많은 게임이 여기서 틀림. 회전할 때 후처리로 장면을 블러 처리함. 완전히 정적인 장면이라면 말이 되고, 계산 비용도 매우 효율적인 방식임. 하지만 어떤 물체를 추적하느라 회전하는 중이라면, 추적 중인 물체는 흐려지면 안 됨. 레이싱 게임에서 옆 차가 나와 같은 속도로 달리고 있다면 그 차는 블러 처리되면 안 됨
      올바른 모션 블러를 얻는 확실한 방법은 여러 개의 전체 프레임을 연속으로 렌더링한 뒤 섞는 것이지만, 보기 좋게 만들려면 샘플이 아주 많이 필요함. 그렇지 않으면 세로선 같은 것이 화면을 가로질러 날아갈 때 부드러운 블러가 아니라 세로 띠들의 연속처럼 보임
      아마 최선은 하이브리드 방식일 것임. 장면의 각 물체를 따로 렌더링하고, 카메라에 대한 상대 이동 방향에 따라 물체별 후처리 블러를 적용하는 것임. 다만 Z 순서 처리가 큰 난제가 될 수 있음
    • 비디오게임에서는 모션 블러가 낮은 프레임률을 보완하는 데 도움이 됨. 특히 30FPS에서는 거의 필요하고, 60FPS에서도 괜찮음
      드물게 120FPS로 게임을 할 수 있었을 때는, 프로젝터가 아쉽게도 60Hz에 묶여 있지만, 모션 블러 없이 하는 쪽을 더 선호했음
    • 사실 새 이미지를 보는 게 아니라 일정량의 세부 정보를 보고, 뇌가 본 것의 역사를 다시 써서 연속성이 있는 것처럼 만듦
  • 좋은 개요는 [1]에 있음
    흥미롭게도 셔터 효율 모델링에 관한 고전 논문 [2]가 2005년에 나오기 전까지, VFX 제작에 쓰이던 모든 렌더러는 박스 셔터를 썼음. 즉 셔터가 즉시 열리고, 지정된 시간 동안 열린 채 있다가 즉시 닫히는 방식임
    “Jurassic Park”나 “The Mask” 같은 영화를 보며 극단적인 모션 블러 장면을 보면, 그건 박스 셔터를 쓴 PhotoRealistic RenderMan임
    [2]의 매개변수화를 현장에서 1:1로 처음 구현한 사례는 논문이 나온 같은 해에 [3]에서 이뤄졌고, 오늘날까지 바뀌지 않았음. 처음 쓰인 작품은 “Charlotte's Web”이었고, Rising Sun Pictures가 [3]을 사용해 만든 거미 캐릭터에만 적용됐음
    Pixar도 몇 년 뒤 추가했는데, [4]에서는 약간 과하게 밀어붙였음. 요즘 대부분의 오프라인 렌더러는 이 기능을 갖고 있고 셔터 곡선이라고 부름
    [1] O. Navarro et al.: Motion Blur Rendering: State of the Art (https://citeseerx.ist.psu.edu/doc_view/pid/fc23fb525cafa8fe6...)
    [2] Stephenson, Ian: Improving Motion Blur: Shutter Efficiency and Temporal Sampling (https://staffprofiles.bournemouth.ac.uk/display/journal-arti...)
    [3] https://www.3delight.com/, 특히 https://nsi.readthedocs.io/en/latest/nodes.html 참고
    [4] https://renderman.pixar.com/resources/RenderMan_20/cameramod...

  • 데모가 sRGB 공간에서 계산된 것처럼 보임. 즉 비선형 밝기 값을 쓰고 있어서, 번짐이 부자연스러운 이유 대부분이 거기서 온 것 같음
    물리 현상을 시뮬레이션하려면 선형 밝기 값으로 처리하고 마지막에만 sRGB로 변환해야 함
    인간 시각 인식의 비선형 효과가 이걸 전부 상쇄한다면 다를 수 있지만, 그렇다면 적어도 그 점을 언급해야 함

    • 지적해줘서 고마움. 다른 그래픽 애플리케이션에서는 색 공간 변환을 해봤지만, 분명 교훈을 제대로 배우지 못한 듯함
      다시 확인해보고 맞다면 인터랙티브 그림과 본문을 업데이트하겠음. 주요 “torusphere” 셰이더는 모션 블러가 비현실적이고 손으로 조정한 것이어서 괜찮을 것 같지만, 앞쪽 몇 개의 인터랙티브 그림은 이론을 직접 적용한 것이므로 이 지적이 해당됨. 그래도 전체적으로 본문의 핵심 아이디어를 무효화하지는 않는다고 봄
    • 감마가 완전히 잘못된 걸 알아봤음. 그림에서 부드럽게 인식되는 모션 블러가 나오지 않으니 글의 목적 자체를 해치는 셈임. 훨씬 더 좋아질 수 있었음
    • 저자가 선형 공간을 무시하는 이렇게 중요한 부분을 놓쳤다는 게 놀라움. 하지만 Adobe조차 2024년에도 선형 처리를 겨우 지원하는 수준이니 이상한 일만은 아님
  • 토러스 데모가 정말 멋짐. 높은 프레임률이 블러 인식을 어떻게 바꾸는지가 흥미로움
    240Hz 디스플레이를 쓰고 있는데, 그림 5에서 약 12rad/s까지는 떨어진 원들이 보이지 않음. 40rad/s에서도 전통적인 셔터와 사인 셔터 옵션 사이의 차이를 움직이는 중에는 못 느끼겠음
    마우스 움직임의 부드러움과 낮은 지연만으로도 240Hz를 강력 추천함. 60Hz 마우스 포인터로 돌아가는 건 정말, 정말 힘듦

    • 4K 24인치 디스플레이, “레티나를 쓰면 돌아갈 수 없다”는 쪽과 144Hz 디스플레이를 둘 다 써봤지만, 메인 환경인 오래된 24인치 1920x1200 60Hz 화면 세 대를 업그레이드할 마음이 안 생김
      어떤 사람들은 정말 신경 쓰지 않음. 입력 지연이나 터미널 에뮬레이터 성전 같은 논쟁도 잘 모르겠음. 프레임버퍼 콘솔에서 작업하는 것과 50ms가 추가된 ssh로 작업하는 것의 차이를 못 느끼겠음
      30FPS와 60FPS 게임 차이는 알아볼 수 있지만, 신경 써서 볼 때만임. 두 값 사이를 오르내리지 않고 안정적이기만 하면 별로 상관 안 함
    • 내 경우 144Hz 커서가 매끄럽게 느껴지는 데는 동의함. 그래도 60FPS 커서로 돌아가는 데 아무 문제 없음
      다만 더 부드러운 전환을 가진 인터페이스가 더 안정감을 주고, 높은 주사율이 시간이 지나며 정신 상태에 영향을 줄 수도 있지 않을까 궁금함
  • 토러스와 뒤쪽 구체가 모션 블러로 만들어진 것이라면 부분적으로 투명해야 하지 않나? 어느 순간 다시 불투명해지는 것처럼 보여서 이상하게 느껴짐

    • 맞음. torusphere 개념은 물리적으로 불가능함. 전체가 루프라서 물체에는 이론적인 실체조차 없고, 전부 인위적으로 두껍게 만든 모션 블러로만 이루어져 있음
      그래서 제목도 motion blur all the way down임
    • 분명 구체와 토러스 사이, 그리고 다시 토러스와 구체 사이를 블렌딩하고 있음. 그렇지 않으면 시간이 지날수록 계속 희미해졌을 것임
    • 빛은 이산적인가, 연속적인가?
    • 무한히 빠르게 움직이거나 튀는 물체는 투명해질 수 없을 것 같음. 그 경로를 가로지르는 모든 광선을 필연적으로 가로막기 때문임
      다만 움직이는 물체가 내는 빛은 정지한 물체보다 낮아야 함. 그래서 거리가 늘어날수록 물체는 점점 더 어두워져야 함
  • 이건 필름 카메라를 시뮬레이션하려는 데서 벗어나 인간 시각 시스템을 시뮬레이션하려는 시도임. 유용한 방향임
    낡은 기술을 흉내 내는 데서 벗어나 현실에 한 걸음 더 가까워지는 것임. 셔터식 모션 블러도 세피아 톤 인화, 16FPS 흑백 영화, 기계식 셔터 때문에 생기는 타원형 바퀴처럼 사라질 수 있음

    • TV 화면에 실제 태양의 출력을 렌더링할 수 있는 기술이 생기면 알려주길 바람
      현실의 재현은 목표가 아님. 달성할 수 없기 때문임
  • ambient.garden이 방금 프론트 페이지에 올라와서 이 글도 올라온 것 같음. 다시 읽어보니 사실 두 편의 글이었어야 했다고 느낌
    앞부분은 여전히 마음에 듦. 모션 블러가 무엇인지, 이론적으로는 무엇이어야 하는지를 적절히 파고듦. 뒷부분은 모션 블러 기반의 특정 “torusphere” 애니메이션을 위한 셰이더가 어떻게 동작하는지에 대한 약간 정신없는 초압축 설명임. 그 부분은 적어도 나에게는 코드가 지금 시점에서 완전히 이해 불가능해지지 않게 해준다는 점에서 주로 유용함. 돌아보면 두 부분 사이의 전환이 얼어붙은 호수로 뛰어드는 느낌에 가까움. 미안함

    • 읽으면서, 셔터 앵글이라는 노출 구간의 함수로 모션 블러를 깔끔하게 설명한 뒤 갑자기 아주 이상한 특수 사례의 광기 어린 영역으로 뛰어든다는 느낌을 받았음
      방금 마신 와인 한 잔 때문만은 아니었다니 다행임
      4차원 돌출의 투영 함수로서 모션 블러를 몇 번 가지고 놀아본 적이 있지만, 실제 맥락인 비디오와 텍스처에서는 캐싱을 곁들인 하드웨어 샘플링에 비해 비실용적인 방식이 됨. 그래도 이 글을 보니 “딱 한 번만 더 해볼까”라는 생각이 듦
  • 실시간 비교 데모가 엄청남. 그 지점까지 따라가면서는 머리로는 “이해했다”고 느꼈지만, 모션 블러 켜기/끄기를 직접 전환할 수 있게 되자 차이가 정말 분명해졌음

  • motion blur all the way down을 보고 나니 왠지 끈 이론, 원자, 우주가 어떻게 만들어졌는지까지 생각하게 됨

    • 흥미로운 은유임. 전자 껍질은 때때로 확률 밀도 구름으로 설명됨. 음영은 시간을 멈췄을 때 그 지점에서 전자를 발견할 확률을 나타내는 식임
      물론 더 깊이 들어갈수록 점점 더 이상해짐