無料 HDRI キューブマップ変換ツール

2:1の正距円筒(エクイレクタングラー)HDRIをオンラインでキューブマップの面に変換——.hdrまたは.exrパノラマを放り込むだけで、本物のHDR立方体面が6枚戻ってきます。ファイルをアップロードすることは一切ありません。

HDRIをここにドロップ

クリックで選択 · .hdr / .exr · 最大 50 MB

IBLとスカイボックス向け、無料の HDRI キューブマップ変換ツール

トーンマップではなく、本物のHDR

1.0を超える値もそのまま残ります。.hdrや.exrはリニアな浮動小数点にデコードされ、floatのままリサンプリングされたうえでRadiance RGBEとして再エンコードされるので、太陽の丸い光源も明るい空もキューブマップの中で失われません。

100%ブラウザ内で処理

デコード、キューブ投影、ZIPパッキングはすべて、あなたのマシン上のWeb Workerで実行されます。HDRIがアップロードされることは一切ありません——待ち行列もアカウントも不要です。

.hdrと.exrの両方に対応

Radiance .hdrとOpenEXR .exrのどちらも、最大50MBまで扱えます。half-floatのEXRは、キューブ投影が始まる前に32bit floatへ拡張されます。

エンジン別の命名プリセット

キューブマップの面を、Unityの Skybox/6 Sided スロット名、Three.jsの px/nx/py/ny/pz/nz、OpenGLの pos_x/neg_x のいずれかで命名——使っているローダーが期待する形式に合わせられます。

露出プレビュースライダー

Radianceデータには唯一絶対の正しい明るさというものがないため、スライダーで各面を −5〜+5 stopsの範囲でトーンマップしてプレビューできます。ZIP内の浮動小数点キューブマップ自体は変更されません。

1回の変換で2種類のダウンロード

ライティング用のRadiance .hdr面6枚に加えて、同じキューブマップを8bit PNGにトーンマップしたものも取得できます——LDR面しか受け付けないエンジン向けです。

HDRIをオンラインでキューブマップに変換する手順

  1. 1. .hdr または .exr をアップロード

    2:1の正距円筒HDRIを上のボックスにドラッグするか、クリックして選択してください。ファイルはローカルで読み込まれるため、デバイスの外に出ることはありません。

  2. 2. 回転と面サイズを設定

    512・1024・2048pxのキューブマップ面から選び、太陽を好きな位置に持ってこられるようキューブを0〜360°回転させます。

  3. 3. キューブマップに変換

    「HDRキューブマップに変換」をクリック。ワーカーがHDRIをfloatにデコードしたうえで6面すべてをレンダリングし、面ごとに進捗を報告します。

  4. 4. 面をダウンロード

    Unity・Three.js・OpenGL向けに命名された、6枚のRadiance .hdr面をZIPで取得——8bit版が必要ならトーンマップ済みPNGも入手できます。

対応する入力形式:EXRキューブマップ変換とHDRキューブマップ変換

このHDRキューブマップ変換ツールは、両方のコンテナ形式を1本の浮動小数点パイプラインに通すので、エクイレクタングラーからキューブマップへの変換はEXRでも.hdrでも面のジオメトリがまったく同じになります——違うのはデコーダーだけです。Radiance .hdrはRGBEとして読み込まれてfloatに展開され、.exrは32bit floatで読み込まれ、half-floatファイルは先に拡張されます。輝度のみのEXRも4チャンネルに展開されます。

ソースは2:1の正距円筒である必要があります——4096×2048、8192×4096など、幅が高さのちょうど2倍であれば構いません。ファイルは最大50MB:すべてメモリ上でデコードされ、4Kのfloatソースだけですでに約130MBに展開されます。キューブマップの面は512・1024・2048pxの正方形で出力され、ソースの高さ以下に抑えるとアップスケールによるぼやけを避けられます。

本物のHDRキューブマップ面 vs. トーンマップ済みPNG

メインのダウンロードは、RGBEとして格納された6枚のRadiance .hdr面です——3つの8bit仮数部と共有の指数部という構成で、これが.hdrが1.0をはるかに超える値を運べる仕組みです。これこそがイメージベースドライティング(IBL)に必要なもの——このキューブマップをサンプリングするレンダラーは、太陽が空より数千倍も明るいことをそのまま見られるので、反射やシャドウのコントラストが正しく仕上がります。

トーンマップ済みPNGのZIPはあくまで副次的なもので、意図的にロッシー(不可逆)です——各面はスライダーのstops値で露出をかけられ、Reinhard圧縮、ガンマエンコードされたうえで8bitに量子化されます。ターゲット側がLDR面しか受け付けない場合——素のWebGLスカイボックスやCubeTextureLoaderの背景など——に使ってください。これでシーンをライティングしてはいけません。露出でクリップされた情報は二度と戻りません。

