IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社セルシスの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024128991
(43)【公開日】2024-09-26
(54)【発明の名称】パース定規表示方法
(51)【国際特許分類】
   G06T 11/80 20060101AFI20240918BHJP
【FI】
G06T11/80 E
【審査請求】有
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2023038187
(22)【出願日】2023-03-12
(11)【特許番号】
(45)【特許公報発行日】2023-07-10
(71)【出願人】
【識別番号】512162524
【氏名又は名称】株式会社セルシス
(74)【代理人】
【識別番号】100159547
【弁理士】
【氏名又は名称】鶴谷 裕二
(74)【代理人】
【識別番号】100223365
【弁理士】
【氏名又は名称】大町 真義
(72)【発明者】
【氏名】井口 雄介
(72)【発明者】
【氏名】葛見 聡
【テーマコード(参考)】
5B050
【Fターム(参考)】
5B050BA18
5B050CA07
5B050EA07
5B050EA12
5B050EA13
5B050EA19
(57)【要約】      (修正有)
【課題】ユーザが描画ソフトウエアを使用して、仮想的なキャンバスに絵を描画する際に、魚眼レンズで撮影した写真のようなイラストをより容易に描くことができるパース定規表示方法を提供する。
【解決手段】パース定規表示方法は、キャンバス上の点Oと、点Oを通りキャンバスの平面と直交する直線Vの上に置かれた点Pと、三次元空間に存在する点Wにより形成される∠OPWの角度をθとし、点Oと点Pとの距離を1として、点Wの座標を、点Oから距離f(θ,k)だけ離れたキャンバス上の点Bの座標に変換する関数f(θ,k)によってキャンバス上の直線又は三次元空間に存在する図形を変換して、直線を関数f(θ,k)によって変換して得られる曲線と同一形状の曲線を取得し、取得された曲線を有するパース定規を表示する。
【選択図】図25
【特許請求の範囲】
【請求項1】
仮想的な三次元空間に存在する平面状のキャンバス、に置かれたパース定規であって、ユーザからの魚眼レンズ表現の描画の指示によって、前記パース定規に沿って前記キャンバスの上に線を描画するように、コンピュータがパース定規を表示するパース定規表示方法であって、
前記キャンバス上の点Oと、前記点Oを通り前記キャンバスの平面と直交する直線Vの上に置かれた点Pと、前記三次元空間に存在する点Wにより形成される∠OPWの角度をθとし、前記点Oと前記点Pとの距離を1として、前記点Wの座標を、点Oから距離f(θ,k)だけ離れた前記キャンバス上の点Bの座標に変換する関数f(θ,k)であって、

変換に用いられるθの範囲のうち0≦θ<π/2の範囲において、
0≦f(θ,k)≦R*tan(θ)
0≦∂f(θ,k)/∂θ≦R*sec(θ)
を満たし、

∂f(θ,k)/∂θ|θ=0=R
を満たし、

θの範囲がπ/2以上の領域を含む場合は、θの範囲のうちπ/2≦θ≦πの範囲において、
f(θ,k)>0
∂f(θ,k)/∂θ≧0

を満たす関数であるf(θ,k)を定めることと、
前記関数f(θ,k)によって前記キャンバス上の直線又は前記三次元空間に存在する図形を変換して、直線を前記関数f(θ,k)によって変換して得られる曲線と同一形状の曲線を取得し、前記取得された曲線を有するパース定規を表示することと、
を有し、
ここで、kは前記パース定規における魚眼レンズ表現の歪みの強さを表すパラメータであり、
Rは前記点Oを中心とする前記パース定規の全体の拡縮を表すパラメータである、
パース定規表示方法。
【請求項2】
前記点Bは、前記点Oと前記点Wとを結ぶ直線を前記キャンバスの平面に垂直投影した直線の上に存在する、
請求項1に記載のパース定規表示方法。
【請求項3】
前記点Wは前記キャンバス上に存在する点であり、前記パース定規を表示することは、
前記関数f(θ,k)によって前記キャンバス上の直線を変換して得られる曲線のパース定規を表示する、請求項1に記載のパース定規表示方法。
【請求項4】
前記点Bは、前記点Oと前記点Wとを結ぶ直線上に存在する、
請求項3に記載のパース定規表示方法。
【請求項5】
前記直線Vを軸とする軸対称形状の曲面Gを形成することと、
前記点Pと前記点Wとを結ぶ直線が、前記曲面Gと交差する点を点Qとし、前記直線V上に存在する点Sであって、前記点Pに対して前記点Oと反対側に位置する点S、と前記点Qとを結ぶ直線が前記キャンバスと交差する点を点Dとして、
前記kの値は、前記点Pと前記点Sとの距離に比例し、
前記関数f(θ,k)の値は、前記点Oと前記点Dとの距離に比例する、
請求項1に記載のパース定規表示方法。
【請求項6】
前記直線Vを軸とする軸対称形状の曲面Gを形成することと、
前記点Pと前記点Wとを結ぶ直線が、前記曲面Gと交差する点を点Qとし、前記点Pと前記点Wとを結ぶ直線の上に置かれた点を点Cとし、前記キャンバスの平面とベクトルOQとのなす角度の値をαとし、前記キャンバスの平面とベクトルOCとのなす角度の値をβとして、
前記kの値は、β/αの値に比例し、
前記関数f(θ,k)の値は、前記点Oと前記点Cとの距離に比例する、
請求項1に記載のパース定規表示方法。
【請求項7】
前記関数f(θ,k)は、前記歪の強さkが所定の値の場合に、R*tan(θ)に一致または近似する、
請求項1に記載のパース定規表示方法。
【請求項8】
前記関数f(θ,k)は、前記歪の強さkが所定の値の場合に、
立体射影である、2*R*tan(θ/2)、
等距離射影である、R*θ、
等立体角射影である、2*R*sin(θ/2)及び
正射影である、R*sin(θ)、
のうち少なくとも1つに一致または近似する、
請求項1に記載のパース定規表示方法。
【請求項9】
前記関数f(θ,k)を定めることは、
点Bの座標を求める際に、前記キャンバスの平面上で点Oを原点として互いに直交する座標軸であるX軸及びY軸での、前記点BのX座標と前記点BのY座標とで異なる関数f(θ,k)を適用して、前記点Bの前記キャンバス上での座標を求めること、
を含む請求項1に記載のパース定規表示方法。
【請求項10】
前記パース定規を表示することは、
関数f(π/2,k)の大きさを一定の値に保つように、歪みの強さkとスケールファクタRとを設定すること、
を含む請求項1に記載のパース定規表示方法。
【請求項11】
前記関数f(θ,k)は、以下の式で定義され、
f(θ,k)=R*(k+1)*sin(θ)/(k+cos(θ))
ここで、0≦k≦∞である、
請求項1に記載のパース定規表示方法。
【請求項12】
前記関数f(θ,k)は、以下の式で定義され、
f(θ,k)=R*sin(θ)/cos(θ-θ*k/2)
ここで、0≦k≦2である、
請求項1に記載のパース定規表示方法。
【請求項13】
平面状のキャンバスに置かれたパース定規であって、ユーザからの魚眼レンズ表現の描画の指示によって、前記パース定規に沿って前記キャンバスの上に線を描画するように、コンピュータがパース定規を表示するパース定規表示方法であって、
前記キャンバス上の点Oと、前記キャンバス上に存在する点Wとの距離をrとして、前記点Wの座標を、点Oから距離g(r,k)だけ離れた前記キャンバス上の点Bの座標に変換する関数g(r,k)であって、

0≦g(r,k)≦R*r
0≦∂g(r,k)/∂r≦R
∂g(r,k)/∂r|r=0=R

