水中カラーシミュレーター 3D:ルアーの背と腹に、どの向きから光が当たるか

水中で光がどの向きからどれだけ来るかを、実測の吸収・散乱係数からモンテカルロ法で計算し、立体のルアーに当てて描きます。魚が見上げるか見下ろすか、太陽に向くか背にするかで、背・横・腹の見え方がどう変わるかを確かめられます。

水中カラーシミュレーターは、光が上から一様に降ってくるものとして計算していました。このアプリでは、水中で光がどの向きからどれだけ来るかを計算し、立体のルアーに当てて描きます。背・横・腹で色を塗り分けて、魚がどの位置から見るとどう見えるかを確かめられます。

計算は、実測された海水の吸収係数と散乱係数から、光の粒を1つずつ水の中で散乱させるモンテカルロ法で行いました。何を仮定したかと、どこまで確かめたかは下の解説に書きました。これも「魚にどう見えるか」ではなく、目に届く光がどうなるかの計算です。

水の種類Jerlov分類
空晴れは太陽と青空、曇りは一様に明るい空
上から見下ろしたところ。「魚が見る角度」の角度で、ルアーを上から見下ろしています。下から見上げた図とは、ルアーの水深と距離が同じで、魚の目の深さが違います。どちらの図も、その向きで見たルアーの後ろの水が同じ明るさになるようにそろえています。
魚の目から見た周り。魚がルアーのほうを向いたときに見える水の明るさと色です。中心の四角がルアーのある向き (ルアーそのものは小さすぎるので描いていません)、縁が中心から75°離れた向き、上が水面の側です。
下から見上げたところ。同じ角度で、ルアーを下から見上げています。右下の小さな図は、水の外での見本です。
ルアーを大きくしたところ。「魚の目から見た周り」の四角の位置にあるルアーを、その後ろの水を背景にして描いています。右下の小さな図は、同じ塗装を水の外で見た見本です (白い光で上と手前から照らした形で、光の当たり方は決めて描いたもの。水中の図のような計算ではありません)。

ルアーの水深
魚の目からルアーまでの距離
魚が見る角度 (下から見上げる ↔ 上から見下ろす)
太陽との向き (背にする ↔ 向かう)
ルアーの傾き (ローリング)
ルアーの首振り (ウォブリング)

ルアーは、頭が丸くしっぽに向かって細くなるミノー形で、目、リップ、トレブルフック (銀) を2つ付けて、横向きに見ています。フロントフックは腹から、リアフックはしっぽの端から後ろへ出たアイに通したリングから下げています。背・横・腹と頭の色の境目は、なだらかにつないで描いています。頭は図の左の端です。明るさは、「魚の目から見た周り」では魚の目の深さで真横を見たときの水が、「ルアーを大きくしたところ」ではルアーの後ろの水が、いつも同じ明るさになるようにそろえています。目が暗さに慣れたものとして描く、を外すと、水面の上に置いた白い紙を基準にした明るさになります。明るすぎるところは白く飛ばないよう、なだらかに縮めて描いています。太陽は見やすいよう、実際より大きくぼかして描いています。計算はすべてこのブラウザの中で行っています。

見方

左の図は、魚の目から見た周りの明るさです。中央の小さな四角の向きにルアーがあります。「魚が見る角度」を見上げる側に動かすと、上のほうに明るい円が入ってきます。水面の外の空が、屈折して真上から約48°の円の中に縮まって見えるもので、スネルの窓と呼ばれます。窓の外に見えるのは空ではなく、水の中の光が水面で反射して映ったものなので、暗く見えます。

