「炎」を表現する
揺らめく火舌、白熱から赤へ沈む温度、立ちのぼる火の粉。情熱・熱気・生命力を、写真に頼らず動きで伝える表現テクニック。

このページについて
- 「炎の表現」とは:揺らめき・温度勾配・火の粉で“熱”を感じさせる表現。明るく白い根元から橙・赤へ、上にいくほど細く千切れて煙へ消える——この温度の流れと上昇する乱流が「炎らしさ」の核。
- こんな時に使う:イベント/ライブのLP・炭火/焼き料理・情熱系ブランド・キャンペーン・ゲーム/エンタメ・冬の暖(暖房/焚き火)。
- 関連タグ:🌺 温かみ🍴 飲食店・料理❄️ 清涼感(対極)
- AIへの伝え方のコツ:「炎っぽく」では曖昧。「白熱→橙→赤→煙の温度勾配」「上昇+横揺れ+拡散の3軸」「火の粉を加算合成で舞わせる」のように、温度・動き・合成方法を数値と語で指示する。
表現の引き出し
🎨 揺らめく炎のゆらぎ
📝 表現の語彙
💬 AIへの指示テンプレ
🎯 似合うシーン
ライブ/イベントLP・炭火/焼き料理・情熱系ブランド・ゲーム/エンタメ・冬季キャンペーン・ヒーロー背景
🔧 実装手法
p5.jsの粒子+上昇フローフィールド。寿命で温度勾配(白熱→橙→赤→煙)、加算合成で発光、ノイズで房に塊化+横揺れ(上ほど大きく)、火の粉は別粒子で点滅。微フェードの暗ヴェールで尾を残し、ノイズの時間発展で連続フリッカー(reduced-motionで静止)。
📄 コード例を見る
// Emberveil — 立ち上る炎の火舌を粒子+上昇フローフィールドで描く(p5.js)
// ① 温度勾配:粒子の寿命 t(0→1) を 白熱→橙→赤→暗赤→煙 へマップ
const STOPS = [
[0.00, 255,244,212], [0.16, 255,206,84], [0.36, 255,140,32],
[0.58, 232,58,26], [0.78, 120,22,12], [1.00, 30,24,22],
];
function temp(t){ /* STOPS を線形補間して [r,g,b] を返す */ }
// ② 房化:spawn位置をノイズで「明るい火柱」に寄せ、暗い隙間を作る
function spawnX(){
let best = random(width), bestD = -1;
for (let k=0;k<3;k++){ const c = random(width);
const d = noise(c*0.010, tz*0.6); if (d>bestD){ bestD=d; best=c; } }
return best;
}
function stepFire(){
// ③ 微フェードの暗ヴェールで尾を残す(前フレームをわずかに減衰)
blendMode(BLEND); noStroke();
const b = color(params.bg); b.setAlpha(params.fade); fill(b); rect(0,0,width,height);
blendMode(ADD); // ④ 加算合成:重なるほど明るく発光する
for (const p of P){
const n = noise(p.x*params.noiseScale, p.y*params.noiseScale, tz) - 0.5;
const heightNorm = 1 - (p.y/height);
const vx = n*params.sway*(1.0 + heightNorm*1.6); // 横揺れ(lick)は上ほど大きく
const vy = -p.spd*(0.9 + 0.3*(1-heightNorm));
const px=p.x, py=p.y; p.x+=vx; p.y+=vy; p.age++;
const t = p.age/p.max, col = temp(t);
const a = (t<0.15? t/0.15 : 1) * Math.pow(1-t,1.5) * 172; // 根元で明るく、上で消える
const w = p.w*(1.0 - 0.6*t); // 上ほど細く千切れる
stroke(col[0],col[1],col[2], a*0.45); strokeWeight(w*2.4); line(px,py,p.x,p.y); // 滲み
stroke(col[0],col[1],col[2], a); strokeWeight(w); line(px,py,p.x,p.y); // 芯
if (p.age>=p.max || p.y<-4) Object.assign(p, newP());
}
// ⑤ 火の粉(E)は本体より高く舞い、素数的に異なる位相で点滅
tz += params.drift; // ノイズの時間発展=炎が呼吸し続ける
}
// reduced-motion なら数十フレーム展開して noLoop() で静止。
// iframe で埋め込み: <iframe src="/demos/ember/index.html" height="180" sandbox="allow-scripts">※ 表現カードは1枚から公開しています。後日「熾火・残り火」「松明」なども同じフローで追加予定です。
よくある質問
炎はCSS/SVGでは作れないの?
簡易な揺らぎはCSS/SVGでも可能ですが、火舌の房(塊)への集まり・温度勾配・舞う火の粉までを自然に出すには、多数の粒子を加算合成で重ねる粒子シミュレーションが向きます。本ページのデモはp5.js(canvas)で実装しています。p5本体はpublic/配信のためJSバンドル(サイト容量)には含まれません。
炎のアニメーションは重くなりませんか?
デモはloading="lazy"のiframeで初期表示に影響しません。背景として常用する場合は粒子数を絞る、モバイルでは停止する、画面外では止める(Intersection Observer)などで実用範囲に収まります。prefers-reduced-motionでは数十フレーム展開した静止画として表示します。
色を自分のブランドに寄せられますか?
温度勾配(STOPS)の各ストップを差し替えれば、青い炎や紫の炎も作れます。ただし「熱」の説得力は、根元が最も明るく白い(白熱)という物理を保つことが鍵です。色相を変えても、寿命に沿って明→暗(発光→煙)へ落ちる流れは維持してください。
「清涼感」とどう違う?
清涼感は寒色・水・横に広がる光(コースティクス)が核、炎は暖色・縦の上昇・乱流が核です。両方をサイトに持つと寒暖の対比で表現の幅が出ます。情熱・熱気を出したいなら炎、涼しさ・透明感を出したいなら清涼感を選びます。
同じカテゴリの他のページ
「海」をWebで表現する - 波・光・泡の演出パターンとAIプロンプト | UI Memo
海らしさをWebサイトで演出する表現テクニック4選。重なる波・海中の光・泡の上昇・水面のきらめきの実装デモとコード、AIへの指示プロンプト付き。写真素材に頼らないCSS/SVGの軽量表現。
「木漏れ日」をWebで表現する - 光斑・透過光・枝影の演出パターンとAIプロンプト | UI Memo
木漏れ日の柔らかい光をWebサイトで演出する表現テクニック4選。揺れる光だまり・逆光の葉・林間の光と塵・壁に揺れる枝影の実装デモとコード、AIへの指示プロンプト付き。
「空」をWebで表現する - 雲・夕焼け・星空の演出パターンとAIプロンプト | UI Memo
空の移ろいをWebサイトで演出する表現テクニック4選。流れる雲・夕焼けの移ろい・星のまたたき・月夜の雲の実装デモとコード、AIへの指示プロンプト付き。写真素材に頼らない軽量なCSS/SVG表現。