を満たす関数であるg(r,k)を定めることと、
前記関数g(r,k)によって前記キャンバス上の直線を変換して曲線を取得し、前記取得された曲線を有するパース定規を表示することと、
を有し、
ここで、kは前記パース定規における魚眼レンズ表現の歪みの強さを表すパラメータであり、
Rは前記点Oを中心とする前記パース定規の全体の拡縮を表すパラメータである、
パース定規表示方法。
【請求項14】
前記関数g(r,k)は、以下の式で定義され、
g(r,k)=R*(k+1)*sin(tan-1(r))/(k+cos(tan-1(r))
ここで、0≦k≦∞である、
請求項13に記載のパース定規表示方法。
【請求項15】
前記関数g(r,k)は、以下の式で定義され、
g(r,k)=R*sin(tan-1(r))/cos(tan-1(r)-tan-1(r)*k/2)
ここで、0≦k≦2である、
請求項13に記載のパース定規表示方法。
【請求項16】
請求項1ないし15のうちいずれか1項に記載のパース定規表示方法をコンピュータに実行させるプログラム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パース定規表示方法に関する。
【背景技術】
【0002】
従来、描画ソフトウエアを利用して、イラストなどの立体を描画する際には、遠近法すなわちパースペクティブ(短縮して「パース」という)に基づくパース定規が用いられることがある。
パース定規は、イラストを描く際に、遠近法に基づいて正確な透視図を描くために使用される。パース定規の使い方の一例は以下のとおりである。
【0003】
ユーザがオブジェクトを描く場合、パース定規を、描きたいオブジェクトに合わせて配置する。例えば、オブジェクトが箱の形をしている場合は、箱の形に沿ってパース定規を配置する。パース定規に沿って透視図の線を引くことができる。線を描く場合、ユーザは、パース定規を使用することで、パース定規のガイド線に沿って描画することができるので、手書きであっても遠近法に従った正しい直線を描くことができる。同じ手順を繰り返すことで、遠近法に従ったイラストを二次元のキャンバス上に描くことができる。
【0004】
通常のイラストの構図では、透視投影と呼ばれる直線的な投影方法でのパースが使用されるが、より迫力のある演出を表現する際には、魚眼パースと呼ばれる特殊なパースが採用される場合がある。
【0005】
魚眼パースは一般的な透視投影のパースと異なり、曲線を作画する必要があるため、手作業で正確な線を引くことは難しい。そのため、このような複雑な魚眼レンズを表現した作画を補助する定規ツールが必要とされている。
従来から存在している一般的な魚眼パース定規としては曲線状のグリッド線を用いたものが知られている。
【0006】
魚眼レンズで撮影した写真のような歪みのあるイラストを描く場合に利用できる曲線状のパース定規を提供する描画ソフトウエアがある。曲線状のパース定規を用いることによって、ユーザは、魚眼レンズを用いた写真の映像と同じような遠近法を表現するオブジェクトを描くことができる。このソフトウエアを用いることで、魚眼レンズで撮影されたような透視図を描画することが比較的容易になる。
【0007】
また、魚眼パースの描き方を開示した非特許文献が存在する(例えば、非特許文献1参照)。この文献は、魚眼レンズを用いたカメラで撮影した写真のような歪みを持つイラストを描くときの一般的な方法論を開示している。
しかし、従来の魚眼パース定規には以下のような特徴がある。
【0008】
仮想的なカメラが持つ座標軸に対して平行な線を魚眼レンズで撮影したような曲線を描くことは可能であるが、様々な方向を持つ線を描くことができるパース定規を提供していない。
【0009】
また、魚眼レンズは、さまざまな種類があり、それぞれパースの歪みの強さが異なる。しかしながら、従来の魚眼パース定規は、このような様々な歪みを持つ描画の作業に利用できる機能をユーザに提供していない。
作画には関係ない余計な個所にも、グリッド状に魚眼パース定規が表示されるため、ユーザの作画の邪魔となる場合が発生していた。
【先行技術文献】
【非特許文献】
【0010】
【非特許文献1】https://oekaki-zukan.com/articles/11818
【発明の概要】
【発明が解決しようとする課題】
【0011】
開示の技術は、ユーザが描画ソフトウエアを使用して、仮想的なキャンバスに絵を描画する際に、魚眼レンズで撮影した写真のようなイラストをより容易に描くことができるようにすることを目的とする。
【課題を解決するための手段】
【0012】
開示の技術は、仮想的な三次元空間に存在する平面状のキャンバス、に置かれたパース定規であって、ユーザからの魚眼レンズ表現の描画の指示によって、前記パース定規に沿って前記キャンバスの上に線を描画するように、コンピュータがパース定規を表示するパース定規表示方法であって、
前記キャンバス上の点Oと、前記点Oを通り前記キャンバスの平面と直交する直線Vの上に置かれた点Pと、前記三次元空間に存在する点Wにより形成される∠OPWの角度をθとし、前記点Oと前記点Pとの距離を1として、前記点Wの座標を、点Oから距離f(θ,k)だけ離れた前記キャンバス上の点Bの座標に変換する関数f(θ,k)であって、
変換に用いられるθの範囲のうち0≦θ<π/2の範囲において、
0≦f(θ,k)≦R*tan(θ)
0≦∂f(θ,k)/∂θ≦R*sec(θ)
を満たし、
∂f(θ,k)/∂θ|θ=0=R
を満たし、θの範囲がπ/2以上の領域を含む場合は、θの範囲のうちπ/2≦θ≦πの範囲において、
f(θ,k)>0
∂f(θ,k)/∂θ≧0
を満たす関数であるf(θ,k)を定めることと、
前記関数f(θ,k)によって前記キャンバス上の直線又は前記三次元空間に存在する図形を変換して、直線を前記関数f(θ,k)によって変換して得られる曲線と同一形状の曲線を取得し、前記取得された曲線を有するパース定規を表示することと、
を有し、
ここで、kは前記パース定規における魚眼レンズ表現の歪みの強さを表すパラメータであり、
Rは前記点Oを中心とする前記パース定規の全体の拡縮を表すパラメータである、
パース定規表示方法を提供する。
【0013】
また、開示の技術において、前記点Bは、前記点Oと前記点Wとを結ぶ直線を前記キャンバスの平面に垂直投影した直線の上に存在してもよい。
【0014】
また、開示の技術において、前記点Wは前記キャンバス上に存在する点であり、前記パース定規を表示することは、前記関数f(θ,k)によって前記キャンバス上の直線を変換して得られる曲線のパース定規を表示してもよい。
【0015】
また、開示の技術において、前記点Bは、前記点Oと前記点Wとを結ぶ直線上に存在してもよい。
【0016】
また、開示の技術において、前記直線Vを軸とする軸対称形状の曲面Gを形成することと、
前記点Pと前記点Wとを結ぶ直線が、前記曲面Gと交差する点を点Qとし、前記直線V上に存在する点Sであって、前記点Pに対して前記点Oと反対側に位置する点S、と前記点Qとを結ぶ直線が前記キャンバスと交差する点を点Dとして、
前記kの値は、前記点Pと前記点Sとの距離に比例し、
前記関数f(θ,k)の値は、前記点Oと前記点Dとの距離に比例してもよい。
【0017】
また、開示の技術において、前記直線Vを軸とする軸対称形状の曲面Gを形成することと、
前記点Pと前記点Wとを結ぶ直線が、前記曲面Gと交差する点を点Qとし、前記点Pと前記点Wとを結ぶ直線の上に置かれた点を点Cとし、前記キャンバスの平面とベクトルOQとのなす角度の値をαとし、前記キャンバスの平面とベクトルOCとのなす角度の値をβとして、
前記kの値は、β/αの値に比例し、
前記関数f(θ,k)の値は、前記点Oと前記点Cとの距離に比例してもよい。
また、開示の技術において、前記関数f(θ,k)は、前記歪の強さkが所定の値の場合に、R*tan(θ)に一致または近似するようにしてもよい。
また、開示の技術において、前記関数f(θ,k)は、前記歪の強さkが所定の値の場合に、
立体射影である、2*R*tan(θ/2)、
等距離射影である、R*θ、
等立体角射影である、2*R*sin(θ/2)及び
正射影である、R*sin(θ)、
のうち少なくとも1つに一致または近似するようにしてもよい。
また、開示の技術において、前記関数f(θ,k)を定めることは、
点Bの座標を求める際に、前記キャンバスの平面上で点Oを原点として互いに直交する座標軸であるX軸及びY軸での、前記点BのX座標と前記点BのY座標とで異なる関数f(θ,k)を適用して、前記点Bの前記キャンバス上での座標を求めること、
を含んでもよい。
また、開示の技術において、前記パース定規を表示することは、
関数f(π/2,k)の大きさを一定の値に保つように、歪みの強さkとスケールファクタRとを設定すること、
を含んでもよい。
【0018】
また、開示の技術において、前記関数f(θ,k)は、以下の式で定義され、
f(θ,k)=R*(k+1)*sin(θ)/(k+cos(θ))
ここで、0≦k≦∞であってもよい。
【0019】
また、開示の技術において、前記関数f(θ,k)は、以下の式で定義され、
f(θ,k)=R*sin(θ)/cos(θ-θ*k/2)
ここで、0≦k≦2であってもよい。
また、開示の技術は、平面状のキャンバスに置かれたパース定規であって、ユーザからの魚眼レンズ表現の描画の指示によって、前記パース定規に沿って前記キャンバスの上に線を描画するように、コンピュータがパース定規を表示するパース定規表示方法であって、
前記キャンバス上の点Oと、前記キャンバス上に存在する点Wとの距離をrとして、前記点Wの座標を、点Oから距離g(r,k)だけ離れた前記キャンバス上の点Bの座標に変換する関数g(r,k)であって、

0≦g(r,k)≦R*r
0≦∂g(r,k)/∂r≦R
∂g(r,k)/∂r|r=0=R

を満たす関数であるg(r,k)を定めることと、
前記関数g(r,k)によって前記キャンバス上の直線を変換して曲線を取得し、前記取得された曲線を有するパース定規を表示することと、
を有し、
ここで、kは前記パース定規における魚眼レンズ表現の歪みの強さを表すパラメータであり、
Rは前記点Oを中心とする前記パース定規の全体の拡縮を表すパラメータである、
パース定規表示方法を提供してもよい。
また、開示の技術において、前記関数g(r,k)は、以下の式で定義され、
g(r,k)=R*(k+1)*sin(tan-1(r))/(k+cos(tan-1(r))
ここで、0≦k≦∞であってもよい。
また、開示の技術において、前記関数g(r,k)は、以下の式で定義され、
g(r,k)=R*sin(tan-1(r))/cos(tan-1(r)-tan-1(r)*k/2)
ここで、0≦k≦2であってもよい。
【0020】
また、開示の技術は、仮想的な三次元空間に存在する平面状のキャンバス、に置かれたパース定規であって、ユーザからの魚眼レンズ表現の描画の指示によって、前記パース定規に沿って前記キャンバスの上に線を描画するように、コンピュータがパース定規を表示するパース定規表示方法であって、
ユーザの指示に基づいて、前記キャンバス上の直線又は前記三次元空間における仮想的な直線を、前記魚眼レンズ表現に適合する前記キャンバス上の曲線に変換する規則を特定することと、
前記規則に基づく曲線であって、ユーザにより指定されたキャンバス上の所定の位置を通る曲線、で定まる前記パース定規を生成することと、
前記キャンバスを含む平面上に、前記ユーザに認識させるように複数の前記パース定規の曲線が収束する点である消失点の位置を特定することと、
前記キャンバスに前記パース定規を表示することと、
を有するパース定規表示方法を提供する。
【0021】
また、開示の技術において、前記規則を特定することは、
前記ユーザの指示が、魚眼レンズ表現の歪みの強さの変更である場合、
前記歪みの強さの変更に応答して、前記規則を変更することを含み、
前記パース定規を生成することは、
前記規則を変更する以前に前記生成されたパース定規を、前記変更された規則に基づく曲線であって、前記規則を変更する以前に前記ユーザにより指定された前記所定の位置を通る曲線、で定まる前記パース定規に、変更すること、を含んでもよい。
【0022】
また、開示の技術において、前記規則を特定することは、
前記ユーザから指定された魚眼レンズ表現の歪みの強さ、スケールファクタ、及び魚眼レンズ表現の仮想的なレンズの中心軸とキャンバスとの交点の位置のうち少なくとも1つに基づいて前記規則を特定してもよい。
【0023】
また、開示の技術において、前記規則を特定することは、
前記キャンバス上にユーザの指示に基づいて二つの曲線を描画することで、二つのパース定規の曲線を特定することと、
前記二つの曲線の交点を消失点とすることと、
少なくとも、前記二つの曲線の少なくとも一方の曲線の湾曲の程度に基づいて、魚眼レンズ表現の歪みの強さを特定することと、
を含んでもよい。
【0024】
また、開示の技術において、前記パース定規を生成することは、
前記ユーザの指示が、所定のパース定規の傾きの変更である場合、前記傾きの変更に応答して、前記規則を適用して、前記所定のパース定規の消失点の位置を変更すること、
を含んでもよい。
【0025】
また、開示の技術において、前記パース定規を生成することは、
前記ユーザの指示が、前記所定の位置の変更である場合、前記所定の位置の変更に応答して、前記規則を適用して、所定のパース定規の消失点の位置を変更せずに、変更された前記所定の位置を通る前記所定のパース定規の曲線を変更すること、
を含んでもよい。
【0026】
また、開示の技術において、前記パース定規を生成することは、
所定の消失点の位置が固定されるようにユーザから指示されている場合であって、前記所定の消失点に収束するパース定規の前記所定の位置を変更させない場合、前記パース定規を変更することができないようにさせること、
を含んでもよい。
【0027】
また、開示の技術において、前記パース定規を生成することは、
歪みの強さがユーザにより変更された場合、前記所定の位置を移動させないこととしてもよい。
【0028】
また、開示の技術において、前記パース定規を生成することは、
前記ユーザの指示により前記消失点の位置が変更された場合、前記パース定規の曲線を変更すること、
を含んでもよい。
【0029】
また、開示の技術において、前記パース定規を表示することは、
既に表示されていた前記パース定規の表示が変更された場合、
複数の前記パース定規の各々の変更に適合させて、複数の前記パース定規の各々に沿ってユーザの指示により描画された画像を変更すること、
を含んでもよい。
【0030】
また、開示の技術において、前記パース定規を表示することは、
既に表示されていた前記パース定規の表示が変更された場合、
複数の前記パース定規の各々の変更に適合させて、前記キャンバス上に存在する画像を変更すること、
を含んでもよい。
【0031】
また、開示の技術は、パース定規表示方法をコンピュータに実行させるプログラムであってもよい。
【発明の効果】
【0032】
開示の技術は、ユーザが描画ソフトウエアを使用して、仮想的なキャンバスに絵を描画する際に、魚眼レンズで撮影した写真のようなイラストをより容易に描くことができる環境を提供することができる。
【図面の簡単な説明】
【0033】
図1図1は開示の技術の概要を説明する図である。図1Aは、開示の技術をユーザが用いて描かれたイラストを示す図である。図1Bは、イラストが描かれる際に、ユーザが参考とした参照画像を示している。
図2図2はユーザが、開示の技術を利用してイラストを描く際の、概要を説明する図である。
図3図3は、参照画像に合わせて、魚眼パース定規が設定されている状況を示す図である。
図4図4は魚眼パース定規に沿って、曲線410が描かれた状態を示す図である。
図5図5は参照画像の表示をオフにした状態の表示を示した図である。
図6図6は魚眼パース定規を生成する際に用いられる関数f(θ,k)の一例を示す図である。
図7図7図6と同一の手法及び関数f(θ,k)において、θが90°を超える場合の一例を示す図である。
図8図8は魚眼パース定規を生成する際に用いられる関数f(θ,k)の他の例を示す図である。
図9図9図8と同一の手法及び関数f(θ,k)において、θが90°を超える場合の一例を示す図である。
図10図10は、曲面Gが球面以外の曲面である一例を示した図である。
図11図11はユーザの指示に基づいて歪みの強さの設定と消失点の決定とを行う例を示した図である。図11A乃至図11Dは、歪みの強さと、消失点の決定と、2つの魚眼パース定規の決定とをユーザが直感的に操作できるユーザインタフェースの例を示している。
図12図12は歪みの強さをユーザが変更した場合の魚眼パース定規の表示の例を示す図である。図12Aは歪みの強さを変更する前の魚眼パース定規の表示を示している。図12Bは歪みの強さを変更した後の魚眼パース定規の表示を示している。
図13図13は魚眼パース定規の傾きの変更に伴う消失点の移動を説明する図である。図13Aは魚眼パース定規の傾きを変更する前の状態を示している。図13Bは魚眼パース定規の傾きを変更した後の状態を示している。
図14図14は魚眼パース定規を追加する例を示す図である。図14A乃至図14Cにおいて1つの魚眼パース定規が追加される例が示されている。
図15図15は魚眼パース定規の所定の位置をユーザの指示のもとに移動させたときの状態を示す図である。図15Aは所定の位置を移動させる前の状態を示している。図15Bは所定の位置を移動させた後の状態を示している。
図16図16は消失点の位置を固定する指示がユーザからなされた場合のハンドルの表示の例を示している。図16Aは消失点の位置を固定する指示がユーザからなされる前の状態を示している。図16Bは消失点の位置を固定する指示がユーザからなれた後の状態を示している。
図17図17は仮想的なレンズの中心軸の直線Vがキャンバスと交わる点O(レンズ中心点O)を移動させた場合の状態遷移を示す図である。図17Aは、レンズ中心点Oを移動させる前の図である。図17Bは、レンズ中心点Oを移動させた後の図である。
図18図18は消失点を移動させた場合の状態遷移を示す図である。図18Aは消失点を移動させる前の図である。図18Bは消失点を移動させた後の図である。
図19図19は歪みの強さを変更した場合における状態遷移を示す図である。図19Aは歪みの強さを変更する前の状態を示す図である。図19Bは歪みの強さを変更した後の状態を示す図である。
図20図20はスケールファクタRを変更した場合における状態遷移を示す図である。図20AはスケールファクタRを変更する前の状態を示す図である。図20BはスケールファクタRを変更した後の状態を示す図である。
図21図21は魚眼パース定規の表示の変更を示す図である。図21Aは歪みの強さを変更する前の状態を示す図である。図21Bは歪みの強さを変更した後の状態を示す図である。
図22図22は魚眼パース定規の表示の変更に伴い、既に魚眼パース定規に沿って描かれている曲線が変更される様子を示す図である。図22Aは歪みの強さを変更する前の状態を示す図である。図22Bは歪みの強さを変更した後の状態を示す図である。
図23図23は魚眼パース定規の表示の変更に伴い、キャンバスの画像も変更される様子を示す図である。図23Aは歪みの強さを変更する前の状態を示す図である。図23Bは歪みの強さを変更した後の状態を示す図である。
図24図24は魚眼パース定規の表示の変更に伴い、キャンバスの画像が変更される様子を示す図である。図24Aは変更する前の状態を示す図である。図24Bは変更した後の状態を示す図である。
図25図25は魚眼レンズ表現の描画に用いられる魚眼パース定規の曲線を生成するフローチャートである。
図26図26図6及び図7において説明した関数を用いる処理を示すフローチャートである。
図27図27図8及び図9において説明した関数を用いる処理を示すフローチャートである。
図28図28はキャンバスに魚眼パース定規を表示するフローチャートである。
図29図29A及び図29Bは、上記ステップS2802及びステップS2804のサブルーチンの一例を示したフローチャートである。
図30図30は規則の特定に関するフローを示している。
図31図31は規則の特定に関する他のフローを示している。
図32図32は魚眼パース定規を生成する処理フローの例を示すフローチャートである。
図33図33は魚眼パース定規を生成する処理フローの他の例を示すフローチャートである。
図34図34は魚眼パース定規を表示する例を示すフローチャートである。
図35図35は魚眼パース定規を表示する他の例を示すフローチャートである。
図36図36は実施形態のハードウエア構成図である。
図37図37はθを用いないでキャンバス上に存在する点Wの位置から点Bの位置を得ることを示した図である。
図38図38は互いに直交する複数の魚眼パース定規を容易に設定するユーザインタフェースを示す図である。
【発明を実施するための形態】
【0034】
以下、図面を参照しながら開示の技術を説明する。
【0035】
パース定規は、平面上の仮想的なキャンバスに対して、入力インタフェース(例えば、ペンシル、マウス、タッチパネル、タブレット、ポインティングデバイス等)を用いて、ユーザが描画を行う際に、様々な機能と共に提供されている。本明細書では、パース定規に関する従来の機能のうち、一般的な公知の機能については、説明を省略する場合がある点に留意すべきである。
【0036】
また、本明細書では、仮想的な三次元空間について言及する場合がある。しかしながら、この仮想的な三次元空間は、本技術(パース定規の生成方法など)をわかりやすく説明する上で利用されるものであって、ユーザが本技術(パース定規など)を利用して描画を行う際に、この仮想的な三次元空間が存在していることを必ずしも必須とするものではない点に留意すべきである。
【0037】
また、本明細書では、通常の透視投影であれば直線で描かれる線を、魚眼パース表現に従った曲線で描くことを例にして説明がなさされている。しかしながら、開示の技術は、曲線を描くことに限定されるものではなく、点、円、矩形、色を塗る範囲などのその他の描画手法に対して利用できることは言うまでもない。
【0038】
<実施形態1>
図1は開示の技術の概要を説明する図である。図1Aは、開示の技術をユーザが用いて描かれたイラストを示す図である。図1Bは、イラストが描かれる際に、ユーザが参考とした参照画像を示している。
【0039】
図1Aは、キャンバス100にイラスト102Aが描かれている図である。イラスト102Aは、魚眼レンズで撮影された写真のように、本来直線である対象物が、歪んだ曲線を有する画像となっている。例えば、窓104Aは、通常の透視投影法では直線で構成された窓枠を持つはずである。しかしながら、窓104Aは、魚眼レンズで撮影された写真のように、枠が歪んでおり湾曲している。このようなイラストは、通常の透視投影法とは異なり、より迫力のあるイラストとなっている。
【0040】
図1Bに示された参照画像102Bに存在する窓104Bも、同様に湾曲した窓となっており、参照画像102B自体も、魚眼レンズ表現を意図した画像となっている。
【0041】
開示の技術では、魚眼レンズ表現を模したイラスト102Aが、ユーザによって容易に描くことができる技術を提供する。なお、ユーザがイラスト102Aを描く際に、参照画像102Bを下絵としてキャンバスに重ねて表示させることもできるようにすることが望ましい。なお、参照画像102Bは、ユーザがイラストを描く際に必須のものではない点に留意すべきである。
或いは、参照画像102Bはユーザが描こうと意図している目的の画像として、ユーザの思考の中にのみ存在する場合も想定される。通常ユーザは、自分がこれから描こうとする画像(意図しているイラスト)を自分の思考の中に持っている。このような、仮想的な画像を具現化するために、ユーザは仮想的な画像に合わせて魚眼パース定規を配置し、配置された魚眼パース定規に沿って曲線を描画する。
【0042】
図2はユーザが、開示の技術を利用して、イラストを描く際の概要を説明する図である。図2Aはキャンバスに重ねて魚眼パース定規等が表示された図である。図2Bは開示の技術を用いて、ユーザの指示に基づき、コンピュータが建物の外形の線を描いた図である。図2Cは、建物及びその周辺の景色が描かれた図である。図2Dは完成したイラストを示す図である。
【0043】
図2Aは、キャンバスに重ねて表示された魚眼パース定規を含む描画補助ツール200を示している。描画補助ツール200は、イラストが描かれる描画レイヤとは別のレイヤに存在していることが望ましい。
【0044】
図2Aにおいて、アイレベル260は、地平線とも呼ばれる線であり、パース定規の消失点を地平線に合わせる際に用いることができる線である。例えば、透視投影などの投影法において、地面と平行な平面は、無限遠において、地平線に収束することが知られている。例えば無限遠まで続く道路の路壁のように、三次元空間において互いに平行な複数の直線の集合であって地面に平行な直線の集合は、無限遠で、アイレベル260に存在する1つの消失点に収束することが知られている。このようにアイレベル260は、魚眼パース定規の消失点を設定する際の目安として利用される。消失点をアイレベルに近づけると、消失点が、アイレベルの線に吸着するような、インタフェースが提供されてもよい。
【0045】
図2Aにおいて、消失点210、220、230が存在する。消失点220及び消失点230は、アイレベル260の線上に存在している。そして、魚眼パース定規222、224、226はアイレベル260の線上に存在する消失点220に収束している、同様に魚眼パース定規232、234、236はアイレベル260の線上に存在する消失点230に収束している。魚眼パース定規212、214、216はアイレベル260の線上に存在しない消失点210に収束している。アイレベル260の線上に消失点が存在する魚眼パース定規を用いることで、地面と平行な直線を魚眼レンズ表現に基づき歪ませた曲線を容易に描くことができる。なお、アイレベル260の線上に存在しない消失点を持つ魚眼パース定規は、地面とは平行でない直線を魚眼レンズ表現に基づき歪ませた曲線で描く際に利用される。
【0046】
図2Aでは、180度円202が描かれている。180度円は、仮想的な三次元空間においてカメラの正面から90度の方向に相当する。すなわち、180度円の内部は、仮想的な三次元空間におけるカメラよりも前方の領域に相当し、180度円の外部は、仮想的な三次元空間におけるカメラよりも後方の領域に相当する。
レンズ円とは、魚眼レンズが撮像面に投影する撮像画像が持つ画像の端により形成される円である。180度の画角を有する魚眼レンズのレンズ円は、180度円と同一である。
180度円202の上に消失点を持つ魚眼パース定規は、一方の消失点とレンズ中心点Oとを通る直線が180度円と交わる他方の点に、もう一つの消失点を持つ(不図示)。
消失点は、180度円を超えて180度円外にユーザによって移動させることができないように制限してもよい。
また、仮想的な三次元空間におけるカメラの姿勢は、必ずしも地面に平行ではない。したがって、アイレベル260は、ユーザの描画の目的に応じて、自由に設定できるようにすることが望ましい。
【0047】
なお、レンズ円をキャンバスに表示してもよい。180度を超える画角を有する魚眼レンズのレンズ円の場合、対になる2つの消失点をレンズ円内に存在させることができる。
【0048】
図2Bは、建物の外形280Aが、ユーザの指示のもとに、各々の魚眼パース定規に沿って描かれた様子を示している。
図2Cは、完成された建物280Bのイラストと、その建物の周辺の道が描かれた様子を示している。例えばユーザが曲線を描画する場合、それぞれの魚眼パース定規の位置に、線が描画されてもよい。また、魚眼パース定規から離れたところでユーザが線を描く場合には、ポインティングデバイスでポイントされたキャンバスの位置を通る不可視の魚眼パース定規が選定され、ユーザの指示に基づいて、選定された魚眼パース定規に沿って曲線が描かれるようにしてもよい。このようにすることによって、表示されている魚眼パース定規の本数を減らすことで、ユーザが描画の際に魚眼パース定規が邪魔になることを防止しつつ、適切な魚眼レンズ表現を持つイラストをユーザの指示のもとにコンピュータが描画することができる。
【0049】
図3は、参照画像に合わせて、魚眼パース定規が設定されている状況を示す図である。
消失点340に収束する複数の魚眼パース定規342及び消失点350に収束する複数の魚眼パース定規352は、地面に平行な直線と考えられる机の辺、壁と床の境、窓枠の横方向の枠に沿った魚眼パース定規である。
【0050】
キャンバス300において、消失点320に収束する複数の魚眼パース定規322は、地面に垂直な直線と考えられる机の脚、壁と壁との境及び垂直方向の窓枠に沿った魚眼パース定規である。
このように、参照画像を利用することで、ユーザは、複数の魚眼パース定規を容易に設定することができる。
【0051】
図4は魚眼パース定規に沿って、曲線410が描かれた状態を示す図である。
ユーザが魚眼パース定規に沿って、ポインティングデバイスを、キャンバス上で移動させることで、コンピュータが曲線410を描画することができる。
【0052】
図5は参照画像の表示をオフにした状態の表示を示した図である。描画された曲線410が魚眼パース定規と共に表示されている。なお、四角形500は、参照画像の位置を示すために便宜上記載した図である。
【0053】
図6及び図7は魚眼パース定規を生成する際に用いられる関数f(θ,k)の一例を示す図である。図6は0≦θ<π/2の場合の図で、図7はπ/2≦θ≦πの場合の図である。キャンバス610上の点Oと、点Oを通りキャンバスの平面と直交する直線Vの上に置かれた点Pと、三次元空間に存在する点Wにより形成される∠OPWの角度の値をθとし、点Oと点Pとの距離を1とする。そして、直線V上に存在し、点Pに対して点Oと反対側に存在し、点Pからの距離がkである点である点Sを置く。
【0054】
また、直線Vを軸対象とする曲面Gを置く。曲面Gの例としては、点Pを中心とする半径1の球面が挙げられる。なお、曲面Gは、このような球面に限定されるものではない。
【0055】
点Pと点Wとを結ぶ直線が曲面Gと交差する点をQとする。点Sと点Qとを結ぶ直線が、キャンバス610と交差する点を点Dとする。点Oから点Dまでの距離をnとする。
曲面Gが点Pを中心とする半径1の球面である場合、距離nは以下のように表される。

n=(k+1)*sin(θ)/(k+cos(θ)) (式1)
ただし、0≦k≦∞

スケールファクタをRとすると、関数f(θ,k)は、以下のように表される。

f(θ,k)=R*(k+1)*sin(θ)/(k+cos(θ)) (式2)

なお、kは、魚眼レンズ表現における歪みの強さを表すパラメータであり、スケールファクタRは、変換式全体にスケールをかけるパラメータである。f(θ,k)は、以下のように、kの値によって、様々な投影法と一致又は近似する。
k=0:透視投影(perspective)に一致(f(θ,k)=R*tan(θ)) (式3-1)
k=1:立体射影(stereographic)に一致(f(θ,k)=2*R*tan(θ/2)) (式3-2)
k=1.8:等距離射影(equidistant)を近似(f(θ,k)≒R*θ) (式3-3)
k=2.5:等立体角射影(equisolid)を近似(f(θ,k)≒2*R*sin(θ/2)) (式3-4)
k=∞:正射影(orthographic)に一致(f(θ,k)=R*sin(θ)) (式3-5)
このように、歪みのパラメータk及びスケールファクタRを適宜設定することによって、様々な性質の魚眼レンズ表現に対応する魚眼パース定規を定義することができる。
なお、180度円の半径は、θ=π/2のときの関数f(θ,k)の値、すなわちf(π/2,k)である。

関数f(θ,k)は、以下の性質を持つ。

変換に用いられるθの範囲のうち0≦θ<π/2の範囲において、
0≦f(θ,k)≦R*tan(θ) (式4)
0≦∂f(θ,k)/∂θ≦R*sec(θ) (式5-1)
を満たす。

∂f(θ,k)/∂θ|θ=0=R (式5-2)
を満たす。

θの範囲がπ/2以上の領域を含む場合は、θの範囲のうちπ/2≦θ≦πの範囲において、
f(θ,k)>0 (式5-3)
∂f(θ,k)/∂θ≧0 (式5-4)
を満たす。

式4は、関数f(θ,k)による変換は、透視投影による変換(およびその一様な拡縮)と比べて、変換された結果の点の座標が点Oに向かって移動していることを表している。
式5-1は、関数f(θ,k)による変換は、透視投影による変換(およびその一様な拡縮)と比べて、変換された結果の対応する部分が、点Oを中心とする半径方向に縮んでいることを表している。
式5-2は、点Oの近傍では、透視投影による変換(およびその一様な拡縮)と、拡縮がほぼ一致することを表している。
以上の条件式4、式5-1及び式5-2によって、点O近傍で、透視投影による変換と、ほぼ一致し、点Oに向かって収縮し、点Oから遠ざかるにしたがって、点Oを中心とする半径方向に縮む度合いが強くなることを表している。
更に、∂f(θ,k)/∂θ/(R*sec(θ))がθに対して単調減少になるように関数f(θ,k)を定めてもよい。関数f(θ,k)による変換は、透視投影による変換(およびその一様な拡縮)に対して、変換された結果の対応する部分の収縮の度合いが、点Oから離れるほどより強くなる(より小さくなるように縮む)。
図7に示されるように、θがπ/2(90°)を超える場合にも、魚眼パース定規を定義することが可能である。しかし、kの値によっては、f(θ,k)の値が無限大になったり、式5-4を満たさなくなったりすることがある。そのためθの範囲を、f(θ,k)の値が無限大にならず、かつ式5-4を満たす範囲に限定することが望ましい。
【0056】
なお、kの値を-1<k<0にすれば、糸巻型歪を表現できる。点Sは点Pに対して点Oと同じ側に位置する。
【0057】
関数f(θ,k)によってキャンバス上の直線又は三次元空間に存在する図形を変換して、直線を関数f(θ,k)によって変換して得られる曲線と同一形状の曲線を取得し、取得された曲線を有する魚眼パース定規を表示する。
【0058】
三次元空間に存在する直線Lに対して、下記条件を満たす図形Fが存在する。

条件:三次元空間に存在する図形Fであって、図形Fを関数f(θ,k)によって変換して得られる曲線が、直線Lを関数f(θ,k)によって変換して得られる曲線と同一になる。

これを利用して、直線Lを関数f(θ,k)によって変換する替わりに、図形Fを関数f(θ,k)によって変換して、魚眼パース定規の曲線を得てもよい。
【0059】
このような図形Fの例を以下に挙げる。ただし、点Pと直線Lとを含む平面を平面Eとする。
・平面Eと曲面Gとの交線。
・平面E上の曲線。
・平面E上の平面図形。
上記の、図形Fを用いた応用は、以下に説明する関数f(θ,k)の他の事例においても当てはまるものである。
また、点Bの座標を求める際に、キャンバスの平面上に点Oを原点とする直交座標系(X,Y座標とする)を設定し(不図示)、点BのX座標と前記点BのY座標とで異なるパラメータを持つ関数f(θ,k)を適用して、点Bの前記キャンバス上での座標を求めることにより、魚眼パース定規を定義してもよい。
このような魚眼パース定規を定義することで、X軸方向とY軸方向とで、異なる魚眼レンズ表現を持つ魚眼パース定規を得ることができる。
【0060】
上記の、X座標とY座標とで異なるパラメータを用いる応用は、以下に説明する関数f(θ,k)の他の事例においても当てはまるものである。
【0061】
図8及び図9は魚眼パース定規を生成する際に用いられる関数f(θ,k)の他の例を示す図である。図8は0≦θ<π/2の場合の図で、図9はπ/2≦θ≦πの場合の図である。
【0062】
キャンバス810上の点Oと、点Oを通りキャンバスの平面と直交する直線Vの上に置かれた点Pと、三次元空間に存在する点Wにより形成される∠OPWの角度をの値θとする。
点Oと点Pとの距離を1とする。
前記直線Vを軸とする軸対称形状の曲面Gを形成する。
【0063】
前記点Pと前記点Wとを結ぶ直線が、前記曲面Gと交差する点を点Qとし、前記キャンバス810の平面とベクトルOQとのなす角度の値をαとする。前記点Pと前記点Wとを結ぶ直線の上に置かれた点を点Cとし、前記キャンバス810の平面とベクトルOCとのなす角度の値をβとする。
下記のようにkを定義する。

k=β/α (式6)

点Oから点Cまでの距離をmとする。
曲面Gが点Pを中心とする半径1の球面である場合、距離mは以下のように表される。

m=sin(θ)/cos(θ-θ*k/2) (式7)
ただし、0≦k≦2

スケールファクタをRとすると、関数f(θ,k)は以下のように表される。

f(θ,k)=R*sin(θ)/cos(θ-θ*k/2) (式8)
【0064】
なお、kは、魚眼レンズ表現における歪みの強さを表すパラメータであり、スケールファクタRは、変換式全体にスケールをかけるパラメータである。f(θ,k)は、以下のように、kの値によって、様々な投影法と一致又は近似する。
k=0:透視投影(perspective)に一致(f(θ,k)=R*tan(θ))
k=0.655:立体射影(stereographic)を近似(f(θ,k)≒2*R*tan(θ/2))
k=0.875:等距離射影(equidistant)を近似(f(θ,k)≒R*θ)
k=1:等立体角射影(equisolid)に一致(f(θ,k)=2*R*sin(θ/2))
k=2:正射影(orthographic)に一致(f(θ,k)=R*sin(θ))
このように、歪みの強さのパラメータk及びスケールファクタRを適宜設定することによって、様々な性質の魚眼レンズ表現に対応する魚眼パース定規を定義することができる。
関数f(θ,k)は、式4、式5―1乃至式5-4で示した性質を持つ。
図9に示されるように、θがπ/2(90°)を超える場合にも、魚眼パース定規を定義することが可能である。しかし、kの値によっては、f(θ,k)の値が無限大になったり、式5-4を満たさなくなったりすることがある。そのためθの範囲を、f(θ,k)の値が無限大にならず、かつ式5-4を満たす範囲に限定することが望ましい。
【0065】
なお、kの値をk<0にすれば、糸巻型歪を表現できる。
【0066】
なお、応用例については、既に説明したので記載を省略する。
以上の関数を用いることで、魚眼パース定規を定義することができる。
また、消失点は、二つの魚眼パース定規が交差する点としてもよい。
【0067】
アイレベルは、魚眼パース定規を生成するときに用いた関数を用いて描いた1つの曲線であるとしてもよい。なおアイレベルは、魚眼パース定規の1つとして、ユーザが地平線を描く際などに、描画の線をアイレベルに吸着させて、ユーザの操作に基づいて、コンピュータが地平線を描くようにさせることもできる。
【0068】
図10は、曲面Gが球面以外である一例を示した図である。
【0069】
図10において、曲面G1010は、コーンを逆さにしたような曲面を持つ。この場合には、曲面Gが球面であるときよりも、点Oに近い領域の歪みが強くなる。このように、曲面Gの形状を変更することによって、様々な魚眼パース定規が定義できる。
【0070】
図11はユーザの指示に基づいて歪みの強さとスケールファクタRの設定と消失点の決定とを行う例を示した図である。図11A乃至図11Dは、歪みの強さと、スケールファクタRと、消失点の決定と、2つの魚眼パース定規の決定とをユーザが直感的に操作できるユーザインタフェースの一例を示している。
【0071】
図11Aにおいて、ユーザの指示(例えばマウスカーソルのドラッグ1120の始点D1122と終点D1124とを通る直線)によって、画面に直線1110を描画する。
【0072】
図11Bにおいて、マウスカーソル1170の次のドラッグの始点と終点により定まるベクトルをベクトル1171とする。
図11Aにおけるドラッグ1120の長さLと、図11Bにおけるベクトル1171の、直線1110と垂直な成分の長さとtに基づいて、歪みの強さk、スケールファクタR、レンズ中心点O及び180度円の半径Rpを含む複数のパラメータは決定できる。
したがって、決定されたパラメータに基づいて、直線1110を、始点1122と終点1124とを通るように湾曲させた曲線1112(魚眼パース定規の基になる線)を描画する。この際に、直線1110の湾曲の方向については、ベクトル1171の方向と整合する方向に湾曲させて曲線1112を得る。
歪みの強さは、例えばk=t/Lとしてもよい。これと異なる計算式であってもよいが、kはt=0の場合に0となり、tに対して単調増加であることが望ましい。t=Lの場合にはk=1となることが望ましい。
180度円の半径は、例えばRp=L /tとしてもよい。これと異なる計算式であってもよいが、t→0で無限大になり、t=Lの場合にLとなり、tに対して単調減少であることが望ましい。
歪みの強さkと180度円の半径Rpから、スケールファクタRを求めることができる(例えば後述の式a-1、式a-2)。
レンズ中心点Oは、点Dと点Dとを結ぶ線分の垂直二等分線上にあり、点Dと点Dとを通る直線とOの距離を-4(t-L/2)/L+Lとしてもよい。この距離は、t=0,Lの場合に最小値0となるような上に凸な関数であることが望ましい。
【0073】
図11Cで、既に複数のパラメータが決定されているため、例えばマウスカーソル1180のドラッグ1181の始点1182を通りドラッグ1181の終点1184の位置で定まる曲線1113(他の魚眼パース定規の基になる線)を描くことで、曲線1112と曲線1113との交点を消失点1130と定めることができる。
図11Dにおいて、消失点1130を超えている図11Cにおける曲線1112A及び曲線1113Aを削除することが望ましい。
なお、作成された消失点1130を通るように、アイレベルを適宜描画してもよい。また、複数のパラメータから、180度円を描画してもよい。
以上のようにして、簡便な操作で少なくとも1つの消失点と二つの魚眼パース定規を画面に表示させることができる。
【0074】
さらに、ユーザは、2本の曲線を描画することにより、2本の曲線の交点を消失点とする2本の魚眼パース定規を加えることができる(不図示)。また、既に描画されている消失点を通る曲線をユーザが描いた場合は、その消失点を通る魚眼パース定規を1本加えるようにしてもよい(不図示)。
【0075】
図12は歪みの強さをユーザが変更した場合の魚眼パース定規の表示の遷移の例を示す図である。図12Aは歪みの強さを変更する前の魚眼パース定規の表示を示している。図12Bは、スケールファクタを変えずに、歪みの強さを変更した後の魚眼パース定規の表示を示している。
【0076】
図12Aで、180度円1210Aの中に、アイレベル1220A、魚眼パース定規1230A、1240Aが表示されている。アイレベルの線上には、ユーザにより指示された所定の位置1222Aが存在している。魚眼パース定規1230Aの線上には、ユーザにより指示された所定の位置1232Aが存在している。魚眼パース定規1240Aの線上には、ユーザにより指示された所定の位置1242Aが存在している。そして、消失点1250Aがアイレベル1220Aの線上に存在している。
図12Bにおいて、ユーザにより、魚眼レンズ表現の歪みの強さが変更され、歪みの強さが増加した状態が示されている
歪みの強さが増加したため、以下の点が、図12Aと比較して図12Bにおいて変化している。
(1)180度円1210Aの大きさが小さくなり180度円1210Bとなっている。
(2)魚眼パース定規1230A、1240Aの湾曲が増加し及び長さが短くなり、それぞれ魚眼パース定規1230B、1240Bとなっている。
なお、図12A及び図12Bでは、スケールファクタRを変えずに、歪みの強さkを変更したため、180度円1210A、1210Bの大きさが変化した。歪みの強さkの変更とスケールファクタRの変更とを連動させて、180度円の大きさを変えずに歪みの強さを変えられるようにしてもよい。
以下に、180度円の半径をRに保つときに、歪みの強さとスケールファクタRをどのように連動させるかの例を示す。
(1)関数f(θ,k)が式2で定義される場合
180度円の半径をRとすると、式2から以下の式が導ける。
=f(π/2,k)=R*(k+1)/k
上記の式から、
R=R*k/(k+1) (式a-1)
の関係が導ける。
この式a-1を使って歪みの強さkとスケールファクタRとを連動させることで、180度円の半径を一定の値Rに保ったまま、歪みの強さkを変えることができる。
(2)関数f(θ,k)が式8で定義される場合
180度円の半径をRとすると、式8から以下の式が導ける。
=f(π/2,k)=R*cos(π*(2-k)/4)
上記の式から、
R=R/cos(π*(2-k)/4) (式a-2)
の関係が導ける。
この式a-2を使って歪みの強さkとスケールファクタRとを連動させることで、180度円の半径を一定の値Rに保ったまま、歪みの強さkを変えることができる。
【0077】
上記の変化があるものの、アイレベルの線上の所定の位置1222Aと1222Bとのキャンバス上の位置は、いすれも(x0,y0)であり、移動していない。魚眼パース定規1230Aの線上の所定の位置1232Aと1232Bとのキャンバス上の位置は、いずれも(x2,y2)であり、移動していない。魚眼パース定規1240Aの線上の所定の位置1242Aと1242Bとのキャンバス上の位置は、いずれも(x1,y1)であり、移動していない。
【0078】
以上のように、所定の位置については、歪みの強さが変更されても、キャンバス上におけるそれらの位置は、維持されるようにしてもよい。例えば、机の各辺に合わせてユーザが設定した魚眼パース定規は、机の辺の中央付近に上記の所定の位置を設定しておくことによって、歪みの強さが変更された場合であっても、ユーザにより指定された所定の位置を維持するように、魚眼パース定規の形状が変更されるようにすることができる。このようにすることによって、ユーザは、魚眼パース定規のうち所定の位置を固定することができるため、魚眼パース定規を参考画像の目的の画像位置に沿わせつつ、魚眼パース定規の傾き或いは湾曲の程度を変更することができ、より容易に、ユーザの所望する形状を有する魚眼パース定規を設定することができるようになる。
【0079】
上記の利点は、アイレベルの線上に設定された所定の位置についても同様である。歪みの強さを変更すると、アイレベル及び魚眼パース定規の位置及び形状が、ユーザの意図しない位置又は形状に変更されてしまうことを避けることができる。
【0080】
図13は魚眼パース定規の傾きの変更に伴う消失点の移動を説明する図である。図13Aは魚眼パース定規の傾きを変更する前の状態を示している。図13Bは魚眼パース定規の傾きを変更した後の状態を示している。
【0081】
図13Aにおいて、魚眼パース定規1320Aは、消失点1370Aを持ち、ユーザが傾きを調整できるハンドル1324Aが2つ存在する。2つのハンドル1324Aのいずれをドラッグしても、以下の所望の操作をユーザに提供することができる。また、魚眼パース定規1320Aは、所定の位置1322Aが設定されている。ユーザが、例えばカーソル1370を用いて、1つのハンドル1324Aをドラッグして移動させると、魚眼パース定規1320Aを、所定の位置1322Aを中心にして矢印1350方向に回転させることができる。
【0082】
図13Bにおいて、破線で示された魚眼パース定規1320Aが、ユーザの上記ドラッグ操作に応じて、矢印1350方向に回転しながら湾曲を変化させ、魚眼パース定規1320Bの状態に至る。この回転と湾曲変化に応じて、消失点1370Aの位置は、消失点1370Bの位置に移動する。この消失点の移動に伴い、魚眼パース定規1310Aは、消失点1370Bまで矢印1360だけ伸びる。
以上のようにして、ユーザの指示に基づき、所定の位置1322Aを固定させつつ、魚眼パース定規1320Aの傾きを変化させて消失点の位置を移動させることができる。
【0083】
図14は魚眼パース定規を追加する例を示す図である。図14A乃至図14Cにおいて1つの魚眼パース定規が追加される例が示されている。
【0084】
図14Aにおいて、魚眼パース定規1410、1420が消失点1430を共有している。ユーザが、例えばカーソル1450の位置でマウスボタンを押下すると直線1460Aが表示される。ユーザがマウスの押下を維持したまま、カーソル1450をドラッグすると、ドラッグに応じて、直線1460Aが回転し、例えば直線1460Bに回転する。なお、図14Aでは、直線1460A、1460Bが表示されているが、曲線が表示されてもよい。
図14Bにおいて、ユーザがドラッグを継続させると、魚眼パース定規1460Cが消失点1430に吸着する。
【0085】
図14Cにおいて、ユーザがドラッグを終了させると(マウスの押下を解除すると)、魚眼パース定規1460Cの消失点1430よりも突き出た曲線1460Dは消える。この操作により、既に存在する消失点1430を共有する新たな魚眼パース定規1460Cが生成される。
【0086】
なお、図14Aの状態を省略して、ユーザがマウスをドラッグすると、図14Bにおけるカーソル1450を通る魚眼パース定規1460Cが、表示されるようにしてもよい。ユーザがマウスの押下を解除すると、魚眼パース定規1460Cの消失点1430よりも突き出た曲線1460Dは消える。この操作により、既に存在する消失点1430を共有する新たな魚眼パース定規1460Cが生成されるようにしてもよい。
【0087】
また、キャンバスに複数の消失点が存在する場合には、図14Bにおいて、ユーザの指示するカーソル1450の操作に応じて、魚眼パース定規1460Cの位置から一番近い消失点に、魚眼パース定規1460Cが吸着するようにしてもよい(不図示)。
以上のようにすることによって、新たな魚眼パース定規を所望の消失点を通るように追加することが容易にできる。
【0088】
図15は魚眼パース定規の所定の位置をユーザの指示によって移動させたときの状態を示す図である。図15Aは所定の位置を移動させる前の状態を示している。図15Bは所定の位置を移動させた後の状態を示している。
図15Aにおいて、魚眼パース定規1520Aは、消失点1540を持つ。ユーザがマウスカーソル1550により、所定の位置1522Aを矢印1530の方向にドラッグする。
【0089】
図15Bにおいて、上記ドラッグ後の状態が示されている。所定の位置がドラッグに応じて、所定の位置1522Aから所定の位置1522Bに移動している。この移動に伴い、魚眼パース定規の曲線が適切に変更される。なお、消失点1540及び他の魚眼パース定規1510は変更されなくてよい。
【0090】
図16は消失点の位置を固定する指示がユーザからなされた場合のハンドルの表示の例を示している。図16Aは消失点の位置を固定する指示がユーザからなされる前の状態を示している。図16Bは消失点の位置を固定する指示がユーザからなれた後の状態を示している。
【0091】
図16Aにおいて、消失点1610の移動が許可されている状態であるため、魚眼パース定規の傾きを変更する4つのハンドル1624が表示されている。この場合、ユーザは、4つのハンドル1624のいずれかをマウスなどで操作することによって、魚眼パース定規の傾きを変更することが可能である。この変更に伴い、消失点1610が移動してしまう。
【0092】
図16Bにおいて、消失点1610の移動が許可されていない状態になると、魚眼パース定規の傾きを変更する4つのハンドル1624が表示されなくなるようにしてもよい。このようにすることによって、ユーザは、魚眼パース定規の傾きを操作することができないため、その操作に応じた消失点1610の移動が防止される。
【0093】
また、消失点1610を、カーソルでユーザがドラッグしても、消失点1610が移動しないようにすることができる。なお、ユーザが所定の位置を移動させても、消失点の位置は移動しないようにすることが望ましい。
【0094】
なお、移動が許可されていない消失点は、歪みの強さをユーザが変更されても、移動しないようにすることが望ましい。なお、歪みの強さ又はスケールファクタRが変更されることにより、消失点がレンズ円を超えようとするなど、消失点の位置が破綻をきたすような場合には、消失点を移動させてもよい。
【0095】
図17は仮想的なレンズの中心軸の直線Vがキャンバスと交わる点O(レンズ中心点O)を移動させた場合の状態遷移を示す図である。図17Aは、レンズ中心点Oを移動させる前の図である。図17Bは、レンズ中心点Oを移動させた後の図である。
【0096】
図17Aにおけるレンズ中心点O(1710A)の位置は、矢印1730方向に移動し、図17Bにおいては、レンズ中心点O(1710B)に移動している。図17Aにおける所定の位置1750Aの座標(x5,y5)及び所定の位置1760Aの座標(x6,y6)は、図17Bにおいても、それぞれ所定の位置1750Bの座標(x5,y5)及び所定の位置1760Bの座標(x6,y6)であり、キャンバス上を移動しない。なお、180度円及び消失点は、レンズ中心点Oの移動に追随して移動する。これに伴って、 図17の魚眼パース定規1752A及び魚眼パース定規1762Aの形状はそれぞれ魚眼パース定規1752B及び魚眼パース定規1762Bに変化する。アイレベル1790A、1790B及びアイレベルの線上に存在する所定の位置は、レンズ中心点の移動に追随して移動することが望ましい。
このようにすることによって、参照画像を重ねて表示させている場合に、参照画像と、所定の位置とがずれないようにすることができる。
【0097】
図18は消失点を移動させた場合の状態遷移を示す図である。図18Aは消失点を移動させる前の図である。図18Bは消失点を移動させた後の図である。
図18Aにおいて、消失点1820Aを矢印1850の方向に移動させる。図18Bにおいて、移動後の消失点1820Bの位置が示されている。この場合、図18Aの所定の位置1870Aの座標(x7,y7)及び所定の位置1880Aの座標(x8,y8)は、図18Bにおいても、それぞれ所定の位置1870Bの座標(x7,y7)及び所定の位置1880Bの座標(x8,y8)であり、キャンバス上を移動しない。図18の消失点1820Aが消失点1820Bに移動するのに伴って、魚眼パース定規1872A及び魚眼パース定規1882Aの形状はそれぞれ魚眼パース定規1872B及び魚眼パース定規1882Bに変化する。
消失点がドラッグされた際の挙動については、例えば以下のようにするとよい。消失点がアイレベルの線上にあるかどうかによって,挙動を異ならせてもよい。また,アイレベルの線上にある場合でも,その消失点が1番目の消失点か,2番目以降の消失点かで挙動を異ならせてもよい。
(1)前記消失点がアイレベルの線上の1番目の消失点で、アイレベルが固定されている場合:
・前記消失点の位置はアイレベルの線上を移動する。
・前記消失点を移動させても、アイレベルは変化しない。
(2)前記消失点がアイレベルの線上の1番目の消失点で、アイレベルが固定されていない場合:
・前記失点の位置に制限はない。
・前記消失点の移動に伴って、アイレベルが変化する。
(3)前記消失点がアイレベルの線上の2番目以降の消失点、またはアイレベルの線上にない消失点の場合:
・前記失点の位置に制限はない(ただし,アイレベルに吸着する挙動にしてもよい)。
・前記消失点を移動させてもアイレベルは変化しない。
このようにすることによって、参照画像を重ねて表示させている場合に、参照画像と、所定の位置とがずれないようにすることができる。
【0098】
図19は歪みの強さを変更した場合における状態遷移を示す図である。図19Aは歪みの強さを変更する前の状態を示す図である。図19Bは歪みの強さを変更した後の状態を示す図である。
【0099】
消失点1950Aが固定されている場合には、その固定されている消失点の座標を維持させることが望ましい。いずれの消失点も固定する指示がなされていない場合には、所定の位置の全ての座標を維持させることが望ましい。
【0100】
図19Aでは、消失点1950Aの位置を固定させる指示がなされていない場合を示している。この場合には、図19Aにおける所定の位置1930A、1940Aのそれぞれの座標は、図19Bにおいて、所定の位置1930B、1940Bの座標と同じとなる。
【0101】
これに対して、図19Aで、消失点1950Aの座標を固定する指示がなされている場合には、図19Bにおける消失点1950Bの位置は、変化させないことが望ましい。この場合、所定の位置1930A、1940Aのそれぞれの座標は、図19Bにおいて、所定の位置1930B、1940Bの座標と同じにならなくてもよい。
このようにすることによって、歪みの強さを変更する場合に、ユーザは、消失点の位置を固定するか、所定の位置を固定させるかを選択することができる。
【0102】
図20はスケールファクタRを変更した場合における状態遷移を示す図である。図20AはスケールファクタRを変更する前の状態を示す図である。図20BはスケールファクタRを変更した後の状態を示す図である。
【0103】
消失点2022Aが固定されている場合には、その固定されている消失点の座標を維持させることが望ましい。いずれの消失点も固定する指示がなされていない場合には、所定の位置の全ての座標を維持させることが望ましい。
図20Aでは、消失点2022Aの位置を固定させる指示がなされていない場合を示している。この場合には、図20Aにおける所定の位置2030A、2040Aのそれぞれの座標は、図20Bにおいて、所定の位置2030B、2040Bの座標と同じとなる。
これに対して、図20Aで、消失点2022Aの座標を固定する指示がなされている場合には、図20Bにおける消失点2022Bの位置は、変化させないことが望ましい。この場合、所定の位置2030A、2040Aのそれぞれの座標は、図20Bにおいて、所定の位置2030B、2040Bの座標と同じにならなくてもよい。
【0104】
このようにすることによって、スケールファクタRを変更する場合に、ユーザは、消失点の位置を固定するか、所定の位置を固定させるかを選択することができる。
【0105】
図21は魚眼パース定規の表示の変更を示す図である。図21Aは歪みの強さを変更する前の状態を示す図である。図21Bは歪みの強さを変更した後の状態を示す図である。
【0106】
図21Aにおける魚眼パース定規2150Aは、歪みの強さを増加させる指示を与えると、図21Bにおける魚眼パース定規2150Bのように表示が変更される。その他の魚眼パース定規及びアイレベルの形状についても、歪みの強さを増加させる指示を与えることで同様に図21A図21Bとに示されるように表示が変更される。
【0107】
図22は魚眼パース定規の表示の変更に伴い、既に魚眼パース定規に沿って描画されている曲線が変更される様子を示す図である。図22Aは歪みの強さを変更する前の状態を示す図である。図22Bは歪みの強さを変更した後の状態を示す図である。
【0108】
図22Aに示される魚眼パース定規(例えば魚眼パース定規2250A)が、図22Bに示される魚眼パース定規(例えば魚眼パース定規2250B)に表示が変更された場合、図22Aに示される既に描画されている曲線2210Aが、図22Bに示される曲線2210Bに変更される。
【0109】
このように、歪みの強さが変更されたことに伴い魚眼パース定規2250Aの表示が変化して魚眼パース定規2250Bに変化するに伴い、この変更に適合して、既に魚眼パース定規に沿って描画されている曲線2210Aも曲線2210Bに変化する。
【0110】
このようにすることによって、特定の歪みの強さの変更に適合させて、魚眼パース定規が変更されると共に、既に描画された曲線も変更されるようにしてもよい。
このようにすることによって、魚眼パース定規が変更された場合であっても、ユーザは描画をはじめから描き直す必要がなくなる。
【0111】
図23は魚眼パース定規の表示の変更に伴い、既に魚眼パース定規に沿って描画されている曲線が変更されることに加えて参照される参照画像も変更される様子を示す図である。図23Aは歪みの強さを変更する前の状態を示す図である。図23Bは歪みの強さを変更した後の状態を示す図である。
【0112】
このようにすることによって、魚眼パース定規が変更された場合であっても、ユーザは描画をはじめから描き直す必要がなくなるとともに、描画を参照する画像である参照画像自体も変形されるため、さらに詳細に描画を続ける際にも参照画像の細部の変更を容易に参照できるため、描画がより容易に続行できる。
【0113】
図24は魚眼パース定規の表示の変更に伴い、参照される画像が変更される様子を示す図である。図24Aは変更する前の状態を示す図である。図24Bは変更した後の状態を示す図である。
【0114】
図24Aにおける魚眼パース定規2420A及び魚眼パース定規2430Aのいずれかの形状が変更されそれぞれ図24Bの魚眼パース定規2420B、2430Bに変更されるか、図24Aの消失点2450Aの位置が図24Bの消失点2450Bの位置に変更されることに伴って、参照される参照画像も変形される。この変更に適合させて、描画された画像が変更されてもよい(不図示)。
このように、魚眼パース定規の湾曲の変更、消失点の位置の変更などの魚眼パース定規がユーザの指示に基づいて変形されるのに適合させて、描画された画像及び/又は参照される参照画像をもその変更に適合させて容易に変形させることができる。
【0115】
<実施形態2>
図25は魚眼レンズ表現の描画に用いられる魚眼パース定規の曲線を生成するフローチャートである。図25の各ステップについて、以下に説明する。
[ステップS2502]関数f(θ,k)を定める。
ここで、関数f(θ,k)は、
変換に用いられるθの範囲のうち0≦θ<π/2の範囲において、
0≦f(θ,k)≦R*tan(θ) (式9)
0≦∂f(θ,k)/∂θ≦R*sec(θ) (式10-1)
を満たし、
∂f(θ,k)/∂θ|θ=0=R (式10-2)
を満たし、
θの範囲がπ/2以上の領域を含む場合は、θの範囲のうちπ/2≦θ≦πの範囲において、
f(θ,k)>0 (式11)
∂f(θ,k)/∂θ≧0 (式12)
を満たす。
式9、式10-1及び式10-2の意味は、式4、式5-1及び式5-2について既に述べたとおりである。
【0116】
式11は、θがπ/2(90°)を超える場合には、式9においてtan(θ)がマイナスの値になるため、条件式からtan(θ)を省いている。
式12は、θがπ/2(90°)を超える場合にも、関数が単純増加関数であることを示す。
【0117】
以上の条件を具備する関数を用いて、例えばキャンバス上の直線を変換すると、魚眼レズで直線を撮像して得られる曲線に近似した曲線が得られる。この得られた曲線を魚眼パース定規に用いることで、透視投影法によれば直線で描かれる線を、魚眼レンズで撮影された画像に近似した曲線で描くことが可能となる。
【0118】
[ステップS2504]前記関数f(θ,k)によって前記キャンバス上の直線又は前記三次元空間に存在する図形を変換して、直線を前記関数f(θ,k)によって変換して得られる曲線と同一形状の曲線を取得し、前記取得された曲線を有する魚眼パース定規を表示する。
このステップS2504によって、魚眼レンズ表現を描くことができる曲線を有する魚眼パース定規をキャンバスに重ねて表示させることができる。
この魚眼パース定規を用いて、ユーザがキャンバスに描画することによって、魚眼レンズ表現のイラストを描くことが可能となる。
なお、例えば円の軌跡を変換して魚眼パース定規の曲線を生成すれば、ユーザは、この曲線を持つ魚眼パース定規を用いて、円を魚眼レンズで撮影した際に撮像される曲線をキャンバス上に容易に描くこともできる。
【0119】
図26図6及び図7において説明した関数を用いる処理を示すフローチャートである。
[ステップS2602]このステップは、図25のステップS2502のサブルーチンとして機能することを示している。
[ステップS2604]関数f(θ,k)として、
f(θ,k)=R*(k+1)*sin(θ)/(k+cos(θ))
ここで、0≦k≦∞である。
を適用する。
この関数については、図6及び図7を用いて説明した。
【0120】
図27図8及び図9において説明した関数を用いる処理を示すフローチャートである。
[ステップS2702]このステップは、図25のステップS2502のサブルーチンとして機能することを示している。
[ステップS2704]関数f(θ,k)として、
f(θ,k)=R*sin(θ)/cos(θ-θ*k/2)
ここで、0≦k≦2である。
を適用する。
この関数については、図8及び図9を用いて説明した。
【0121】
図28はキャンバスに魚眼パース定規を表示するフローチャートである。
以下に、各ステップについて説明する。
[ステップS2802]ユーザの指示に基づいて、キャンバス上の直線又は三次元空間における仮想的な直線を、魚眼レンズ表現に適合するキャンバス上の曲線に変換する規則を特定する。
この規則の具体例については、既に説明したので繰り返して説明することは避ける。
[ステップS2804]規則に基づく曲線であって、ユーザにより指定されたキャンバス上の所定の位置を通る曲線、で定まる魚眼パース定規を生成する。
[ステップS2806]キャンバスを含む平面上に、ユーザに認識させるように複数の魚眼パース定規の曲線が収束する点である消失点の位置を特定する。
[ステップS2808]キャンバスに魚眼パース定規を表示する。
以上の処理によって、キャンバスに魚眼パース定規を表示することができる。
【0122】
図29A及び図29Bは、上記ステップS2802及びステップS2804のサブルーチンの一例を示したフローチャートである。
[ステップS2902]このステップS2902に続くフローがステップS2802のサブルーチンであることを示している。
【0123】
[ステップS2904]ユーザの指示が歪みの強さの変更であるか否かがチェックされる。チェック結果が肯定的(Yes)である場合にはステップS2906に進む。チェック結果が否定的(No)である場合には戻る。
[ステップS2906]歪みの強さの変更に応答して、規則を変更する。
図29Bに示す以下の処理フローが上記の処理の後に実行される。
[ステップS2910]このステップS2910に続くフローがステップS2804のサブルーチンであることを示している。
[ステップS2912]規則を変更する以前に生成された魚眼パース定規を、変更された規則に基づく曲線であって、規則を変更する以前にユーザにより指定された所定の位置を通る曲線、で定まる魚眼パース定規に、変更する。
以上の処理によって、歪みの変更に伴って、魚眼パース定規の曲線が適切に変更される。
【0124】
図30は規則の特定に関するフローを示している。
[ステップS3002]このステップS3002に続くフローがステップS2802のサブルーチンであることを示している。
【0125】
[ステップS3004]ユーザから指定された魚眼レンズ表現の歪みの強さ、スケールファクタ、及び魚眼レンズ表現の仮想的なレンズ中心点の位置のうち少なくとも1つに基づいて規則を特定する。
ユーザから指定されないパラメータは、予め定めておくことができる。
【0126】
図31は規則の特定に関する他のフローを示している。
[ステップS3102]このステップS3102に続くフローがステップS2802のサブルーチンであることを示している。
[ステップS3104]キャンバス上にユーザの指示に基づいて二つの曲線を描画することで、二つの魚眼パース定規の曲線を特定する。
[ステップS3106]二つの曲線の交点を消失点とする。
[ステップS3108]
少なくとも、前記二つの曲線の少なくとも一方の曲線の湾曲の程度に基づいて、魚眼レンズ表現の歪みの強さを特定する。
【0127】
図32は魚眼パース定規を生成する処理フローの例を示すフローチャートである。
[ステップS3202]このステップS3202に続くフローがステップS2804のサブルーチンであることを示している。
【0128】
[ステップS3204]ユーザの指示が所定の魚眼パース定規の傾きの変更か否かがチェックされる。チェック結果が肯定的(Yes)である場合にはステップS3206に進む。チェック結果が否定的(No)である場合にはステップS3208に進む。
[ステップS3206]所定の魚眼パース定規の消失点の位置を変更し、戻る。
【0129】
[ステップS3208]ユーザの指示が、所定の位置の変更か否かがチェックされる。チェック結果が肯定的(Yes)である場合にはステップS3210に進む。チェック結果が否定的(No)である場合にはステップS3212に進む。
[ステップS3210]消失点の位置を変更せずに、変更された所定の位置を通る所定の魚眼パース定規の曲線を変更し、戻る。
[ステップS3212]所定の消失点の位置が固定され、その所定の消失点に収束する魚眼パース定規の所定の位置を変更させないか否かがチェックされる。チェック結果が肯定的(Yes)である場合にはステップS3214に進む。チェック結果が否定的(No)である場合には戻る。
[ステップS3214]魚眼パース定規を変更することができないようにさせ、戻る。
【0130】
図33は魚眼パース定規を生成する処理フローの他の例を示すフローチャートである。
[ステップS3302]このステップS3302に続くフローがステップS2804のサブルーチンであることを示している。
【0131】
[ステップS3304]歪みの強さがユーザにより変更されたか否かがチェックされる。チェック結果が肯定的(Yes)である場合にはステップS3306に進む。チェック結果が否定的(No)である場合にはステップS3308に進む。
【0132】
[ステップS3306]所定の位置を移動させずにパース定規の曲線を変更することとし、戻る。所定の位置を変更させないことにより、ユーザが着目している所定の位置における魚眼パース定規の位置が移動しないようにすることができる。
【0133】
[ステップS3308]ユーザの指示により消失点の位置が変更されたか否かがチェックされる。チェック結果が肯定的(Yes)である場合にはステップS3310に進む。チェック結果が否定的(No)である場合には戻る。
[ステップS3310]魚眼パース定規の曲線を変更し、戻る。
【0134】
図34は魚眼パース定規を表示する例を示すフローチャートである。
[ステップS3402]このステップS3402に続くフローがステップS2808のサブルーチンであることを示している。
[ステップS3404]既に表示されていた魚眼パース定規の表示が変更されたか否かがチェックされる。チェック結果が肯定的(Yes)である場合にはステップS3406に進む。チェック結果が否定的(No)である場合には戻る。
[ステップS3406]複数の魚眼パース定規の各々の変更に適合させて、複数の魚眼パース定規の各々に沿ってユーザの指示により描画された画像を変更する。
【0135】
図35は魚眼パース定規を表示する他の例を示すフローチャートである。
[ステップS3502]このステップS3502に続くフローがステップS2808のサブルーチンであることを示している。
[ステップS3504]既に表示されていた魚眼パース定規の表示が変更されたか否かがチェックされる。チェック結果が肯定的(Yes)である場合にはステップS3506に進む。チェック結果が否定的(No)である場合には戻る。
[ステップS3506]複数の魚眼パース定規の各々の変更に適合させて、キャンバス上に存在する、ユーザに下絵として利用された画像を変更する。
この処理により、ユーザが参照画像として用いていた画像が、魚眼パース定規の変更に適合するように変更される。
【0136】
図36は実施形態のハードウエア構成図である。
【0137】
実施形態のハードウエア構成は、CPU4001、本実施形態のプログラム及びデータが格納され得るROM4002、RAM4003、ネットワークインターフェース4005、入力インタフェース4006、表示インタフェース4007、外部メモリインタフェース4008を有する。これらのハードウエアは、バス4004によって相互に接続されている。
【0138】
ネットワークインターフェース4005は、ネットワーク4015に接続されている。ネットワーク4015には、有線LAN、無線LAN、インターネット、電話網などがある。入力インタフェース4006には、入力部4016が接続されている。表示インタフェース4007には、表示部4017が接続される。表示部4017は、複数の表示装置により実現されてもよい。外部メモリインタフェース4008には、記憶媒体4018が接続される。記憶媒体4018は、RAM、ROM、CD-ROM、DVD-ROM、ハードディスク、メモリーカード、USBメモリ等であってもよい。
<変形例1>
点Wがキャンバス上に存在する場合は、点Oと点Wとの距離をrとして変数を変換することにより、角度θを使わずに距離rを使って、等価な表現が可能である。関数g(r,k)を使って、点Wの座標を、点Oから距離g(r,k)だけ離れた前記キャンバス上の点Bの座標に変換する。距離rと角度θとの関係は次式で表される。

r=tan(θ) (式13)

点Wはキャンバス上に存在するので、θの範囲は0≦θ<π/2である。関数f(θ,k)と等価な関数g(r,k)は、下記の変換によって得られる。

g(r,k)=f(tan-1(r),k) (式14)

条件式 0≦f(θ,k)≦R*tan(θ)は、条件式 0≦g(r,k)≦R*rに置き換えられる。条件式 0≦∂f(θ,k)/∂θ≦R*sec2(θ)は、条件式 0≦∂g(r,k)/∂r≦Rに置き換えられる。条件式∂f(θ,k)/∂θ|θ=0=Rは、∂g(r,k)/∂r|r=0=Rに置き換えられる。
よって、式4、式5-1及び式5-2の条件式は、以下の式と等価である。

0≦g(r,k)≦R*r (式15)
0≦∂g(r,k)/∂r≦R (式16-1)
∂g(r,k)/∂r|r=0=R (式16-2)

また、∂f(θ,k)/∂θ/(R*sec2(θ))がθに対して単調減少になるという条件は、∂g(r,k)/∂rがrに対して単調減少になるという条件に置き換えられる。

図6に示した実施形態の変形例として説明する。式14を用いて式2を変換することにより、式2と等価な下記の式が得られる。

g(r,k)=R*(k+1)*sin(tan-1(r))/(k+cos(tan-1(r))) (式17)

図8に示した実施形態の変形例として説明する。式14を用いて式8を変換することにより、式8と等価な下記の式が得られる。

g(r,k)=R*m=sin(tan-1(r))/cos(tan-1(r)-tan-1(r)*k/2) (式18)

図37は、θを用いないで、キャンバス3710上に存在する点Wの位置から点Bの位置を得ることを示した図である。
式17または式18に示した関数g(r,k)を使って、点Wの座標を、点Oから距離g(r,k)だけ離れた前記キャンバス3710上の点Bの座標に変換する。すなわち、距離rと角度θとの関係はg(r,k)=f(tan-1(r),k)で表される。
<変形例2>
図38は互いに直交する複数の魚眼パース定規を容易に設定するユーザインタフェースを示す図である。
キャンバス上で共通の消失点を通る複数の魚眼パース定規(例えば魚眼パース定規3912と魚眼パース定規3914、魚眼パース定規3922と魚眼パース定規3924)は、それぞれ三次元空間上では互いに平行な直線群に相当する。キャンバス平面上の一方の魚眼パース定規群に相当する三次元空間上の直線群と、他方の魚眼パース定規群に相当する三次元空間上の直線群とが、三次元空間上で互いに直交するような制限を付加できるようにしてもよい。
図38に具体例を示す。例えば長方形の形状を持つ机の上面などのように、三次元空間で地面に平行な長方形が、描画の対象である場合を想定する。図38において、太い線で囲まれた歪んだ矩形3930が、例えば机の上面であるとする。消失点3910を通る複数の魚眼パース定規3912、3914の曲線群と、消失点3920を通る複数の魚眼パース定規3922、3924の曲線群とは、三次元空間上では互いに直交するはずである。
そこで、例えばアイレベル3902の線上にユーザが消失点3910の位置を決めると、三次元空間上での上記の直交条件を満たすように、自動的に消失点3920の位置が決まるようにすることができる。
さらに、例えば、ユーザが消失点3910の位置をアイレベルの線上で移動させると、これに連動して消失点3920の位置が自動的にアイレベルの線上を移動して、三次元空間上での上記直交条件を満たすようにしても良い。
以上のようにすることによって、互いに直交する魚眼パース定規を容易に設定できると共に、一方の魚眼パース定規の位置又は消失点をユーザが変更すると、これに応じて他方の魚眼パース定規が互いに直交することを維持して、設定されるようにすることが容易にできる。
このような設定を行うには、例えば、互いに直交する魚眼パース定規群を持つ2つの消失点のペアをユーザが指定できるようにさせることで実現できる。
【0139】
例示したフローチャートの各フローは、矛盾のない限り順番を入れ替えることができる。また、矛盾のない限り、例示された1つのフローを、異なるタイミングで、複数回実行することができる。また、矛盾のない限り、複数のフローを同時に実行したりすることができる。また、全てのステップが必須のものではなく、矛盾の無い限り、一部のステップが存在しないか、実行されなくてもよい。
上記の点は、請求項に規定された方法の構成要件についても同様に当てはまるものである。すなわち、矛盾のない限り構成要件の順番を入れ替えることができる。また、矛盾のない限り、複数の構成要件が同時に実施されることができる。そして、これらの構成要件の実施も、請求項に規定された技術的範囲に属する。
また、各ステップは、オペレーティングシステム又はハードウエアで実行されてもよい。また、プログラムは、非一時的な媒体に記憶された状態で配布することができる。
【0140】
上述の実施形態を実現するプログラム及び方法は、図36に示されるハードウエア構成を備えるコンピュータにより実行され得る。すなわち、実施形態のプログラムは、コンピュータに実行させる方法として、インプリメントされてもよい。
プログラムは記憶媒体4018、ROM4002、又はRAM4003に記憶されてもよい。
各実施形態は、プログラムをインストールしたハードウエアの装置としてインプリメントされ得る。
本明細書に記載された「魚眼パース定規」は、特許請求の範囲及び図面における「パース定規」と同義である。
スケールファクタRは、魚眼パース定規の全体の拡縮を表すパラメータの一例である。
【符号の説明】
【0141】
4004 バス
4005 ネットワークインターフェース
4006 入力インタフェース
4007 表示インタフェース
4008 外部メモリインタフェース
4015 ネットワーク
4016 入力部
4017 表示部
4018 記憶媒体
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36
図37
図38