右の図は、そのルアーを大きくしたものです。背・横・腹の色を選べます。下の表に、それぞれの部分が後ろの水と比べてどれだけ明るいか暗いか (コントラスト) と、ルアーの深さで、向きの違う面にどれだけ光が当たるかを出しています。

  • 太陽との向きは、0° が太陽を背にした向きです。ルアーの魚に見えている側に日が当たります。180° は太陽に向かう向きで、ルアーは逆光になります
  • 空は、晴れ (太陽と青空。太陽の高さ3通り) と曇り (一様に明るい空) から選びます。最初は「晴れ 高め」です
  • 図の明るさは、どの空でも、水面のすぐ上で水平な面に当たる明るさが同じになるようにそろえています。そのため、曇りを選んでも暗くはなりません。曇りでは光が斜めや横からも来るので、横の面や真横を見た水は、晴れより明るくなります
  • 光の色で常夜灯を選ぶと、光の色だけを常夜灯に替えます。光の来る向きは、選んだ空のままです。目は昼の光に慣れているものとして描くので、ナトリウム灯では全体がオレンジ色になります。右下の「水の外での見本」は、どの光でも白い光で描いています
  • 散乱のしかたは、光が水の中の粒子に当たって曲がる角度の分布です。Jerlov の水型では決まらないので、測られた2つの海から選びます。下記のとおり、結果が変わります
  • 頭の色を選ぶと、ルアーの先端 (図の左の端) から選んだ長さまでを、背・横・腹をまとめて1色で塗ります。最初は、頭をレッド、残りをパールにしたレッドヘッド (頭の長さは全長の30%) にしてあります。頭を「なし」にすると、背・横・腹だけの塗り分けになります
  • 銀 (鏡) は、メッキやホログラムの面を、まわりの景色をそのまま映す鏡として扱います。ルアーの傾き (ローリング) や首振り (ウォブリング) を変えると、太陽を映した瞬間に光ります (フラッシング)
  • 「ルアーを上からと下から並べて見る」を選ぶと、「魚の目から見た周り」のかわりに、上から見下ろしたルアーを左に、下から見上げたルアーを右に並べます。角度は「魚が見る角度」のつまみの大きさを、見下ろす側と見上げる側の両方に使います (つまみが40°なら、上から40°と下から40°)。下の表も、上からと下からの2つを並べて出します
  • 「水面のゆらぎ」を選ぶと、波が日差しを集めたり散らしたりしてできる明るさの模様を、ルアーの上に流します。晴れで、光の色が昼光のときだけです。強さと速さは測定から決めました (下記)。模様の形は私が決めたもので、計算したものではありません
  • 「動かす」で、ローリング、ウォブリング、その両方を繰り返し動かせます。動きの大きさ (傾き±30°、首振り±20°)、速さ (どちらも0.6秒で1往復)、ずれ (首振りが傾きより4分の1周期先) は私が決めた値で、実際のルアーの動きを測ったものではありません。両方を動かすと、頭を振りきったときに傾きが0、傾ききったときに首振りが0になります。首振りは、頭の先 (ラインアイ) を中心に回します。頭はラインにつながれているのでほとんど動かず、しっぽが左右に振れます。ラインアイの位置やリップの形で振れ方がどう変わるかは、ルアーの動きシミュレーターで計算しています

何を計算しているか

水の中のある深さで、どの向きからどれだけの光が来るか (放射輝度の分布) を計算しています。光の粒を1つずつ水に入れ、進む距離と散乱の角度を乱数で決めながら追いかけ、各深さの面を横切るたびに、その向きを数えます。モンテカルロ法と呼ばれるやり方で、手順は岸野ら (2000) の4節に書かれているものと同じです。吸収は、散乱のたびに光の粒の重みを減らすことで扱っています。水型・散乱のしかた・空の組み合わせ48通りと、420〜700 nm の15の波長について、前もって計算した表をページで読んでいます。晴れ (太陽と青空) は、太陽だけの表と曇りの表を、地上に届く光のうち空から来る光の割合で波長ごとに混ぜて作っています。