出力含まれる内容最適な用途
6 × .hdr 面(ZIP)Radiance RGBEのfloat、フルダイナミックレンジIBL、反射プローブ、HDRスカイボックス
6 × .png 面(ZIP)8bit sRGB、指定した露出でトーンマップ済みLDRスカイボックスの背景、プレビュー
ページ上のサムネイル256pxのトーンマップ済みプレビュー向きの確認、継ぎ目の発見

HDRキューブマップをUnity・Blender・Three.jsで使う

Unity

UnityはRadiance .hdrをHDRテクスチャとしてインポートします。Unityプリセットで書き出し、各面を同じ名前のSkybox/6 Sidedスロットにドラッグしたうえで、Lighting → Environmentでそのマテリアルを割り当ててください。ハイライトがクランプされないよう、テクスチャ形式はHDRのままにしておきます。

Blender

BlenderのEnvironment Textureノードは正距円筒やミラーボール画像を投影する仕組みで、バラバラの6面を扱う想定にはなっていないため、キューブマップはBlenderの世界入力として自然な形式ではありません。これらの面はキューブ面を求めるエンジン向けに取っておき、1枚の画像に戻したい場合はキューブマップ→パノラマ変換ツールを使ってください。

Three.js

HDRCubeTextureLoader(three/examples/jsm/loaders)は6枚の.hdr面を読み込みます: new HDRCubeTextureLoader().setPath('/cube/').load(['px.hdr','nx.hdr','py.hdr','ny.hdr','pz.hdr','nz.hdr'], (tex) => { scene.environment = tex; }); Three.jsプリセットでこの順序どおりに書き出し、そのあとPMREMGeneratorに通してください。

HDRIキューブマップ変換 vs. パノラマキューブマップ変換

手元に何があるかでツールを選んでください。8bitのJPG・PNG・WebPパノラマはキューブマップ変換ツール向けです——同じキューブ投影、LDRピクセル、PNG面——このページのデコーダーはそもそもそれらを受け付けません。.hdrや.exrはこのページ向けです:8bitを経由させると、HDRIをHDRIたらしめているレンジそのものが失われてしまいます。

まだHDRIがない場合は、AI HDRI作成ツールがテキストプロンプトからRadiance .hdrを書き出します——LDRソースのコンテナなので、実測した太陽光の強度ではなく、背景やソフトなライティング素材として扱ってください。それでもこのページでキューブマップに変換できます。逆方向、つまり6枚の面を1枚の2:1画像に戻したい場合はキューブマップ→パノラマ変換ツールを使ってください。

まだ変換するHDRIがありませんか?

AI HDRI作成ツールでプロンプトから360°環境マップを生成し、そのRadiance .hdrをこのページに持ってきて6枚のキューブマップ面に切り出しましょう。

HDRI キューブマップ変換ツール——よくある質問

このHDRIキューブマップ変換ツールは、本物のHDRデータを保持しますか?

はい。6枚の.hdr面は、ソースからデコードされた浮動小数点の値をそのまま保持します——入力はリニアfloat、出力はRadiance RGBE——なので、1.0をはるかに超える明るさのピクセルもキューブマップの中に残ります。

私のHDRIはサーバーにアップロードされますか?

いいえ、あなたのHDRIがデバイスの外に出ることはありません。デコード、キューブ投影、ZIPパッキングはすべてブラウザ内のWeb Workerで行われます——アップロードという工程自体が存在しません。

EXRをキューブマップに変換できますか?

はい、OpenEXRの.exrはRadiance .hdrとまったく同じように変換されます。half-floatのEXRはまず32bit floatに拡張されたうえで、同じキューブマップ投影を経ます。

露出スライダーは何を変えますか?

露出スライダーは表示用のコントロールであり、ダウンロードする.hdrキューブマップ面を変更することは一切ありません。サムネイルを再トーンマップするだけで、同じ露出が任意のPNG ZIPには焼き込まれます。

なぜ自分のHDRIが2:1ではないと拒否されたのですか?

キューブマップ変換には2:1の正距円筒ソースが必要なので、幅が高さのちょうど2倍でないHDRIは、デコード後に拒否されます。ミラーボールプローブは先に再投影してください。

どの命名規則を選べばいいですか?

Skybox/6 SidedマテリアルならUnity、px/nx/py/ny/pz/nzならThree.js、pos_x/neg_xならOpenGLを選んでください。Unityプリセットは、各キューブマップ面をそれが入るスロットの名前で命名します——Unityの直感に反するLeft [+X]も含めて——なので名前どおりにスロットに合わせるだけです。

HDRキューブマップにはどの面サイズを使うべきですか?

4KのHDRIなら1024pxが安全な既定値です。Radiance面は容量が大きく——2048pxの面はZIP化前で約16MBあります——ソースの高さが十分なときだけ、それ以上を選んでください。

キューブマップの面を正距円筒のHDRIに戻せますか?

6枚の面を1枚の2:1画像に統合するのは別のツール、キューブマップ→パノラマ変換ツールの役割です。8bitの面を前提にしているので、トーンマップ済みPNGの書き出しを渡してください。