画像には実際の前後の距離がありません。それでも廊下、並木、卓上の物体の位置関係を読み取れます。複数の手がかりが、その読み取りを支えています。
まず重なりと相対的な大きさを見てから、透視と見る位置の関係を理解します。 複雑な建物を描く必要はありません。なぜ遠近が感じられるのか、どんな条件が必要なのかを指摘するのが目標です。
重なりは順序を示す
球が箱の一角を隠していると、通常は球が手前、箱が奥と読み取ります。隠れる物体が全部見えていなくても、関係は伝わります。
ただし重なりが主に示すのは前後の順序で、何センチ離れているかではありません。平面的なコラージュでも同じ手がかりを作れます。ここでは画像が何を伝えるかを考えます。
A は重なりで前後を明確にし、B は同じ対象の見かけの大きさを変えて距離を示します。二つの方法は組み合わせられますが、与える情報は異なります。
小さいものが必ず遠いとは限らない
同じ見る条件では、実際の寸法が同じ物体は遠いほど画面内で小さくなります。同じ街灯が道に沿って並ぶ様子を思い浮かべてください。
実寸が違えば、近くの硬貨が遠くの建物より画面を大きく占めることもあります。「画像内で小さい」をそのまま「現実で遠い」と置き換えられません。見慣れた物体の大きさ、重なり、地面との関係を合わせて判断します。
透視は見る位置から始まる
画面を固定された窓と考えます。目と物体を結ぶ直線が窓と交わる位置に、物体が投影されます。見る位置が変わると交点も変わります。
水平な地面がある一般的な場面では、水平線は目の高さに対応します。同じ空間方向の平行線は、投影の中で一つの消失点へ近づくことがあります。異なる方向には通常、異なる消失点があります。画面に平行な辺は、画面内の有限の点には集まりません。
箱で目の高さを確かめる
下の一点透視では、箱の正面が画面に平行です。奥行き方向の辺は同じ消失点へ向かいます。カメラは水平を保ち、高さだけを変えます。
図を準備しています
重なりから透視へ:三つの奥行きの手がかり重なりは前後関係を示します。大きさ表示では同寸の板を異なる距離に置きます。透視表示は水平な視線を固定して目の高さを変え、箱と床が水平線に対してどう動くかを示します。画面に平行な辺は平行のままです。
{"id":"space-and-viewpoint","title":"重なりから透視へ:三つの奥行きの手がかり","summary":"重なりは前後関係を示します。大きさ表示では同寸の板を異なる距離に置きます。透視表示は水平な視線を固定して目の高さを変え、箱と床が水平線に対してどう動くかを示します。画面に平行な辺は平行のままです。","height":680,"html":"<h2 data-i18n=\"heading\"></h2><p data-i18n=\"intro\"></p><svg class=\"scene\" viewBox=\"0 0 480 300\" role=\"img\" data-i18n-label=\"scene\" xmlns=\"http://www.w3.org/2000/svg\"><g id=\"world\"></g></svg><div class=\"controls\" role=\"group\" data-i18n-label=\"choices\"><button type=\"button\" data-mode=\"overlap\" aria-pressed=\"false\" data-i18n=\"overlap\"></button><button type=\"button\" data-mode=\"size\" aria-pressed=\"false\" data-i18n=\"size\"></button><button type=\"button\" data-mode=\"perspective\" aria-pressed=\"false\" data-i18n=\"perspective\"></button></div><label for=\"eye\" data-i18n=\"eye_label\"></label><input id=\"eye\" type=\"range\" min=\"100\" max=\"260\" value=\"160\" step=\"1\"><output id=\"eye-value\" for=\"eye\" class=\"readout\"></output><div class=\"status\"><p id=\"status\" role=\"status\" aria-live=\"polite\"></p></div><p class=\"readout\" data-i18n=\"note\"></p>","css":"\nbody { padding:22px; }\nh2 { font-size:20px; line-height:1.4; }\np { font-size:16px; line-height:1.65; }\n.scene { display:block; width:100%; height:auto; overflow:hidden; border-radius:4px; background:#e8e4dc; }\n.scene * { transition:none!important; }\n.controls { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:16px 0; }\n.controls button { flex:1 1 auto; min-height:44px; font-size:16px; }\nlabel { display:block; font-size:16px; margin:14px 0 4px; }\ninput[type=range] { width:100%; min-height:28px; }\n.readout { font-size:16px; color:var(--muted); }\n.status { display:grid; border-top:1px solid var(--rule); padding-top:12px; margin-top:16px; }\n.status p { grid-area:1/1; margin:0; }\n.status [aria-hidden=true] { visibility:hidden; }\n@media(max-width:480px) { body {padding:16px 12px;} h2 {font-size:19px;} }\n","js":"const $=s=>document.querySelector(s); const $$=s=>Array.from(document.querySelectorAll(s));\nfunction say(key){$('#status').textContent=viz.t(key);document.body.dataset.state=key;}\nfunction reserve(keys){keys.forEach(k=>{const p=document.createElement('p');p.textContent=viz.t(k);p.setAttribute('aria-hidden','true');$('.status').append(p);});}\nfunction selected(attr,value){$$('button['+attr+']').forEach(b=>b.setAttribute('aria-pressed',String(b.getAttribute(attr)===value)));}\n\nlet mode='perspective';const colors=['#8c6546','#576b73','#738162'];\nfunction project(x,y,z){return [240+220*x/z,130+220*(Number($('#eye').value)/100-y)/z];}\nfunction poly(points,fill){return `<polygon points=\"${points.map(p=>p.join(',')).join(' ')}\" fill=\"${fill}\"/>`;}\nfunction render(){let out='';const e=Number($('#eye').value)/100;\n if(mode==='overlap'){out='<rect x=\"0\" y=\"0\" width=\"480\" height=\"300\" fill=\"#e8e4dc\"/>';[0,1,2].forEach(i=>out+=`<rect x=\"${90+i*75}\" y=\"${60+i*35}\" width=\"150\" height=\"120\" rx=\"3\" fill=\"${colors[i]}\"/>`);}\n else if(mode==='size'){out='<rect x=\"0\" y=\"0\" width=\"480\" height=\"300\" fill=\"#e8e4dc\"/>';[7,5,3].forEach((z,i)=>{const a=project(-1.25,1,z),b=project(-.25,0,z);out+=`<rect x=\"${a[0]}\" y=\"${a[1]}\" width=\"${b[0]-a[0]}\" height=\"${b[1]-a[1]}\" fill=\"${colors[i]}\"/>`;});}\n else{out='<rect width=\"480\" height=\"300\" fill=\"#e8e4dc\"/><path d=\"M0 130 H480\" stroke=\"#9c6a25\" stroke-width=\"2\" stroke-dasharray=\"6 4\"/>';\n [-2,-1,0,1,2].forEach(x=>{const a=project(x,0,1.8),b=project(x,0,18);out+=`<path d=\"M${a} L${b} L240 130\" fill=\"none\" stroke=\"#afb0a7\"/>`;});\n [2,3,5,8,13].forEach(z=>{out+=`<path d=\"M${project(-2,0,z)} L${project(2,0,z)}\" stroke=\"#afb0a7\"/>`;});\n const x=-.6,z=4.2;out+=poly([project(x,0,z),project(x+1,0,z),project(x+1,1,z),project(x,1,z)],'#576b73');\n out+=poly([project(x,1,z),project(x+1,1,z),project(x+1,1,z+1),project(x,1,z+1)],'#82949a');\n out+='<circle cx=\"240\" cy=\"130\" r=\"5\" fill=\"#9c6a25\"/>';\n }\n $('#world').innerHTML=out;$('#eye').disabled=mode!=='perspective';$('#eye-value').textContent=viz.number(e,2);say('s_'+mode);selected('data-mode',mode);document.body.dataset.eye=e;\n}\nreserve(['s_overlap','s_size','s_perspective']);$('#eye').oninput=render;$$('button[data-mode]').forEach(b=>b.onclick=()=>{mode=b.dataset.mode;render();});render();\n","audio":false,"strings":{"choices":"奥行きの手がかり","eye_label":"目の高さ / 箱の高さ","heading":"画面の奥行きはどこから生まれる?","intro":"重なりを見てから、同じ物体の遠近による大きさを比べます。透視表示では目の高さを上げ、消失点だけでなく箱の上面を見ましょう。","note":"焦点距離を固定した理想的なピンホール投影です。目の高さは箱の高さを単位とします。カメラは傾けず上下するため、画面内の水平線の位置は変わりません。","overlap":"重なり","perspective":"一点透視","s_overlap":"後から描いた形が先の形を覆い、前後の順序を示します。重なりだけでは正確な距離は分かりません。","s_perspective":"視線は水平で、破線が水平線です。目の位置を上げると箱の上面がよく見えます。奥へ向かう辺は収束し、横方向の辺は平行のままです。","s_size":"三枚の板は実際には同じ縦横寸法で、カメラから 7、5、3 単位の距離にあります。近い板ほど大きく映ります。実寸が同じという条件が必要です。","scene":"重なり、相対的な大きさ、一点透視を比べる簡略図。","size":"相対的な大きさ"}}
目が箱の上面と同じ高さなら、上面はほぼ一本の線につぶれます。目を上げると、上面がよく見えるようになります。この実験で水平線が画面内の同じ位置にとどまるのは、カメラを傾けず、投影設定も固定しているためです。スマートフォンを持ち上げながら下へ傾ける操作は、二つの条件を同時に変えています。
地面を奥へ走る線は近づいて見えます。画面を横切る辺は平行のままですが、遠いものほど短く映ります。「すべての線を中央へ向ける」と覚えるより、空間内の方向を確かめるほうが役立ちます。
廊下から三種類の奥行きの証拠を読む
AI で生成した観察素材です。画像の手がかりを比較し、厳密な幾何関係は本文の作図で確認してください。
補助線を引く前に、見える証拠を探します。左の出入口は手前ほど大きく、奥で小さくなります。右の柱は重なり、床、壁、天井の辺は遠方へ狭まります。複数の手がかりが互いを支え、一つだけで空間全体を説明する必要はありません。
左壁の上辺と裾、右の柱列の方向をたどると、遠方の同じ領域へおおむね向かいます。遠くの山の輪郭を、透視作図の視平線だと思わないでください。 長い横線なら何でも視平線というわけでもありません。視平線は目の高さと水平な空間方向に関わり、山頂の線は具体的な地形を示します。
生成画像は観察に使い、厳密な測定には使いません。次は意図的に構成した部屋で、作図の順序を確かめます。
手順で学ぶ:家具を置ける部屋を組み立てる
A:見る条件を決めます。 カメラは水平で奥の壁に正対しています。視平線を引き、その上に奥行き方向の消失点を置き、画面に平行な奥の壁を長方形で示します。その四隅の方向を外側の画框まで延ばすと、壁、天井、床が組み上がります。消失点は方向を整理するもので、画面の主役を必ずそこへ置く命令ではありません。
B:空間の中に物を置きます。 左壁に出入口を加えます。縦辺は縦のまま、上辺と下辺は壁の奥行き方向へ収束します。遠いほど小さく見え、間隔も圧縮されます。紙の上で全部を等幅、等間隔にすると、異なる深さを無視することになります。
C:整合しない例を診断します。 右の出入口の上辺が、壁の方向と合わない向きへ進んでいます。木目や影を足しても構造の誤りは直りません。どの空間方向の辺かを確認してから直します。すべての線を一つの点に集める必要はありません。
等間隔を作図する:奥行きが等しい四枚のタイル
水平な床を水平なカメラで正面から見る条件です。横方向の辺は水平、左右の辺は V へ向かいます。A は長方形の床の投影で、AB が手前、CD が奥。画面上の高さではなく、実際の奥行きを四等分します。
B:A と C、B と D を結び、交点を M とします。長方形の中心は投影後もこの対角線の交点です。M を通る AB と平行な横線が実際の奥行きを半分に分けます。画面上で M が奥側に寄るのは、距離が圧縮されるためです。
C:前後の二つの長方形でも対角線の交点を求め、横線を引くと、実際の奥行きが等しい四枚になります。細い破線は二回目の作図。D は画面上の間隔を等しくしたため、この条件で等深のタイルとは言えません。
長方形の壁にも応用できます。対角線で中心を求め、その面の別の辺方向に分割します。二点透視では分割線も対応する消失点へ向かい、機械的な水平線ではありません。これは反復間隔の作図であり、扉の幅や高さにもそれぞれの方向関係が必要です。
箱を回すと、なぜ消失点が二つになるのか
先ほどの壁や箱の正面は画面に平行なので、その横辺は水平を保ち、奥行きの辺が収束しました。箱を地面上で回すと、二組の水平辺がどちらも奥へ向かい、それぞれの消失点を持つのが一般的です。カメラが水平なら縦辺は縦のままです。これがよく使う二点透視です。
二つの点は画框の外でも構いません。両方を紙の中へ押し込むと、手前の角が過度に尖り、左右の縮み方が急になることがあります。点の数より見る位置と投影の関係を確かめます。高い建物を見上げれば縦辺も収束し、カメラの条件が変わります。
定規がなくても奥行きを整理できる
| 手がかり | 説明できること | 注意すること |
| 重なり | 前後の順序 | 直接、距離は得られない |
| 同寸と分かる物の見かけの大きさ | 相対的な遠近 | 実寸不明なら小さい物が遠いとは限らない |
| 密になる質感、圧縮される間隔 | 面が奥へ延びること | 繰り返しも共通の空間方向に従う |
| 遠方の細部と対比の減少 | 一般的な大気条件での距離感 | 空気、照明、材質で変わり、室内を一律に青くする必要はない |
霧の山なら、直線の作図を至る所に加えるより、重なり、尺度、遠方の弱い細部や対比で層を組み立てられます。対象の構造に合う道具を選びましょう。
柱の列で確認:奥の一本はどう違う?
柱は同じ高さで同一の水平面に立ち、カメラは水平、目の高さは柱高と同じです。A が基準、B は一本を変更、C は A に補助線を追加。B は条件を満たすでしょうか。図の根拠と、B が成立しうる別の条件を述べてください。
先に判断してから解説を開く
B は奥の柱の底を保ったまま、上端を共通の水平線より高くしています。柱高と目の高さが同じなら、上端はすべて水平線上に投影され、A と C が合います。B はその柱だけ高い場合などには成立しますが、「同じ高さ、同じ地面」という条件は変わります。
間違えやすい二つの判断
状況一: 写真の手前にある小さなカップが、奥の大きな水差しより小さく写っています。透視に反していますか。
考え方の例を開く
いいえ。遠近による大きさを直接比較するには、実寸が同じか、その違いを考慮する必要があります。投影の大きさは実寸と距離の両方によって決まります。
状況二: 一点透視の箱の正面で、上辺と下辺が収束していません。直す必要がありますか。
考え方の例を開く
正面が画面に平行なら、そのままで構いません。横方向の辺は平行を保ちます。奥へ伸びる別の組の辺が、対応する消失点へ向かいます。まず各辺がどの空間方向に属するかを確かめます。
任意の実践:机と同じ高さ、机より高い位置から箱を見ます。視線を水平に保ち、見える上面、重なり、辺の方向を比較します。その後で視線を傾け、条件の違いを確認してください。
参考:Getty:前景から背景へ、ナショナル・ギャラリー:消失点。