材料は、公開されている Python パッケージ jerlov (0.14.3) から取りました。

  • 吸収係数と散乱係数は、Williamson and Hollins (2022) の実測にもとづく値です。水中カラーシミュレーターと同じ値です
  • 散乱のしかたは、Petzold (1972) が8つの海で測った散乱の角度分布から、水そのものの散乱のぶんを引いた粒子の分を使いました。水そのものの散乱は Morel の式 (Boss and Pegau 2001 の式4・5) です
  • 色の計算に使う等色関数と D65 の光も、同じパッケージに入っている CIE の表です

jerlov は、光の通り道を解く計算 (放射伝達の計算) はしません。その部分は、このサイトのスクリプト (scripts/make_uw_radiance.py) で書きました。

散乱していない光は式で足しています

太陽からまっすぐ届く光と、空からまっすぐ届く光は、表に入れず、式で足しています。太陽の光は、水面で屈折した向きに進み、深さに応じて減ります。光の粒で数えると、太陽の向きの1点にだけ集まって、表の区切りでは表せないためです。

ルアーと目のあいだの水

ルアーから目に届く光は、次の2つの和です。

  • ルアーの光が、距離に応じて減って残ったもの
  • ルアーと目のあいだの水が、散乱で足す光

2つ目は、目の位置で同じ向きを見たときの水の明るさから、ルアーの位置で同じ向きを見たときの水の明るさを、同じ距離だけ減らしたものを引くと出ます。どちらの明るさも同じ水を通ってきた光なので、差を取ると、あいだの水が足した分だけが残ります。水が深さによらず一様なら、近似なしで成り立ちます。

置いた仮定

  • 水は深さによらず一様で、底がない (無限に深い) ものとしています。沿岸の水は深くなると澄んだ型に近づきますが、Williamson and Hollins (2023) の典型的な深さの変化では、このアプリの6つの型はどれも20 m までは同じ型のままです。このアプリで魚の目が入るのは20 m までです
  • 水面は平らで、波はありません。波があると、スネルの窓のふちがゆらぎ、浅いところでは光の模様 (コースティクス) が出ます。光の模様は「水面のゆらぎ」で、測られた強さに合わせて描けるようにしました (下記)。スネルの窓のゆらぎは入れていません
  • 粒子の散乱の角度分布は、530 nm で測られたものを全部の波長で使っています
  • 晴れの空の光は、どの向きも同じ明るさの空としています。本当の青空は、太陽のまわりと地平線の近くが明るくなります。地上に届く光のうち空から来る割合は、Bird and Riordan (1984) の晴天の式 (SPCTRAL2、pvlib 0.16.1 の実装) で出しました。大気の条件はその報告書の例 (エアロゾルの厚さ 0.27 (500 nm)、オゾン 0.344 cm、水蒸気 1.42 cm、1013 hPa、地面の反射率 0.2) で、空から来る割合は、太陽の高さ60°で420 nm の39%から700 nm の19%、30°で56%から27%です
  • 常夜灯の光の向きは、選んだ空と同じにしています。本当の常夜灯は1点から照らすので、光の来る向きはランプの高さと配光で決まりますが、入れていません。明るさも昼の光と同じにそろえています
  • 真横の向き (天頂角85〜95°) は、計算のばらつきが大きく残るので、すぐ外側の向きから補間した値を使っています
  • 0.1° より細かい角度は測られていません。その割合 (散乱のうち、沖合で13%、港で5%) は、向きを変えずにまっすぐ進むものとして扱いました
  • ルアーの塗装は、どの向きから来た光も同じ割合で、どの向きにも同じように返す面 (拡散面) としています。銀は反射率0.9の鏡とし、太陽を映したときのにじみを3°としました。どちらも私が置いた値です
  • ルアーは水の中の光をさえぎらないものとしています。胴がフックやリップに落とす影、フックが胴に落とす影も入れていません
  • フックは銀で、背・横・腹の銀と同じ反射率0.9の鏡として計算しています。リップは少し白く濁った透明な板として、後ろの景色を6割通し、白い塗装として2割5分を返し、表面で1割を映す形で描いています。リップの描き方は見た目のために決めたもので、透明な板の屈折までは計算していません
  • コントラストの欄は、胴の塗装 (頭・背・横・腹) だけから出しています。目、リップ、フックは数に入れていません

