9. Time Dependency
y를 1차원으로 아래쪽으로 이동
상승하는 인상을 줌
x를 왼쪽으로 이동
더 큰 y 값으로 운동의 속도를 증가
smoke가 수직으로 움직이는 인상을 주지만 그것은 상단에 가깝게 흐트러지는 것처럼
오른쪽으로 차츰 사라짐
“연기의 특정한 형태는 시간이 지남에 따라 극적으로 달라질 수 있으며
아직 연기의 일반적인 느낌은 동일하게 유지”
9
11. Smoke Rings
turbulence 함수가 공간을 왜곡하면
column은 자체로 가로가 두배로 나타남
Column은
높게 일어나도록 해야하며 너무 낮게 발생하면 링이 공간에서
어딘가로 오프되듯이 형성되어 나타날때 column 그 자체가 아웃되지 않음
두 가지 gain 곡선을 채용
y의 함수로 column 근처 turbulence amplitude ,
y의 함수로부터 멀리 column 에서 다른 컨트롤의 turbulence 진폭을 제어
낮은 스모크 링에 의해서 후자의 곡선은 항상 전자 뒤에 언제나 지체
11
13. 첫번째 렌더링 Optimization
약 8시간
AT&T Pixel Machine with 64 DSP32 processors
640×480×640 볼륨의 단일 프레임
“애니메이션을 하기에 상당히 비현실적”
볼륨 내의 연기를 찾아 작은 해상도로 이미지를 미리 계산하여 속도를 높임
그 볼륨 내에서 최종 계산을 수행
13
14. 더 구체적으로 Optimization
예비 Raymarch
마지막 X, Y, Z 해상도 4분의 1 로 예비 raymarch
1/64
전체 계산하는 것처럼 많은 밀도 평가는 오직 1/64 만큼 필요함
각 4X4에서
모든 nonzero 밀도를 경계 z를 따라 간격을 저장
Null interval이 됨
각 Pixel에 이 간격이 모든 이웃 Pixel의 간격과의 조합으로 확장, 보수할 수 있음
14
15. 최종으로 Optimization
Z intervals
최종 raymarching의 도메인을 제한하는 Z 간격을 경계의 이미지를 사용
결과적으로
30 배 이상 단축, 약 16분 소요 (subsampled prepass에 대한 시간을 포함)
Smoke는
공간내에서 희박하기 때문에 시간단축이 크며
밀도가 많은 Sample widths가 zero로 떨어지기 때문에 작은 디테일은 무시되지 않음
15
19. Turbulence
주요 트릭 : fabs()function
gradient 불연속적인 “fault lines”을 만들고 turbulent 흐름의 결과를 보고
생각한 것이 눈속임으로 보이게 된다
19
20. Turbulence
phase shift
turbulence() 함수는 친숙한 대리석 트릭과 같이 최상의 결과를 제공
sin(point + turbulence(point) * point.x);
lofreq
turbulence의 가장 낮은 주파수 성분을 설정
hifreq
turbulence 효과가 하나의 Pixel 수준 아래로 도달하도록 함수에 의해 사용
20