← 실계산 조각
Navier·Stokes × 연료 × 연기 × 잔불 × 열아지랑이 — 그림 리소스 0

진짜 불, 최대치

이 모닥불엔 불 그림이 한 장도 없습니다. 장작의 연료가 실제로 줄면서 열이 되고, 열은 유체 방정식을 타고 오르고, 타고 남은 것은 연기가 되어 따로 흐르고, 뜨거운 자리에서 잔불이 튀어 바람에 실려 갑니다. 불 위의 밤하늘이 일렁이는 것도 장식이 아니라 뜨거운 공기 기둥이 빛을 굴절시키는 것을 흉내낸 층입니다. 장작이 다 타면 불은 정말로 꺼집니다 — 다시 넣어 보세요.

드래그 = 바람 젓기 · 아래쪽 클릭 = 불씨

모닥불 데스크

남은 장작
불꽃 높이 (실측)
최고 온도 (색 대응★)
연기 총량
잔불
온도는 불꽃 색과 흑체 복사의 대응으로 표기한다★ — 검붉음 ~700°C, 주황 ~1,100°C, 노랑·백색 ~1,300°C+. 시뮬레이션 온도장을 그 눈금에 얹은 것이지 열전대 측정이 아니다. 높이·연기·잔불은 전부 시뮬 실측.

풀고 있는 방정식

∂u/∂t + (u·∇)u = −∇p/ρ + f부력 ,  ∇·u = 0 나비에·스토크스. 공기는 압축되지 않으니(∇·u=0) 압력 푸아송을 야코비 반복으로 풀어 발산을 매 스텝 제거한다. 불이 "흐르는" 이유의 전부가 이 두 식이다.
f부력 = −β·T ĵ  ·  연소: F → T + S 뜨거우면 뜬다(부시네스크). 그리고 이 페이지의 추가 물리 — 장작의 연료 F가 실제로 소모되며 열 T와 연기 S를 만든다. F가 0이 되면 열원이 사라져 불이 진짜로 꺼진다.
ω = ∇×u  →  u += ε (N̂×ω) 소용돌이 보강. 성긴 격자가 뭉개버린 작은 회오리를 컬에서 찾아 되살린다. 불의 넘실거림·혀끝의 말림이 여기서 나온다 — 이게 꺼지면 불이 촛불처럼 밋밋해진다.
굴절 변위 ∝ ∂T/∂x 열아지랑이. 뜨거운 공기는 밀도가 낮아 굴절률이 다르다 — 빛이 휜다. 불 위쪽 배경을 온도 기울기만큼 좌우로 흔들어 그 굴절을 흉내낸다★(기하광학 근사). 모닥불 너머가 일렁여 보이는 실제 그 현상이다.

한 프레임에 벌어지는 일 · 5단계

① 한 장면이 만들어지는 길 — 그리고 불빛이 나오는 곳 아래 띠는 STEP 4 의 식을 그대로 칠한 것

아래 띠에는 불 사진이 한 장도 안 쓰였습니다 — 온도 T 하나를 세 줄짜리 식에 넣어 나온 색입니다. 왼쪽 끝이 갓 식은 숯, 오른쪽 끝이 불꽃 심지입니다.

STEP 1

장작이 탄다 — 연료 소모

장작 윗면의 연료 있는 칸만 열원이 된다. 연료는 실제로 줄고, 준 만큼 겉이 숯으로 검게 변한다. 노이즈로 흔들려서 불꽃 뿌리가 매 순간 다르게 넘실댄다.

flick = noise(x*0.09, t*0.16)
T += burn*flick ;  F −= 소모율
S += 연기율 * (1−flick*0.4)   // 탈수록 연기
STEP 2

세 장이 함께 흐른다

속도·온도에 더해 연기 밀도장이 따로 흐른다. 온도는 복사로 빨리 식지만 연기는 천천히 흩어진다 — 불꽃은 짧고 연기 기둥은 길게 남는 이유다.

advect(T) ;  advect(S) ;  advect(u,v)
T −= 냉각*T² ;  S *= 0.9975
STEP 3

잔불이 튄다

아주 뜨거운 칸에서 확률적으로 잔불 입자가 태어난다. 그 자리의 유체 속도를 물려받고, 바람에 실리고, 식으면서 어두워지다 사라진다 — 궤적이 곧 바람의 기록이다.

if (T > 0.82 && random() < p) {
  ember = {v: 유체속도+위로, 수명: 1~3s}
}
STEP 4

온도가 색이 된다

흑체 복사 램프 — 검정→검붉음→주황→노랑→백열. 별도의 불 텍스처가 없다. 연기는 아래에서 불빛을 받아 배가 주황으로 물든다.

r=T*2.7 ; g=T^1.75*1.95 ; b=T^3.4*1.5
연기색 = 회색 + 불빛(T아래) * 주황
STEP 5

빛무리와 아지랑이

불그림을 흐린 채 한 번 더 겹쳐 빛무리(bloom)를 만들고, 불 위 배경은 온도 기울기로 좌우를 흔들어 아지랑이를 넣는다. 카메라가 불을 찍을 때 생기는 그 두 가지다.

blur(14px) + lighter 0.5   // bloom
슬라이스마다 dx = k * ∂T/∂x  // 아지랑이
RENDER

꺼짐도 물리다

장작이 다 타면 열원이 사라지고, 남은 열이 식으며 불이 정말로 사그라든다. 숯의 붉은 잔광이 마지막까지 남는다 — 검증기가 이 일생(점화→전성기→소진→꺼짐)을 단언한다.

if (F 총량 == 0) 열원 없음
→ T 총량 単조 감소 → 꺼짐

실물은 이렇게 생겼다

위 화면은 유체 방정식을 매 프레임 풀어 그린 불입니다. 그림 파일을 불러다 쓴 게 아니고요. 진짜 장작불은 이렇게 생겼습니다.

밤 모래밭에서 장작을 세워 태우는 불. 노란 불꽃이 위로 솟고 옆에서 사람 손이 불을 쬐고 있다.

① 불꽃은 위로 ‘떠오르는’ 것이다

장작을 세워 놓고 태우는 모습입니다. 불꽃이 위로만 솟고, 뿌리 쪽은 좁고 위로 갈수록 흔들리며 벌어집니다.

위 계산이 그리는 게 정확히 이 모양입니다 — 뜨거운 공기가 가벼워서 부력으로 떠오르고, 그 흐름을 나비에·스토크스로 풉니다. 불꽃이 좌우로 안 퍼지고 위로만 가는 건 그래서고, 바람 손잡이를 주면 그 기둥이 통째로 눕습니다.

장작 사이 벌겋게 남은 자리가 잔불입니다. 위 화면의 잔불도 같은 것이고, 불꽃과 달리 천천히 식으며 오래 갑니다. 최고 온도는 화면에서 색으로 역산한 값이라 별표를 달아 뒀습니다 — 온도계를 꽂아 잰 게 아닙니다.

사진 Sandis Helvigs · CC0 · 위키미디어 커먼즈
이 화면은 이 네 종목 이야기입니다● 시세 불러오는 중

기준일을 100으로 놓고 그린 선입니다. 통화가 서로 달라 지수로 겹쳤습니다.

같은 기술의 서로 다른 칸입니다. 주가가 이 기술 때문이라고는 말하지 않습니다.