水面のゆらぎ

「水面のゆらぎ」は、測られたゆらぎの大きさと速さに合わせて、決めた形の模様を流しているものです。波の形から光の通り道を計算してはいません。

強さは、真上を向いた面に当たる光のばらつき (変動係数、標準偏差を平均で割ったもの) で決めています。基準にしたのは、Darecki ら (2011) がカリフォルニアの Santa Barbara 海峡で、晴れて風の弱い日 (風速 4〜6 m/s、太陽の天頂角30〜33°) に測った 532 nm の値です。図から読むと、深さ 0.9 m で0.54、1.7 m で0.38、2.9 m で0.22、3.8 m で0.16、6.3 m で0.076、9.6 m で0.051 でした。

この日の海の濁り (c(555) = 0.68 m⁻¹) は、このアプリの沿岸 (3C) の 0.77 m⁻¹ に近いので、3C と同じ光の減り方 (Kd) の海とみなしました。ほかの水型では、Kd の差の分だけ、深さとともに強さを指数で変えています。これは私が置いた式です。

太陽の高さによる違いは、Gernez and Antoine (2009) が地中海の沖合のブイ (深さ約4 m) で測った値の比で入れました。太陽の天頂角30°の値を1として、60° (「晴れ 低め」) は0.74、0° (「晴れ 真上」) は、測られている中でいちばん高い20°の値で代用して1.06です。

この式で澄んだ外洋 (IB) の深さ4 m を出すと24%、9 m で16%になります。Gernez and Antoine (2009) の澄んだ地中海での値 (深さ約4 m、太陽の天頂角30°で23%、光学的深さ0.5で約15%) とほぼ同じです。上限は、Hieronymi and Macke (2012) が、ゆらぎが最も強くなる条件で計算した最大の約80%にしました。

水型0.5 m1 m2 m3 m5 m10 m
澄んだ外洋 (IB)57%58%42%30%20%16%
沿岸 (3C)54%52%33%21%11%5%
濁った沿岸 (5C)52%47%28%16%7%2%

表は、晴れ 高め (太陽の天頂角30°) のときの、真上を向いた面に当たる光の変動係数です。

  • 速さは、1秒に 1.7 ÷ √(深さ m) 回にしました。深さの平方根に反比例することは、Gernez and Antoine (2009) が過去の研究 (Fraser ら 1980) を引いて書いています。係数は、同じ論文で、深さ約4 m (光学的深さ0.2) の周波数の山が 0.85 Hz だったことに合わせました。深さ1 m で1秒に1.7回、4 m で0.85回、9 m で0.57回です
  • ゆらぐ光は太陽の向きから来るものとして、面の向きごとに、太陽の向きとのなす角の cos で割り振っています。太陽に向いた面ほど大きくゆらぎ、太陽と反対を向いた面 (晴れ 高めでの腹など) はゆらぎません。銀の面に映る太陽も、同じ倍率でゆらがせています
  • 模様の形は決め打ちです。明るいところの間隔は、Hieronymi and Macke (2010) と Hieronymi and Macke (2012) が書いている範囲 (深さ1 m で 1 cm から 35 cm、5 m で 9 cm から 34 cm) から選び、25 cm を主に、浅いところほど 8 cm と 3 cm の細かい模様を足しています。ルアーの全長は 12 cm としました
  • 波長による違いは入れていません。Darecki ら (2011) では赤い光ほどゆらぎが大きく、青い光ほど小さくなっています
  • 「ルアーを大きくしたところ」の後ろの水は、図の中で一様に明るさだけをゆらがせています。図に写る範囲が狭いので、模様にはしていません。強さは見る向きで決めました。Darecki ら (2011) が深さ 0.5〜1 m で、見る向きごとの明るさのゆらぎを測った図から読むと、真上で約19%、真横で約5% です。そのあいだは向きでつなぎ、深さによる弱まりは、真上を向いた面のゆらぎと同じ割合にしました。見下ろす向きは、Gernez and Antoine (2009) が測った、下から上がってくる光のゆらぎ (深さ約4 m で約4%、その5 m 下で約2%) を使っています。ルアーの上の模様とは別の場所の水面がつくるものなので、明るくなる時刻はそろえていません
  • Darecki ら (2011) では、屈折した太陽の向きのまわりと、真上から太陽と反対側へ60°の向き (スネルの窓の外の、水面で映る側) で、ゆらぎが大きくなっています (太陽のまわりでは変動係数が100%を超えます)。この山は入れていません。「魚の目から見た周り」もゆらがせていません
  • コントラストの欄は、ゆらぎを平均した値 (平らな水面のときと同じ) です
  • 曇りの日も、うねりで上の水の厚さが変わるために小さなゆらぎがあります (Gernez and Antoine 2009 では変動係数が平均3%)。小さいので描いていません

散乱のしかた

光が水の中の粒子に当たってどの向きに曲がるかは、Jerlov の水型では決まりません。このアプリでは、Petzold (1972) が測った海から2つを選べるようにしました。沖合 (カリフォルニア沖の HAOCE 11) と港 (サンディエゴ港の NUC 2200) です。後ろ向きに曲がる光の割合 (後方散乱の割合) は、測った値で沖合0.013、港0.019で、港のほうが大きい水です。

同じ水型でも、どちらを選ぶかで結果が変わります。晴れ (太陽の高さ60°)、沿岸 (3C) の水深3 m で、真上を向いた面に当たる光を100とすると、太陽と直角の方位を向いた縦の面には沖合で15、港で19、真下を向いた面には沖合で1.9、港で3.8が当たります。真横を見たときの水の明るさは、港のほうが1.9倍明るくなります。下の照合では港のほうが測定によく合ったので、最初は港を選んでいます。

計算はどこまで合っているか

2つの測定と比べました。

深さによる光の減り方

上から来る光が深さとともに減る割合 (拡散減衰係数 Kd) を、Jerlov (1976) が水型ごとにまとめた値と比べました。Kd はこの計算では答えとして出てくる量で、合わせ込んではいません。晴れ (太陽の高さ60°) で、1 m と10 m の値から出しています。

計算 ÷ Jerlov (1976) の比です。散乱のしかたは港 (NUC 2200)、1に近いほど合っています。

水型440 nm500 nm560 nm620 nm
澄んだ外洋 (IB)1.491.241.071.07
外洋 (II)1.221.011.001.04
濁った外洋 (III)1.110.990.930.99
澄んだ沿岸 (1C)0.761.061.081.06
沿岸 (3C)0.690.970.961.09
濁った沿岸 (5C)0.810.900.841.07

24個のうち17個が0.85〜1.15に入りました (沖合の散乱のしかたでも17個)。外れたのはおもに440 nm の青で、沿岸の型では計算のほうが2〜3割小さく、澄んだ外洋では大きく出ます。使っている係数は Williamson and Hollins (2022) が集めた吸収と散乱の測定で、Jerlov (1976) の Kd とは別の測定です。ずれは計算の誤りではなく、この2つの測定の違いから来ていると考えていますが、推測で、確かめてはいません。

角度ごとの明るさ

水中で、どの向きからどれだけ光が来るかを測った例は多くありません。ここでは、Tyler が1957年にアイダホ州の Pend Oreille 湖で測ったものと比べました (Tyler 1958)。水深230 m ほどの湖で、晴れてべた凪の日に、4〜66 m の7つの深さで、上下左右の明るさを測っています。測った波長は430〜546 nm の帯です。水中の光の計算を確かめる測定として、その後も使われてきたものです (たとえば岸野ら 2000 の図2、田中 2012 の1節)。

比べ方は次のとおりです。

  • 湖の水の光線の減り方 (c = 0.396 /m) は報告書の値を使いました
  • 吸収の大きさは報告書にないので、真上の明るさが16.6 m から29.0 m で減る割合に合うよう、1つだけ合わせました
  • 見る向きを30°ずつの帯に分け、太陽の方位とその反対の方位で、帯の平均の明るさを比べました。下を向いた向きは光が弱く、計算の光の粒が少ないので、1つの角度ではなく帯で比べています

真下の帯 (150〜180°) の明るさを基準にした比です (計算 ÷ 測定)。1に近いほど合っています。

深さ方位0〜30°30〜60°60〜90°90〜120°120〜150°150〜180°
16.6 m太陽側1.030.640.700.740.870.95
16.6 m反対側0.930.910.960.930.951.05
29.0 m太陽側1.220.850.760.710.850.94
29.0 m反対側1.111.061.001.031.011.06
41.3 m太陽側1.340.990.720.730.800.97
41.3 m反対側1.030.930.860.930.881.03

角度は見る向きで、0° が真上、180° が真下です。散乱のしかたは港 (NUC 2200) で、吸収係数は0.129 /m に合いました。

港の散乱のしかたでは、16.6〜41.3 m のどの帯も、測定の0.64〜1.34倍に入りました。太陽と反対側の方位では0.86〜1.11倍です。沖合の散乱のしかたでは、下から来る光が足りず、真下と真上の明るさの比が測定の0.31〜0.41倍になりました。このアプリが「港」を最初に選んでいるのはそのためです。ただし、比べたのは湖の水1か所で、海の水で同じように合うかは確かめていません。

太陽の側では、横から下 (60〜150°) の光が、計算では測定の7〜9割ほどになりました。Tyler は、太陽の向きの値は水面のきらめきのために最大で2分の1に低く出ている可能性がある、と書いています。測定の日は青空があり、計算は太陽だけで空の光を入れていないことも、違いの一部だと考えています (推測です)。

ほかに確かめたこと:

  • 太陽側を向いた縦の面に当たる光は、屈折した日差しの角度から出る値と合います。高さ60°の太陽は水中で天頂から21.9°に来るので、太陽を向いた縦の面には水平な面の tan 21.9° = 0.40 倍が当たり、計算 (青空を除いた太陽だけの空) は1 m で0.42〜0.48でした (散乱光のぶん少し多い)
  • 計算に使う波長の帯 (410〜710 nm) は、色の計算に使う等色関数の重みの98.8%以上を覆います

できないこと

  • 魚にどう見えるかは計算していません。理由は水中カラーシミュレーターに書いたとおりです
  • 波の形からの光の計算、泡、水面のきらめき、底からの照り返しは入っていません。「水面のゆらぎ」は、測られた強さと速さに合わせた模様で、波から計算したものではありません。浅い場所や底が明るい場所では、下から来る光がこの計算より多いはずです
  • 常夜灯は、光の色だけを替えています。1点から照らす光の向きの分布は、ランプの高さや配光が要るので計算していません
  • 晴れの青空は、どの向きも同じ明るさとしています。太陽のまわりや地平線の近くが明るい空の模様は入っていません
  • ルアーの形は1つ (ミノー形) だけで、形と大きさは選べません
  • 塗装の色は、画面の色から分光反射率を仮に作っています。写真で同じ色に見える2つの塗装が、水中で同じに見えるとは限りません
  • 蛍光と蓄光は入っていません
  • 明るさの判定 (見えるか見えないか) はしていません。出しているのは、ルアーと後ろの水との明るさの差の割合です

続けて読むなら

使ったもの・参考文献