JPWO2003001458A1 - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JPWO2003001458A1 JPWO2003001458A1 JP2003507765A JP2003507765A JPWO2003001458A1 JP WO2003001458 A1 JPWO2003001458 A1 JP WO2003001458A1 JP 2003507765 A JP2003507765 A JP 2003507765A JP 2003507765 A JP2003507765 A JP 2003507765A JP WO2003001458 A1 JPWO2003001458 A1 JP WO2003001458A1
- Authority
- JP
- Japan
- Prior art keywords
- coordinates
- matrix
- coordinate
- calculating
- information processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 230000010365 information processing Effects 0.000 title claims description 44
- 238000000034 method Methods 0.000 claims abstract description 29
- 238000009877 rendering Methods 0.000 claims abstract description 10
- 239000011159 matrix material Substances 0.000 claims description 70
- 230000009466 transformation Effects 0.000 claims description 47
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 claims description 32
- 238000004364 calculation method Methods 0.000 claims description 19
- 238000003672 processing method Methods 0.000 claims description 4
- 230000002194 synthesizing effect Effects 0.000 claims description 2
- 238000006243 chemical reaction Methods 0.000 description 37
- 230000015572 biosynthetic process Effects 0.000 description 4
- 238000003786 synthesis reaction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000000844 transformation Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/02—Affine transformations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
- Image Analysis (AREA)
- Processing Or Creating Images (AREA)
Abstract
3次元画像の描画のラスタライズ処理を行う際、2次元平面上の点P1(x1,y1)と点P2(x2,y2)とをとおる直線のy座標に対するx座標の変化れる定数μを、y座標の変化量に関連付けてメモリに格納しておく。Δxを演算する際、前記y座標の変化量に対応するμを前記メモリより読み出して乗算により、Δx’=μ*(x2−x1);を算出し、この結果をΔxとする。
Description
技術分野
本発明は3次元画像の描画の技術に関し、特に3次元画像の描画の処理時に行われるジオメトリ演算や除算の処理を軽減し、FPU(浮動小数点演算ユニット)を持たない情報処理装置や、CPUの処理能力が低い情報処理装置であっても3次元グラフィクの描画を可能とする技術に関する。
背景技術
3次元グラフィクを描画する場合、情報処理端末は、
(1)3次元の物体をずらしたりする座標変換演算(Transformation)、
(2)物体に光源(例えば太陽など)から光が当たっていると考えて、日向になっている部分と日陰になっている部分とを計算する光源計算処理(Lighting)
(3)物体をドットと呼ばれるカラムに分割する処理(ラスタライズ)
(4)そのカラムにテクスチャー(模様)を張り込んでいく(テクスチャーマッピング)
等の処理を行う。
通常、情報処理装置本体のCPUは、(1)と(2)とのいわゆるジオメトリ演算という作業を担当し、CPUのFPU(浮動小数点演算ユニット)を利用して処理している。
更に、(3)と(4)とのいわゆるラスタライズの処理は、通常、3Dグラフィックスアクセラレータが行っている。
しかしながら、(1)と(2)とのいわゆるジオメトリ演算という作業はCPUのFPU(浮動小数点演算ユニット)を利用して行なわれていが、FPUはジオメトリ演算だけでなく、浮動小数点一般を計算するために設計されているほか、CPUは他の処理も行ったりしており、必ずしも3次元のグラフィクを描画する処理に適したものではない。
そこで、そのジオメトリ演算をグラフィックスチップで行えるように設計した(つまりジオメトリエンジンを内蔵)3Dグラフィックスアクセラレータも登場しており、CPUの負荷率を下げる工夫がされているほか、何よりもジオメトリ演算の性能をCPUで行う場合に比べて大幅に向上させることが可能、つまり3Dの描画性能を向上させることを可能としている。
しかしながら、3Dグラフィックスアクセラレータは高価なのものであり、全ての情報処理装置が備えている訳ではない。
更に、情報処理装置の中には、例えば携帯電話や、PDA(Personal Digital(Data)Assistants)のように3Dグラフィックスアクセラレータどころか、FPU(浮動小数点演算ユニット)も備えていないものもある。
このような情報処理装置では、一般にCPUの能力も低く、3Dグラフィックスは無理とされていた。
更に、除算処理は乗算処理に比べてたいへん低速であり、高速に演算処理を行う為には、除算をなるべく減らすことが好ましい。
そこで、本発明は、3次元グラフィクの描画の処理時に行われるジオメトリ演算において、整数演算処理を行うことによって、FPU(浮動小数点演算ユニット)を持たない情報処理装置であっても3次元グラフィクの描画を可能とする技術を提供することを目的としている。
また、本発明は、ラスタライズ処理の際、除算を行わずラスタライズ処理を行うことによって、処理能力が低いCPUを持つ情報処理装置であっても、3次元グラフィクの描画を高速に可能とする技術を提供することを目的としている。
発明の開示
上記目的を達成する第1の発明は、3次元画像の描画のラスタライズ処理を行う際、2次元平面上の点P1(x1,y1)と点P2(x2,y2)とをとおる
処理装置において、
れて格納されたメモリと、
Δxを演算する際、前記y座標の変化量に対応するμを前記メモリより読み出して乗算により、
を算出し、この結果をΔxとして演算する演算手段と
を有することを特徴とする。
上記目的を達成する第2の発明は、上記第1の発明において、前記λを2n(n>1)に限定し、前記算出されたΔx’を、n桁右シフトすることにより、Δxを演算する手段を更に有することを特徴とする。
上記目的を達成する第3の発明は、上記第1、2の発明において、座標値が整数に限定され、座標(x,y,z)tを、
で表現されるアフィン変換により、座標(x’,y’,z’)tに変換処理を行う場合、
アフィン変換の行列
にλ(≠0)をかけた行列
と、行列(t1,t2,t3)tと、形状データとが格納されたメモリと、
前記形状データの座標(x,y,z)tを、行列A及び行列(t1,t2,t3)tとのアフィン変換により、座標(x’y’,z’)tに変換する際、前記メモリより、行列A’と、行列(t1,t2,t3)tとを読み出し、
を演算して、座標(x’,y’,z’)tを演算する演算手段と
を更に有することを特徴とする。
上記目的を達成する第4の発明は、上記第3の発明において、前記λを2n(n>1)に限定し、
前記演算手段は、
の除算演算を、n桁右シフトすることにより演算する手段であることを特徴とする。
上記目的を達成する第5の発明は、上記第4の発明において、前記演算手段は、各被除数に定数λ/2を加えた後、n桁右シフトすることにより演算する手段であることを特徴とする。
上記目的を達成する第6の発明は、上記第3、4,5の発明において、予めλ(≠0)をかけた二つ以上のパラメータを合成する合成手段を有することを特徴とする。
上記目的を達成する第7の発明は、3次元画像の描画のラスタライズ処理を行う際、2次元平面上の点P1(x1,y1)と点P2(x2,y2)とをとおる
を算出する3次元画像の描画処理方法であって、
変化量に関連付けられて格納されたメモリから、算出するΔxのy座標の変化量に対応するμを読み出すステップと、
前記読み出したμに基づいて、乗算により、
を算出し、この結果をΔxとして演算するステップと
を有することを特徴とする。
上記目的を達成する第8の発明は、上記第7の発明において、前記λを2n(n>1)に限定し、前記算出されたΔx’を、n桁右シフトすることにより、Δxを演算するステップを更に有することを特徴とする。
上記目的を達成する第9の発明は、上記第7、8の発明において、座標値が整数に限定され、座標(x,y,z)tを、
で表現されるアフィン変換により、座標(x’,y’,z’)tに変換処理を行う際、
形状データの座標(x,y,z)tを、行列A及び行列(t1,t2,t3)tとのアフィン変換により、座標(x’,y’,z’)tに変換する際、メモリに記憶されている、行列Aにλ(≠0)をかけたパラメータA’
と、行列(t1,t2,t3)tとを読み出すステップと、
前記読み出した行列A’と、行列(t1,t2,t3)tとに基づいて、
を演算して、座標(x’,y’,z’)tを演算するステップと
を更に有することを特徴とする。
上記目的を達成する第10の発明は、上記第9の発明において、前記λを2n(n>1)に限定し、
前記演算するステップは、
の除算演算を、n桁右シフトすることにより、座標(x’,y’,z’)tを演算するステップであることを特徴とする。
上記目的を達成する第11の発明は、上記第10の発明において、前記n桁右シフトする前に、各被除数に定数λ/2を加算するステップを更に有することを特徴とする。
上記目的を達成する第12の発明は、上記第9、10、11の発明において、予めλ(≠0)をかけた二つ以上のパラメータを合成するステップを更に有することを特徴とする。
上記目的を達成する第13の発明は、3次元画像の描画のラスタライズ処理を行う際、2次元平面上の点P1(x1,y1)と点P2(x2,y2)とをとお
算処理を情報処理装置に行わせるプログラムであって、
前記プログラムは情報処理装置に、
変化量に関連付けられて格納されたメモリから、算出するΔxのy座標の変化量に対応するμを読み出させるステップと、
前記読み出したμに基づいて、乗算により、
を算出し、この結果をΔxとして演算させるステップと
を有することを特徴とするプログラムである。
上記目的を達成する第14の発明は、上記第13の発明において、情報処理装置に、前記λを2n(n>1)に限定し、前記算出されたΔx’を、n桁右シフトすることにより、Δxを演算させるステップを更に有することを特徴とするプログラムである。
上記目的を達成する第15の発明は、上記第13、14の発明において、情報処理装置に、座標値が整数に限定され、座標(x,y,z)tを、
で表現されるアフィン変換により、座標(x’,y’,z’)tに変換処理を行わせる際、
形状データの座標(x,y,z)tを、行列A及び行列(t1,t2,t3)tとのアフィン変換により、座標(x’,y’,z’)tに変換する際、メモリに記憶されている、行列Aにλ(≠0)をかけたパラメータA’
と、行列(t1,t2,t3)tとを読み出させるステップと、
前記読み出した行列A’と、行列(t1,t2,t3)tとに基づいて、
を演算して、座標(x’,y’z’)tを演算させるステップと
を更に有することを特徴とするプログラムである。
上記目的を達成する第16の発明は、上記第15の発明において、前記λを2n(n>1)に限定し、
前記演算するステップは、
の除算演算を、n桁右シフトすることにより、座標(x’,y’,z’)tを演算させるステップであることを特徴とするプログラムである。
上記目的を達成する第17の発明は、上記第16の発明において、情報処理装置に、前記n桁右シフトする前に、各被除数に定数λ/2を加算させるステップを更に有することを特徴とするプログラムである。
上記目的を達成する第18の発明は、上記第15、16、17の発明において、情報処理装置に、予めλ(≠0)をかけた二つ以上のパラメータを合成させるステップを更に有することを特徴とするプログラムである。
上記目的を達成する第19の発明は、3次元画像の描画のラスタライズ処理を行う際、2次元平面上の点P1(x1,y1)と点P2(x2,y2)とをとおる直線のy座標に対するx座標の変化量
を算出する演算処理を情報処理装置に行わせるプログラムが格納された記録媒体であって、
前記プログラムは情報処理装置に、
変化量に関連付けられて格納されたメモリから、算出するΔxのy座標の変化量に対応するμを読み出させるステップと、
前記読み出したμに基づいて、乗算により、
を算出し、この結果をΔxとして演算させるステップと
を有することを特徴とする記録媒体である。
上記目的を達成する第20の発明は、上記第19の発明において、前記プログラムが、情報処理装置に、前記λを2n(n>1)に限定し、前記算出されたΔx’を、n桁右シフトすることにより、Δxを演算させるステップを更に有することを特徴とする記録媒体である。
上記目的を達成する第21の発明は、上記第19、20の発明において、前記プログラムは、
情報処理装置に、座標値が整数に限定され、座標(x,y,z)tを、
で表現されるアフィン変換により、座標(x’,y’,z’)tに変換処理を行わせる際、
形状データの座標(x,y,z)tを、行列A及び行列(t1,t2,t3)tとのアフィン変換により、座標(x’,y’,z’)tに変換する際、メモリに記憶されている、行列Aにλ(≠0)をかけたパラメータA’
と、行列(t1,t2,t3)tとを読み出させるステップと、
前記読み出した行列A’と、行列(t1,t2,t3)tとに基づいて、
を演算して、座標(x’,y’,z’)tを演算させるステップと
を更に有することを特徴とする記録媒体である。
上記目的を達成する第22の発明は、上記第21の発明において、前記λを2n(n>1)に限定し、
前記演算するステップは、
の除算演算を、n桁右シフトすることにより、座標(x’,y’,z’)tを演算させるステップであることを特徴とする記録媒体である。
上記目的を達成する第23の発明は、上記第22の発明において、前記プログラムは、情報処理装置に、前記n桁右シフトする前に、各被除数に定数λ/2を加算させるステップを更に有することを特徴とする記録媒体である。
上記目的を達成する第24の発明は、上記第21、22、23の発明において、前記プログラムは、情報処理装置に、予めλ(≠0)をかけた二つ以上のパラメータを合成させるステップを更に有することを特徴とする記録媒体である。
発明を実施するための最良の形態
本発明の実施するための最良の形態を説明する。
まず、本発明の特徴である情報処理装置を用いた整数によるジオメトリ演算と、除算を使用しない三角形ラスタライズとについて説明する。
<整数によるジオメトリ演算>
1.アフィン変換による座標変換
座標(x,y,z)tから座標(x’,y’,z’)tへのアフィン変換を、
の形で表すとき、C言語的な数値演算で、x’,y’,z’を求める場合、
のようになる。但し、全ての数値型が無限の範囲と精度とをもっているものとする。
有限範囲の整数で座標計算する場合、計算精度と演算のオーバーフローとが問題となる。
オーバーフローに関しては、扱う座標の範囲を制限すれば、問題とならないが、計算精度は絶対値の小さい実数を整数に丸めるときに(小数を含む数値などで、必要とする右端の位(または桁)より一つ下の位(または桁)の値を四捨五入等して、数値を短縮すること。四捨五入以外にも切り上げや切り捨てなどの場合もありうる。)、相対誤差が大きくなる。特に、行列Aの成分は絶対値が1以下の場合が非常に多く、その数値を整数に丸めた場合は期待する結果から大きくずれてしまう。
そこで、行列Aの成分を整数に丸めるとき、相対誤差をなるべく少なくするために、予めλ(≠0)を行列Aの成分に掛けておく。
この行列A’で座標変換するときに
のように計算する。
C言語的な数値演算で、x’,y’,z’を求める場合、
のようになる。但し、すべての数値型は整数である。
このような計算でも、整数計算となり、浮動小数点演算を行う必要はないが、高速化のために実行時の整数除算を避けるためλを2n(n>1)に限定し、λ’=log2λとして、
のように算術右シフトで除算とほぼ同じ演算を行う。
また、算術右シフトを整数除算として利用する場合、丸めは−∞方向になるので、
のように算術右シフトを行う前に定数λ/2を加えて誤差を修正する。
具体的な例で説明すると、例えば、座標(111,222,333)tの点をアフィン変換する場合を考える。
上記の式2の行列A次びt(t1,t2,t3)tを、
とすると、
実数で計算した場合の式2の結果は、
となる。
ここで、上述した如く、本発明のアフィン変換を用いると、λ=4096(212)とした場合、行列A’は、
となる。
この行列A’と、行列t(t1,t2,t3)tとを使ったアフィン変換を、C言語の式で表すと、
となる。
この計算結果は、(991,579,1316)tとなり、上記の実数の演算結果とほぼ同じ結果となる。
情報処理装置の実際処理では、行列Aにλを乗算した行列A’と、行列t(t1,t2,t3)tとが、情報処理装置のメモリにパラメータとして格納されており、アフィン変換による座標変換をする際に、該当する行列Aに対応する行列A’と、行列t(t1,t2,t3)tとをメモリから読み出し、読み出した行列A’基づいて、各要素毎に演算が行われる。そして、その結果に定数λ/2を加えたものを、定数λ’回右シフトを行い、その結果に行列t(t1,t2,t3)tを加えて、座標を算出する。
2.アフィン変換の合成
2つのアフィン変換f,g(変換パラメータ)をそれぞれ、
である。A’=λA、B’=λBのとき、
である。
とすると、式8は、
となる。
この式11の右辺と式4の右辺は同じ形である。
として、C言語的な数値演算でMとtとの成分を求める場合、
となる。λを2n(n>1)に限定し、λ’=log2λとして全ての整数型を整数で計算するようにすると、
となる。
この方法により、事前にλを掛けたアフィン変換同士の合成ができる。
具体的な例で説明すると、例えば、
とし、λ=4096とすると、
となる。
λAとλBとの要素を最近整数値に丸めた行列は、
である。
従って、上述した数式により、行列Mと行列tとを求めると、
となる。
このように、上記の如く計算した
と、ほぼ同様な値を得ることができる。
<除算を使用しない三角形ラスタライズ>
直線上のx座標の変化量を求める場合、2次元平面上の点P1の座標を(x1,y1)、点P2の座標を(x2,y2)とする。y1≠y2のとき、P1とP2とをとおる直線のy座標に対するx座標の変化量は、
である。
Δx’=λΔxとし、Δx’をC言語的な数値演算で求める場合、
のようになる。
としたときは
のように乗算の形式になる。
整数のみで計算する場合、|λ|が十分に大きく|y2−y1|がある程度小さければ、丸めによる相対誤差が小さくなる。
そこで、λを定数にして、y座標の範囲を制限すれば、μは予め用意された少ない配列から得ることができる。すなわち、μを|y2−y1|に対応させて、情報処理装置のメモリに予め格納しておく。そして、|y2−y1|をインデックスとして、μを読み出して、
を計算すれば、乗算だけでほぼΔxと同じ値のΔx’を求めることができる。
また、λを2n(n>1)に制限すれば、算術右シフトによって、Δxを算出することができる。
よって、除算を一切使わずにx座標の変化量が求まる。
また、テクスチャー座標も同じ理由により、除算は必要ない。
具体的な例として、λ=65536として、座標(10,20)の始点P1と座標(85,120)の始点P2との線分の例を説明する。
この線分のy座標に対するx座標の変化量は、
となり、Δx’=λx=49152.0となる。
Δx’を整数のみで除算を使用しないで計算する場合、上述したように120−20=100をインデックスとして、対応するμをメモリから読み出してくる。
この場合、
とすると、
となり、除算を使用したΔx’=λx=49152.0とほぼ同じ値を得ることができる。
次に、上述の方法を携帯端末等に用いた場合について説明する。
図1は携帯端末のブロック図である。
図1中、1は3次元グラフィクを表示するディスプレイであり、2はFPU(浮動小数点演算ユニット)を持たないCPU等で構成された演算手段である制御部、3はプログラムやデータが格納されたメモリ部である。
尚、メモリ部3には、変換パラメータ(上述した行列A’と、行列t(t1,t2,t3)t)が格納された変換パラメータテーブル4と、上述した|y2−y1|をインデックスとしてμが格納された逆数テーブル5とが格納されている。
以下の本説明の3次元グラフィクの描画では、物体をすべて多角形の平面の組み合わせで表現する。そして、その多角形のことをポリゴンと呼ぶ。3次元空間にある物体(ポリゴン)は、X,Y,Zの3つの座標値を持っており、この座標を動かすことで、物体の位置や向きを変更することができる。さらに、3次元座標で表現されるものを、最終的に2次元のスクリーンに表示させる為、スクリーン座標系への変換が行われる。
このような、一連の座標変換、透視変換、光源計算などの処理(演算)は、ジオメトリ演算と呼ばれる。そして、計算によって変換されたポリゴンは、最終的にフレームバッファに書き込まれ、描画が行われる。
通常、ジオメトリ演算という処理はCPUのFPU(浮動小数点演算ユニット)を利用して行なわれていが、FPUはジオメトリ演算だけでなく、浮動小数点一般を計算するために設計されている。更に、携帯電話に代表される携帯端末の機器では、高価になるという理由で、FPU(浮動小数点演算ユニット)を持たないものも多い。
そこで、携帯端末のようなFPU(浮動小数点演算ユニット)を持たないCPUの情報処理装置でも、ジオメトリ演算を可能とする為、本発明では制御部3が整数によるジオメトリ演算を行う。
また、物体をドットに分割するラスタライズについても、3Dグラフィックスアクセラレータのない携帯端末では、処理負荷が増大する。
そこで、本発明では、処理負荷を軽減する為に、制御部3が除算を使用しないで三角形をラスタライズする。
次に、制御部3が行う、上述した演算を用いた3次元グラフィクの描画動作を説明する。
図2は3次元グラフィクの基本的な描画動作を示すフローチャートである。
まず、描画先の仮想フレームバッファの情報を設定する(step 100)。
次に、モデルオブジェクトに、メモリ部3から幾何学的座標データである形状データを読み込む(step 101)。
ここで読み込まれる形状データは、頂点座標列、ポリゴン列及びセグメント列の情報が含まれる。また、セグメントのデータには、基本姿勢用の変換パラメータ、所属頂点群及び親セグメントのID(識別情報)を含む。
尚、読み出される変換パラメータは、基本の行列Aにλ(2n(n>1))を乗算した行列A’と行列t(t1,t2,t3)tとであり、行列A’と行列t(t1,t2,t3)tとは、変換パラメータテーブル4から読み出される。
続いて、形状データに対応するテクスチャーデータ、例えば質感等のデータを読み込む(Step 102)。
そして、モデル座標系から視点座標系への変換パラメータを設定し(Step 103)、視点座標系からスクリーン座標系への変換パラメータを設定する(Step 104)。
仮想フレームバッファに2次元の背景を描画する(Step 105)。
仮想フレームバッファにモデルオブジェクトを描画する(Step 106)。
最後に、仮想フレームバッファの内容を実際の画面に表示する(Step 107)。
そして、Step 103からStep 107を繰り返すことによって3次元グラフィクが描画されることになる。
続いて、本発明の特徴である演算が用いられるモデルオブジェクトを制御部3が描画するStep 106について、更に詳細に説明する。
図3はモデルオブジェクトを描画のステップであるStep 106の動作を更に詳細に示すフローチャートである。
まず、モデルの頂点座標をローカル座標系からスクリーン座標系に変換する(Step 200)。
ここで、モデルの構造について説明する。通常、モデルは内部に複数のセグメントを持ち,各セグメントは複数の頂点を持っている。それらの頂点はセグメント座標系での座標値を持っている。セグメントは複数の子セグメントを持つことができ,セグメントに含まれる頂点の座標を親セグメント座標系に変換するための変換パラメータを持つ。最上位のセグメントが持つ変換パラメータは,そのセグメントが含む頂点の座標をモデル座標系に変換するための値になる。また、基本姿勢用の変換パラメータの情報も有する。
そこで、セグメント座標系での座標値を持つモデルの頂点座標をローカル座標系からスクリーン座標系に変換するため、まず、セグメント座標系からモデル座標系への変換を行う。
セグメント座標系からモデル座標系への変換パラメータの算出は,上述した整数によるジオメトリ演算によるアフィン変換の合成により行われる。
親セグメントを持つセグメントの場合は,セグメントが持つ変換パラメータfと、親セグメントのセグメント座標系からモデル座標系への変換パラメータgとを合成して,セグメント座標系からモデル座標
この合成に際し、上述したアフィン変換の合成の手法が用いられる。
尚、親セグメントを持たないセグメントの場合は、セグメントが持つ変換パラメータfとすると、セグメント座標系からモデル座標系への変換パラメータは、h=fになる。
続いて、モデル座標系からスクリーン座標系への変換について、説明する。
モデル座標系からスクリーン座標系への変換パラメータも同じ方法で計算する。
モデル座標系から視点座標系への変換パラメータをpとし,視点座標系からスクリーン座標系への変換パラメータをqとすると,モデル
最後に、上述の如く算出された、セグメント座標系からモデル座標系への変換パラメータhと、モデル座標系からスクリーン座標系への変換パラメータrとに基づいて、セグメント座標系からスクリーン座標系への変換パラメータsを算出する。
セグメント座標系からスクリーン座標系への変換パラメータsは、
必要があるが、rはl体のモデルの計算では1度しか計算する必要がない。
このように算出された変換パラメータsを使ってセグメント座標系の頂点座標をスクリーン座標系の座標に変換する。
座標変換の演算は、上述した整数によるジオメトリ演算のアフィン変換により座標変換により行う。
すなわち、セグメント座標系の頂点座標(x,y,z)tを、変換パラメータsを使ってスクリーン座標系の座標(x’,y’,z’)tに変換する。
続いて、スクリーン空間で裏面のポリゴンを処理対象から外す(Step 201)。
処理対象のポリゴンを視点座標系のZ値(奥行き)でソートする(Step 202)。
最後に、スクリーン座標で仮想フレームバッファにポリゴンを描画する(Step 203)。
本ステップを更に詳細に説明すると、まず、ここでは描画領域に三角形が表示される可能性をチェックする。三角形が完全に描画領域の外にある場合は以降の描画処理をスキップする。
そして、三角形を走査するための数値を事前に計算する。この計算は、主に三角形の稜線座標やテクスチャー座標などの変化量を計算する。この変化量は、上述した除算を使用しない三角形ラスタライズの演算により行われる。
三角形の走査は,加算やビットシフトなどの単純操作を繰り返し、仮想フレームバッファにピクセル値を書き込む。
具体的な演算の方法としては、直線上のx座標の変化量を求める場合、2次元平面上の点P1の座標を(x1,y1)、点P2の座標を(x2,y2)とする。y1≠y2のとき、P1とP2とをとおる直線のy座標に対するx座標の変化量は、上述した通り、
である。
Δx’=λΔxとし、Δx’をC言語的な数値演算で求める場合、
のようになる。
としたときは
のように乗算の形式になる。
整数のみで計算する場合、|λ|が十分に大きく|y2−y1|がある程度小さければ、丸めによる相対誤差が小さくなる。
そこで、λを定数にして、y座標の範囲を制限すれば、μは少ない配列から得ることができる。
そこで、|y2−y1|をインデックスとしたμの値を、メモリ部3の逆数テーブル5に予め格納しておく。そして、|y2−y1|に対応するμを逆数テーブル5から読み出し、このμと(x2−x1)とを除算することにより、Δx’を算出する。
そして、処理の高速化のため、Δx’で必要な演算を行っていき、仮想フレームバッファにピクセル値を書き込む際にλで除算する。
また、除算の段階で、λを2n(n>1)としてあれば、算術右シフトによって、Δxを算出することができ、除算を使わずにx座標の変化量が求まることが可能となる。
尚、テクスチャー座標も同様な処理が可能である。
次に、本発明の実際の具体例として、制御部3で実行されるC言語で記載されたプログラムを説明する。
まず、整数によるジオメトリ演算のプログラムを以下に記す。
以下は、メモリに記憶されている、変換パラメータ、すなわち行列A’と行列(t1,t2,t3)tの例である。
ここで、public int m00からpublic int m23は、コメントにあるようにアフィン変換の行列A’と、行列(t1,t2,t3)tの各要素に相当する。また、λ=4096である。
次に、座標変換について以下に示す。
ここで、@param srcは上記の式2で示される座標(x,y,z)tに相当し、@param dstは上記の式2で示される座標(x’,y’,z’)tに相当する。
次に、アフィン変換の合成について以下に示す。
次に、ポリゴン描画について示す。
尚、上記テーブルは、上述したμの値の逆数テーブル5に相当するものであるが、メモリの記憶容量節約の観点から、μ−1としてある。そして、|y2−y1|の大きさの順に並んでいる。
以上が、本発明を実施する為のプログラムの一例である。
産業上の利用可能性
本発明は、3次元画像の描画の演算処理の際、整数の範囲で演算処理が行えるので、携帯電話や、PDA(Personal Digital(Data)Assistants)のようにFPU(浮動小数点演算ユニット)も備えていないものであっても、3次元画像が扱える。
また、演算処理の際、処理負荷の高い除算を行わないようにしているので、CPUの能力が低い情報処理装置であっても、スムーズな描画処理が行える。
【図面の簡単な説明】
図1は携帯端末のブロック図であり、図2は3次元グラフィクの基本的な描画動作を示すフローチャートであり、図3はモデルオブジェクトを描画のステップであるStep 106の動作を更に詳細に示すフローチャートである。
本発明は3次元画像の描画の技術に関し、特に3次元画像の描画の処理時に行われるジオメトリ演算や除算の処理を軽減し、FPU(浮動小数点演算ユニット)を持たない情報処理装置や、CPUの処理能力が低い情報処理装置であっても3次元グラフィクの描画を可能とする技術に関する。
背景技術
3次元グラフィクを描画する場合、情報処理端末は、
(1)3次元の物体をずらしたりする座標変換演算(Transformation)、
(2)物体に光源(例えば太陽など)から光が当たっていると考えて、日向になっている部分と日陰になっている部分とを計算する光源計算処理(Lighting)
(3)物体をドットと呼ばれるカラムに分割する処理(ラスタライズ)
(4)そのカラムにテクスチャー(模様)を張り込んでいく(テクスチャーマッピング)
等の処理を行う。
通常、情報処理装置本体のCPUは、(1)と(2)とのいわゆるジオメトリ演算という作業を担当し、CPUのFPU(浮動小数点演算ユニット)を利用して処理している。
更に、(3)と(4)とのいわゆるラスタライズの処理は、通常、3Dグラフィックスアクセラレータが行っている。
しかしながら、(1)と(2)とのいわゆるジオメトリ演算という作業はCPUのFPU(浮動小数点演算ユニット)を利用して行なわれていが、FPUはジオメトリ演算だけでなく、浮動小数点一般を計算するために設計されているほか、CPUは他の処理も行ったりしており、必ずしも3次元のグラフィクを描画する処理に適したものではない。
そこで、そのジオメトリ演算をグラフィックスチップで行えるように設計した(つまりジオメトリエンジンを内蔵)3Dグラフィックスアクセラレータも登場しており、CPUの負荷率を下げる工夫がされているほか、何よりもジオメトリ演算の性能をCPUで行う場合に比べて大幅に向上させることが可能、つまり3Dの描画性能を向上させることを可能としている。
しかしながら、3Dグラフィックスアクセラレータは高価なのものであり、全ての情報処理装置が備えている訳ではない。
更に、情報処理装置の中には、例えば携帯電話や、PDA(Personal Digital(Data)Assistants)のように3Dグラフィックスアクセラレータどころか、FPU(浮動小数点演算ユニット)も備えていないものもある。
このような情報処理装置では、一般にCPUの能力も低く、3Dグラフィックスは無理とされていた。
更に、除算処理は乗算処理に比べてたいへん低速であり、高速に演算処理を行う為には、除算をなるべく減らすことが好ましい。
そこで、本発明は、3次元グラフィクの描画の処理時に行われるジオメトリ演算において、整数演算処理を行うことによって、FPU(浮動小数点演算ユニット)を持たない情報処理装置であっても3次元グラフィクの描画を可能とする技術を提供することを目的としている。
また、本発明は、ラスタライズ処理の際、除算を行わずラスタライズ処理を行うことによって、処理能力が低いCPUを持つ情報処理装置であっても、3次元グラフィクの描画を高速に可能とする技術を提供することを目的としている。
発明の開示
上記目的を達成する第1の発明は、3次元画像の描画のラスタライズ処理を行う際、2次元平面上の点P1(x1,y1)と点P2(x2,y2)とをとおる
処理装置において、
れて格納されたメモリと、
Δxを演算する際、前記y座標の変化量に対応するμを前記メモリより読み出して乗算により、
を算出し、この結果をΔxとして演算する演算手段と
を有することを特徴とする。
上記目的を達成する第2の発明は、上記第1の発明において、前記λを2n(n>1)に限定し、前記算出されたΔx’を、n桁右シフトすることにより、Δxを演算する手段を更に有することを特徴とする。
上記目的を達成する第3の発明は、上記第1、2の発明において、座標値が整数に限定され、座標(x,y,z)tを、
で表現されるアフィン変換により、座標(x’,y’,z’)tに変換処理を行う場合、
アフィン変換の行列
にλ(≠0)をかけた行列
と、行列(t1,t2,t3)tと、形状データとが格納されたメモリと、
前記形状データの座標(x,y,z)tを、行列A及び行列(t1,t2,t3)tとのアフィン変換により、座標(x’y’,z’)tに変換する際、前記メモリより、行列A’と、行列(t1,t2,t3)tとを読み出し、
を演算して、座標(x’,y’,z’)tを演算する演算手段と
を更に有することを特徴とする。
上記目的を達成する第4の発明は、上記第3の発明において、前記λを2n(n>1)に限定し、
前記演算手段は、
の除算演算を、n桁右シフトすることにより演算する手段であることを特徴とする。
上記目的を達成する第5の発明は、上記第4の発明において、前記演算手段は、各被除数に定数λ/2を加えた後、n桁右シフトすることにより演算する手段であることを特徴とする。
上記目的を達成する第6の発明は、上記第3、4,5の発明において、予めλ(≠0)をかけた二つ以上のパラメータを合成する合成手段を有することを特徴とする。
上記目的を達成する第7の発明は、3次元画像の描画のラスタライズ処理を行う際、2次元平面上の点P1(x1,y1)と点P2(x2,y2)とをとおる
を算出する3次元画像の描画処理方法であって、
変化量に関連付けられて格納されたメモリから、算出するΔxのy座標の変化量に対応するμを読み出すステップと、
前記読み出したμに基づいて、乗算により、
を算出し、この結果をΔxとして演算するステップと
を有することを特徴とする。
上記目的を達成する第8の発明は、上記第7の発明において、前記λを2n(n>1)に限定し、前記算出されたΔx’を、n桁右シフトすることにより、Δxを演算するステップを更に有することを特徴とする。
上記目的を達成する第9の発明は、上記第7、8の発明において、座標値が整数に限定され、座標(x,y,z)tを、
で表現されるアフィン変換により、座標(x’,y’,z’)tに変換処理を行う際、
形状データの座標(x,y,z)tを、行列A及び行列(t1,t2,t3)tとのアフィン変換により、座標(x’,y’,z’)tに変換する際、メモリに記憶されている、行列Aにλ(≠0)をかけたパラメータA’
と、行列(t1,t2,t3)tとを読み出すステップと、
前記読み出した行列A’と、行列(t1,t2,t3)tとに基づいて、
を演算して、座標(x’,y’,z’)tを演算するステップと
を更に有することを特徴とする。
上記目的を達成する第10の発明は、上記第9の発明において、前記λを2n(n>1)に限定し、
前記演算するステップは、
の除算演算を、n桁右シフトすることにより、座標(x’,y’,z’)tを演算するステップであることを特徴とする。
上記目的を達成する第11の発明は、上記第10の発明において、前記n桁右シフトする前に、各被除数に定数λ/2を加算するステップを更に有することを特徴とする。
上記目的を達成する第12の発明は、上記第9、10、11の発明において、予めλ(≠0)をかけた二つ以上のパラメータを合成するステップを更に有することを特徴とする。
上記目的を達成する第13の発明は、3次元画像の描画のラスタライズ処理を行う際、2次元平面上の点P1(x1,y1)と点P2(x2,y2)とをとお
算処理を情報処理装置に行わせるプログラムであって、
前記プログラムは情報処理装置に、
変化量に関連付けられて格納されたメモリから、算出するΔxのy座標の変化量に対応するμを読み出させるステップと、
前記読み出したμに基づいて、乗算により、
を算出し、この結果をΔxとして演算させるステップと
を有することを特徴とするプログラムである。
上記目的を達成する第14の発明は、上記第13の発明において、情報処理装置に、前記λを2n(n>1)に限定し、前記算出されたΔx’を、n桁右シフトすることにより、Δxを演算させるステップを更に有することを特徴とするプログラムである。
上記目的を達成する第15の発明は、上記第13、14の発明において、情報処理装置に、座標値が整数に限定され、座標(x,y,z)tを、
で表現されるアフィン変換により、座標(x’,y’,z’)tに変換処理を行わせる際、
形状データの座標(x,y,z)tを、行列A及び行列(t1,t2,t3)tとのアフィン変換により、座標(x’,y’,z’)tに変換する際、メモリに記憶されている、行列Aにλ(≠0)をかけたパラメータA’
と、行列(t1,t2,t3)tとを読み出させるステップと、
前記読み出した行列A’と、行列(t1,t2,t3)tとに基づいて、
を演算して、座標(x’,y’z’)tを演算させるステップと
を更に有することを特徴とするプログラムである。
上記目的を達成する第16の発明は、上記第15の発明において、前記λを2n(n>1)に限定し、
前記演算するステップは、
の除算演算を、n桁右シフトすることにより、座標(x’,y’,z’)tを演算させるステップであることを特徴とするプログラムである。
上記目的を達成する第17の発明は、上記第16の発明において、情報処理装置に、前記n桁右シフトする前に、各被除数に定数λ/2を加算させるステップを更に有することを特徴とするプログラムである。
上記目的を達成する第18の発明は、上記第15、16、17の発明において、情報処理装置に、予めλ(≠0)をかけた二つ以上のパラメータを合成させるステップを更に有することを特徴とするプログラムである。
上記目的を達成する第19の発明は、3次元画像の描画のラスタライズ処理を行う際、2次元平面上の点P1(x1,y1)と点P2(x2,y2)とをとおる直線のy座標に対するx座標の変化量
を算出する演算処理を情報処理装置に行わせるプログラムが格納された記録媒体であって、
前記プログラムは情報処理装置に、
変化量に関連付けられて格納されたメモリから、算出するΔxのy座標の変化量に対応するμを読み出させるステップと、
前記読み出したμに基づいて、乗算により、
を算出し、この結果をΔxとして演算させるステップと
を有することを特徴とする記録媒体である。
上記目的を達成する第20の発明は、上記第19の発明において、前記プログラムが、情報処理装置に、前記λを2n(n>1)に限定し、前記算出されたΔx’を、n桁右シフトすることにより、Δxを演算させるステップを更に有することを特徴とする記録媒体である。
上記目的を達成する第21の発明は、上記第19、20の発明において、前記プログラムは、
情報処理装置に、座標値が整数に限定され、座標(x,y,z)tを、
で表現されるアフィン変換により、座標(x’,y’,z’)tに変換処理を行わせる際、
形状データの座標(x,y,z)tを、行列A及び行列(t1,t2,t3)tとのアフィン変換により、座標(x’,y’,z’)tに変換する際、メモリに記憶されている、行列Aにλ(≠0)をかけたパラメータA’
と、行列(t1,t2,t3)tとを読み出させるステップと、
前記読み出した行列A’と、行列(t1,t2,t3)tとに基づいて、
を演算して、座標(x’,y’,z’)tを演算させるステップと
を更に有することを特徴とする記録媒体である。
上記目的を達成する第22の発明は、上記第21の発明において、前記λを2n(n>1)に限定し、
前記演算するステップは、
の除算演算を、n桁右シフトすることにより、座標(x’,y’,z’)tを演算させるステップであることを特徴とする記録媒体である。
上記目的を達成する第23の発明は、上記第22の発明において、前記プログラムは、情報処理装置に、前記n桁右シフトする前に、各被除数に定数λ/2を加算させるステップを更に有することを特徴とする記録媒体である。
上記目的を達成する第24の発明は、上記第21、22、23の発明において、前記プログラムは、情報処理装置に、予めλ(≠0)をかけた二つ以上のパラメータを合成させるステップを更に有することを特徴とする記録媒体である。
発明を実施するための最良の形態
本発明の実施するための最良の形態を説明する。
まず、本発明の特徴である情報処理装置を用いた整数によるジオメトリ演算と、除算を使用しない三角形ラスタライズとについて説明する。
<整数によるジオメトリ演算>
1.アフィン変換による座標変換
座標(x,y,z)tから座標(x’,y’,z’)tへのアフィン変換を、
の形で表すとき、C言語的な数値演算で、x’,y’,z’を求める場合、
のようになる。但し、全ての数値型が無限の範囲と精度とをもっているものとする。
有限範囲の整数で座標計算する場合、計算精度と演算のオーバーフローとが問題となる。
オーバーフローに関しては、扱う座標の範囲を制限すれば、問題とならないが、計算精度は絶対値の小さい実数を整数に丸めるときに(小数を含む数値などで、必要とする右端の位(または桁)より一つ下の位(または桁)の値を四捨五入等して、数値を短縮すること。四捨五入以外にも切り上げや切り捨てなどの場合もありうる。)、相対誤差が大きくなる。特に、行列Aの成分は絶対値が1以下の場合が非常に多く、その数値を整数に丸めた場合は期待する結果から大きくずれてしまう。
そこで、行列Aの成分を整数に丸めるとき、相対誤差をなるべく少なくするために、予めλ(≠0)を行列Aの成分に掛けておく。
この行列A’で座標変換するときに
のように計算する。
C言語的な数値演算で、x’,y’,z’を求める場合、
のようになる。但し、すべての数値型は整数である。
このような計算でも、整数計算となり、浮動小数点演算を行う必要はないが、高速化のために実行時の整数除算を避けるためλを2n(n>1)に限定し、λ’=log2λとして、
のように算術右シフトで除算とほぼ同じ演算を行う。
また、算術右シフトを整数除算として利用する場合、丸めは−∞方向になるので、
のように算術右シフトを行う前に定数λ/2を加えて誤差を修正する。
具体的な例で説明すると、例えば、座標(111,222,333)tの点をアフィン変換する場合を考える。
上記の式2の行列A次びt(t1,t2,t3)tを、
とすると、
実数で計算した場合の式2の結果は、
となる。
ここで、上述した如く、本発明のアフィン変換を用いると、λ=4096(212)とした場合、行列A’は、
となる。
この行列A’と、行列t(t1,t2,t3)tとを使ったアフィン変換を、C言語の式で表すと、
となる。
この計算結果は、(991,579,1316)tとなり、上記の実数の演算結果とほぼ同じ結果となる。
情報処理装置の実際処理では、行列Aにλを乗算した行列A’と、行列t(t1,t2,t3)tとが、情報処理装置のメモリにパラメータとして格納されており、アフィン変換による座標変換をする際に、該当する行列Aに対応する行列A’と、行列t(t1,t2,t3)tとをメモリから読み出し、読み出した行列A’基づいて、各要素毎に演算が行われる。そして、その結果に定数λ/2を加えたものを、定数λ’回右シフトを行い、その結果に行列t(t1,t2,t3)tを加えて、座標を算出する。
2.アフィン変換の合成
2つのアフィン変換f,g(変換パラメータ)をそれぞれ、
である。A’=λA、B’=λBのとき、
である。
とすると、式8は、
となる。
この式11の右辺と式4の右辺は同じ形である。
として、C言語的な数値演算でMとtとの成分を求める場合、
となる。λを2n(n>1)に限定し、λ’=log2λとして全ての整数型を整数で計算するようにすると、
となる。
この方法により、事前にλを掛けたアフィン変換同士の合成ができる。
具体的な例で説明すると、例えば、
とし、λ=4096とすると、
となる。
λAとλBとの要素を最近整数値に丸めた行列は、
である。
従って、上述した数式により、行列Mと行列tとを求めると、
となる。
このように、上記の如く計算した
と、ほぼ同様な値を得ることができる。
<除算を使用しない三角形ラスタライズ>
直線上のx座標の変化量を求める場合、2次元平面上の点P1の座標を(x1,y1)、点P2の座標を(x2,y2)とする。y1≠y2のとき、P1とP2とをとおる直線のy座標に対するx座標の変化量は、
である。
Δx’=λΔxとし、Δx’をC言語的な数値演算で求める場合、
のようになる。
としたときは
のように乗算の形式になる。
整数のみで計算する場合、|λ|が十分に大きく|y2−y1|がある程度小さければ、丸めによる相対誤差が小さくなる。
そこで、λを定数にして、y座標の範囲を制限すれば、μは予め用意された少ない配列から得ることができる。すなわち、μを|y2−y1|に対応させて、情報処理装置のメモリに予め格納しておく。そして、|y2−y1|をインデックスとして、μを読み出して、
を計算すれば、乗算だけでほぼΔxと同じ値のΔx’を求めることができる。
また、λを2n(n>1)に制限すれば、算術右シフトによって、Δxを算出することができる。
よって、除算を一切使わずにx座標の変化量が求まる。
また、テクスチャー座標も同じ理由により、除算は必要ない。
具体的な例として、λ=65536として、座標(10,20)の始点P1と座標(85,120)の始点P2との線分の例を説明する。
この線分のy座標に対するx座標の変化量は、
となり、Δx’=λx=49152.0となる。
Δx’を整数のみで除算を使用しないで計算する場合、上述したように120−20=100をインデックスとして、対応するμをメモリから読み出してくる。
この場合、
とすると、
となり、除算を使用したΔx’=λx=49152.0とほぼ同じ値を得ることができる。
次に、上述の方法を携帯端末等に用いた場合について説明する。
図1は携帯端末のブロック図である。
図1中、1は3次元グラフィクを表示するディスプレイであり、2はFPU(浮動小数点演算ユニット)を持たないCPU等で構成された演算手段である制御部、3はプログラムやデータが格納されたメモリ部である。
尚、メモリ部3には、変換パラメータ(上述した行列A’と、行列t(t1,t2,t3)t)が格納された変換パラメータテーブル4と、上述した|y2−y1|をインデックスとしてμが格納された逆数テーブル5とが格納されている。
以下の本説明の3次元グラフィクの描画では、物体をすべて多角形の平面の組み合わせで表現する。そして、その多角形のことをポリゴンと呼ぶ。3次元空間にある物体(ポリゴン)は、X,Y,Zの3つの座標値を持っており、この座標を動かすことで、物体の位置や向きを変更することができる。さらに、3次元座標で表現されるものを、最終的に2次元のスクリーンに表示させる為、スクリーン座標系への変換が行われる。
このような、一連の座標変換、透視変換、光源計算などの処理(演算)は、ジオメトリ演算と呼ばれる。そして、計算によって変換されたポリゴンは、最終的にフレームバッファに書き込まれ、描画が行われる。
通常、ジオメトリ演算という処理はCPUのFPU(浮動小数点演算ユニット)を利用して行なわれていが、FPUはジオメトリ演算だけでなく、浮動小数点一般を計算するために設計されている。更に、携帯電話に代表される携帯端末の機器では、高価になるという理由で、FPU(浮動小数点演算ユニット)を持たないものも多い。
そこで、携帯端末のようなFPU(浮動小数点演算ユニット)を持たないCPUの情報処理装置でも、ジオメトリ演算を可能とする為、本発明では制御部3が整数によるジオメトリ演算を行う。
また、物体をドットに分割するラスタライズについても、3Dグラフィックスアクセラレータのない携帯端末では、処理負荷が増大する。
そこで、本発明では、処理負荷を軽減する為に、制御部3が除算を使用しないで三角形をラスタライズする。
次に、制御部3が行う、上述した演算を用いた3次元グラフィクの描画動作を説明する。
図2は3次元グラフィクの基本的な描画動作を示すフローチャートである。
まず、描画先の仮想フレームバッファの情報を設定する(step 100)。
次に、モデルオブジェクトに、メモリ部3から幾何学的座標データである形状データを読み込む(step 101)。
ここで読み込まれる形状データは、頂点座標列、ポリゴン列及びセグメント列の情報が含まれる。また、セグメントのデータには、基本姿勢用の変換パラメータ、所属頂点群及び親セグメントのID(識別情報)を含む。
尚、読み出される変換パラメータは、基本の行列Aにλ(2n(n>1))を乗算した行列A’と行列t(t1,t2,t3)tとであり、行列A’と行列t(t1,t2,t3)tとは、変換パラメータテーブル4から読み出される。
続いて、形状データに対応するテクスチャーデータ、例えば質感等のデータを読み込む(Step 102)。
そして、モデル座標系から視点座標系への変換パラメータを設定し(Step 103)、視点座標系からスクリーン座標系への変換パラメータを設定する(Step 104)。
仮想フレームバッファに2次元の背景を描画する(Step 105)。
仮想フレームバッファにモデルオブジェクトを描画する(Step 106)。
最後に、仮想フレームバッファの内容を実際の画面に表示する(Step 107)。
そして、Step 103からStep 107を繰り返すことによって3次元グラフィクが描画されることになる。
続いて、本発明の特徴である演算が用いられるモデルオブジェクトを制御部3が描画するStep 106について、更に詳細に説明する。
図3はモデルオブジェクトを描画のステップであるStep 106の動作を更に詳細に示すフローチャートである。
まず、モデルの頂点座標をローカル座標系からスクリーン座標系に変換する(Step 200)。
ここで、モデルの構造について説明する。通常、モデルは内部に複数のセグメントを持ち,各セグメントは複数の頂点を持っている。それらの頂点はセグメント座標系での座標値を持っている。セグメントは複数の子セグメントを持つことができ,セグメントに含まれる頂点の座標を親セグメント座標系に変換するための変換パラメータを持つ。最上位のセグメントが持つ変換パラメータは,そのセグメントが含む頂点の座標をモデル座標系に変換するための値になる。また、基本姿勢用の変換パラメータの情報も有する。
そこで、セグメント座標系での座標値を持つモデルの頂点座標をローカル座標系からスクリーン座標系に変換するため、まず、セグメント座標系からモデル座標系への変換を行う。
セグメント座標系からモデル座標系への変換パラメータの算出は,上述した整数によるジオメトリ演算によるアフィン変換の合成により行われる。
親セグメントを持つセグメントの場合は,セグメントが持つ変換パラメータfと、親セグメントのセグメント座標系からモデル座標系への変換パラメータgとを合成して,セグメント座標系からモデル座標
この合成に際し、上述したアフィン変換の合成の手法が用いられる。
尚、親セグメントを持たないセグメントの場合は、セグメントが持つ変換パラメータfとすると、セグメント座標系からモデル座標系への変換パラメータは、h=fになる。
続いて、モデル座標系からスクリーン座標系への変換について、説明する。
モデル座標系からスクリーン座標系への変換パラメータも同じ方法で計算する。
モデル座標系から視点座標系への変換パラメータをpとし,視点座標系からスクリーン座標系への変換パラメータをqとすると,モデル
最後に、上述の如く算出された、セグメント座標系からモデル座標系への変換パラメータhと、モデル座標系からスクリーン座標系への変換パラメータrとに基づいて、セグメント座標系からスクリーン座標系への変換パラメータsを算出する。
セグメント座標系からスクリーン座標系への変換パラメータsは、
必要があるが、rはl体のモデルの計算では1度しか計算する必要がない。
このように算出された変換パラメータsを使ってセグメント座標系の頂点座標をスクリーン座標系の座標に変換する。
座標変換の演算は、上述した整数によるジオメトリ演算のアフィン変換により座標変換により行う。
すなわち、セグメント座標系の頂点座標(x,y,z)tを、変換パラメータsを使ってスクリーン座標系の座標(x’,y’,z’)tに変換する。
続いて、スクリーン空間で裏面のポリゴンを処理対象から外す(Step 201)。
処理対象のポリゴンを視点座標系のZ値(奥行き)でソートする(Step 202)。
最後に、スクリーン座標で仮想フレームバッファにポリゴンを描画する(Step 203)。
本ステップを更に詳細に説明すると、まず、ここでは描画領域に三角形が表示される可能性をチェックする。三角形が完全に描画領域の外にある場合は以降の描画処理をスキップする。
そして、三角形を走査するための数値を事前に計算する。この計算は、主に三角形の稜線座標やテクスチャー座標などの変化量を計算する。この変化量は、上述した除算を使用しない三角形ラスタライズの演算により行われる。
三角形の走査は,加算やビットシフトなどの単純操作を繰り返し、仮想フレームバッファにピクセル値を書き込む。
具体的な演算の方法としては、直線上のx座標の変化量を求める場合、2次元平面上の点P1の座標を(x1,y1)、点P2の座標を(x2,y2)とする。y1≠y2のとき、P1とP2とをとおる直線のy座標に対するx座標の変化量は、上述した通り、
である。
Δx’=λΔxとし、Δx’をC言語的な数値演算で求める場合、
のようになる。
としたときは
のように乗算の形式になる。
整数のみで計算する場合、|λ|が十分に大きく|y2−y1|がある程度小さければ、丸めによる相対誤差が小さくなる。
そこで、λを定数にして、y座標の範囲を制限すれば、μは少ない配列から得ることができる。
そこで、|y2−y1|をインデックスとしたμの値を、メモリ部3の逆数テーブル5に予め格納しておく。そして、|y2−y1|に対応するμを逆数テーブル5から読み出し、このμと(x2−x1)とを除算することにより、Δx’を算出する。
そして、処理の高速化のため、Δx’で必要な演算を行っていき、仮想フレームバッファにピクセル値を書き込む際にλで除算する。
また、除算の段階で、λを2n(n>1)としてあれば、算術右シフトによって、Δxを算出することができ、除算を使わずにx座標の変化量が求まることが可能となる。
尚、テクスチャー座標も同様な処理が可能である。
次に、本発明の実際の具体例として、制御部3で実行されるC言語で記載されたプログラムを説明する。
まず、整数によるジオメトリ演算のプログラムを以下に記す。
以下は、メモリに記憶されている、変換パラメータ、すなわち行列A’と行列(t1,t2,t3)tの例である。
ここで、public int m00からpublic int m23は、コメントにあるようにアフィン変換の行列A’と、行列(t1,t2,t3)tの各要素に相当する。また、λ=4096である。
次に、座標変換について以下に示す。
ここで、@param srcは上記の式2で示される座標(x,y,z)tに相当し、@param dstは上記の式2で示される座標(x’,y’,z’)tに相当する。
次に、アフィン変換の合成について以下に示す。
次に、ポリゴン描画について示す。
尚、上記テーブルは、上述したμの値の逆数テーブル5に相当するものであるが、メモリの記憶容量節約の観点から、μ−1としてある。そして、|y2−y1|の大きさの順に並んでいる。
以上が、本発明を実施する為のプログラムの一例である。
産業上の利用可能性
本発明は、3次元画像の描画の演算処理の際、整数の範囲で演算処理が行えるので、携帯電話や、PDA(Personal Digital(Data)Assistants)のようにFPU(浮動小数点演算ユニット)も備えていないものであっても、3次元画像が扱える。
また、演算処理の際、処理負荷の高い除算を行わないようにしているので、CPUの能力が低い情報処理装置であっても、スムーズな描画処理が行える。
【図面の簡単な説明】
図1は携帯端末のブロック図であり、図2は3次元グラフィクの基本的な描画動作を示すフローチャートであり、図3はモデルオブジェクトを描画のステップであるStep 106の動作を更に詳細に示すフローチャートである。
Claims (24)
- 前記λを2n(n>1)に限定し、前記算出されたΔx’を、n桁右シフトすることにより、Δxを演算する手段を更に有することを特徴とする請求項1に記載の情報処理装置。
- 前記演算手段は、各被除数に定数λ/2を加えた後、n桁右シフトすることにより演算する手段であることを特徴とする請求項4に記載の情報処理装置。
- 予めλ(≠0)をかけた二つ以上のパラメータを合成する合成手段を有することを特徴とする請求項3から請求項5のいずれかに記載の情報処理装置。
- 前記λを2n(n>1)に限定し、前記算出されたΔx’を、n桁右シフトすることにより、Δxを演算するステップを更に有することを特徴とする請求項7に記載の3次元画像の描画処理方法。
- 前記n桁右シフトする前に、各被除数に定数λ/2を加算するステップを更に有することを特徴とする請求項10に記載の3次元画像の描画処理方法。
- 予めλ(≠0)をかけた二つ以上のパラメータを合成するステップを更に有することを特徴とする請求項9から請求項11のいずれかに記載の3次元画像の描画処理方法。
- 情報処理装置に、前記λを2n(n>1)に限定し、前記算出されたΔx’を、n桁右シフトすることにより、Δxを演算させるステップを更に有することを特徴とする請求項13に記載のプログラム。
- 情報処理装置に、座標値が整数に限定され、座標(x,y,z)tを、
で表現されるアフィン変換により、座標(x’,y’,z’)tに変換処理を行わせる際、
形状データの座標(x,y,z)tを、行列A及び行列(t1,t2,t3)tとのアフィン変換により、座標(x’,y’,z’)tに変換する際、メモリに記憶されている、行列Aにλ(≠0)をかけたパラメータA’
と、行列(t1,t2,t3)tとを読み出させるステップと、
前記読み出した行列A’と、行列(t1,t2,t3)tとに基づいて、
を演算して、座標(x’,y’,z’)tを演算させるステップと
を有することを特徴とする請求項13又は請求項14に記載のプログラム。 - 情報処理装置に、前記n桁右シフトする前に、各被除数に定数λ/2を加算させるステップを更に有することを特徴とする請求項16に記載のプログラム。
- 情報処理装置に、予めλ(≠0)をかけた二つ以上のパラメータを合成させるステップを更に有することを特徴とする請求項15から請求項17のいずれかに記載のプログラム。
- 前記プログラムは、情報処理装置に、前記λを2n(n>1)に限定し、前記算出されたΔx’を、n桁右シフトすることにより、Δxを演算させるステップを更に有することを特徴とする請求項19に記載の記録媒体。
- 前記プログラムは、
情報処理装置に、座標値が整数に限定され、座標(x,y,z)tを、
で表現されるアフィン変換により、座標(x’,y’,z’)tに変換処理を行わせる際、
形状データの座標(x,y,z)tを、行列A及び行列(t1,t2,t3)tとのアフィン変換により、座標(x’,y’,z’)tに変換する際、メモリに記憶されている、行列Aにλ(≠0)をかけたパラメータA’
と、行列(t1,t2,t3)tとを読み出させるステップと、
前記読み出した行列A’と、行列(t1,t2,t3)tとに基づいて、
を演算して、座標(x’,y’,z’)tを演算させるステップと
を更に有することを特徴とする請求項19又は請求項20に記載の記録媒体。 - 前記プログラムは、情報処理装置に、前記n桁右シフトする前に、各被除数に定数λ/2を加算させるステップを更に有することを特徴とする請求項22に記載の記録媒体。
- 前記プログラムは、情報処理装置に、予めλ(≠0)をかけた二つ以上のパラメータを合成させるステップを更に有することを特徴とする請求項21から請求項23のいずれかに記載の記録媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001187619 | 2001-06-21 | ||
JP2001187619 | 2001-06-21 | ||
PCT/JP2002/006159 WO2003001458A1 (fr) | 2001-06-21 | 2002-06-20 | Processeur de donnees |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2003001458A1 true JPWO2003001458A1 (ja) | 2004-10-14 |
Family
ID=19026886
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003507764A Expired - Fee Related JP4046233B2 (ja) | 2001-06-21 | 2002-06-20 | 情報処理装置 |
JP2003507765A Withdrawn JPWO2003001458A1 (ja) | 2001-06-21 | 2002-06-20 | 情報処理装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003507764A Expired - Fee Related JP4046233B2 (ja) | 2001-06-21 | 2002-06-20 | 情報処理装置 |
Country Status (8)
Country | Link |
---|---|
US (2) | US7030880B2 (ja) |
EP (2) | EP1406214A4 (ja) |
JP (2) | JP4046233B2 (ja) |
KR (2) | KR20030043935A (ja) |
CN (2) | CN1465035A (ja) |
IL (4) | IL154451A0 (ja) |
TW (2) | TWI239488B (ja) |
WO (2) | WO2003001458A1 (ja) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7107081B1 (en) | 2001-10-18 | 2006-09-12 | Iwao Fujisaki | Communication device |
US7127271B1 (en) | 2001-10-18 | 2006-10-24 | Iwao Fujisaki | Communication device |
US7466992B1 (en) | 2001-10-18 | 2008-12-16 | Iwao Fujisaki | Communication device |
US8229512B1 (en) | 2003-02-08 | 2012-07-24 | Iwao Fujisaki | Communication device |
US8241128B1 (en) | 2003-04-03 | 2012-08-14 | Iwao Fujisaki | Communication device |
US8090402B1 (en) | 2003-09-26 | 2012-01-03 | Iwao Fujisaki | Communication device |
US7917167B1 (en) | 2003-11-22 | 2011-03-29 | Iwao Fujisaki | Communication device |
US8041348B1 (en) | 2004-03-23 | 2011-10-18 | Iwao Fujisaki | Communication device |
US7091982B2 (en) * | 2004-05-14 | 2006-08-15 | Nvidia Corporation | Low power programmable processor |
US7202877B2 (en) * | 2004-05-21 | 2007-04-10 | Texas Instruments Incorporated | Sprite rendering |
US7664338B2 (en) * | 2004-09-28 | 2010-02-16 | Qualcomm Incorporated | Perspective transformation of two-dimensional images |
US8208954B1 (en) | 2005-04-08 | 2012-06-26 | Iwao Fujisaki | Communication device |
KR101249988B1 (ko) * | 2006-01-27 | 2013-04-01 | 삼성전자주식회사 | 사용자의 위치에 따른 영상을 디스플레이하는 장치 및 방법 |
US8692809B2 (en) * | 2006-07-06 | 2014-04-08 | Elo Touch Solutions, Inc. | Auto-gain switching module for acoustic touch systems |
US7936921B2 (en) * | 2007-01-04 | 2011-05-03 | Freescale Semiconductor, Inc. | Efficient fixed-point real-time thresholding for signal processing |
US8559983B1 (en) | 2007-05-03 | 2013-10-15 | Iwao Fujisaki | Communication device |
US7890089B1 (en) | 2007-05-03 | 2011-02-15 | Iwao Fujisaki | Communication device |
US8676273B1 (en) | 2007-08-24 | 2014-03-18 | Iwao Fujisaki | Communication device |
US8639214B1 (en) | 2007-10-26 | 2014-01-28 | Iwao Fujisaki | Communication device |
US8472935B1 (en) | 2007-10-29 | 2013-06-25 | Iwao Fujisaki | Communication device |
US8744720B1 (en) | 2007-12-27 | 2014-06-03 | Iwao Fujisaki | Inter-vehicle middle point maintaining implementer |
US8543157B1 (en) | 2008-05-09 | 2013-09-24 | Iwao Fujisaki | Communication device which notifies its pin-point location or geographic area in accordance with user selection |
US8340726B1 (en) | 2008-06-30 | 2012-12-25 | Iwao Fujisaki | Communication device |
US8452307B1 (en) | 2008-07-02 | 2013-05-28 | Iwao Fujisaki | Communication device |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4760548A (en) * | 1986-06-13 | 1988-07-26 | International Business Machines Corporation | Method and apparatus for producing a curve image |
US5028848A (en) * | 1988-06-27 | 1991-07-02 | Hewlett-Packard Company | Tile vector to raster conversion method |
US5715385A (en) * | 1992-07-10 | 1998-02-03 | Lsi Logic Corporation | Apparatus for 2-D affine transformation of images |
JP3131041B2 (ja) * | 1992-08-28 | 2001-01-31 | 三菱電機株式会社 | 量子化装置 |
US5581665A (en) * | 1992-10-27 | 1996-12-03 | Matsushita Electric Industrial Co., Ltd. | Three-dimensional object movement and transformation processing apparatus for performing movement and transformation of an object in a three-diamensional space |
JPH0778269A (ja) * | 1993-06-30 | 1995-03-20 | Nec Corp | 3次元描画装置 |
JP2526505B2 (ja) * | 1993-09-28 | 1996-08-21 | 日本電気株式会社 | 画像処理装置 |
WO1996003717A1 (en) * | 1994-07-22 | 1996-02-08 | Apple Computer, Inc. | Method and system for the placement of texture on three-dimensional objects |
KR0170934B1 (ko) * | 1994-12-29 | 1999-03-20 | 배순훈 | 프랙탈 영상 부호화를 위한 고속 아핀 변환 장치 |
JPH09305789A (ja) * | 1996-05-21 | 1997-11-28 | Hitachi Ltd | 演算方法およびグラフィックス表示装置 |
AUPP091197A0 (en) * | 1997-12-15 | 1998-01-08 | Liguori, Vincenzo | Direct manipulation of compressed geometry |
US6215915B1 (en) * | 1998-02-20 | 2001-04-10 | Cognex Corporation | Image processing methods and apparatus for separable, general affine transformation of an image |
US6389154B1 (en) * | 1998-07-15 | 2002-05-14 | Silicon Graphics, Inc. | Exact evaluation of subdivision surfaces generalizing box splines at arbitrary parameter values |
US6483514B1 (en) * | 1999-04-15 | 2002-11-19 | Pixar Animation Studios | Motion blurring implicit surfaces |
JP4244444B2 (ja) * | 1999-05-28 | 2009-03-25 | ソニー株式会社 | データ処理装置、除算回路および画像処理装置 |
GB2359884B (en) * | 1999-11-25 | 2004-06-30 | Canon Kk | Image processing method and apparatus |
JP2002008060A (ja) * | 2000-06-23 | 2002-01-11 | Hitachi Ltd | データ処理方法、記録媒体及びデータ処理装置 |
-
2002
- 2002-06-20 EP EP02743661A patent/EP1406214A4/en not_active Withdrawn
- 2002-06-20 JP JP2003507764A patent/JP4046233B2/ja not_active Expired - Fee Related
- 2002-06-20 KR KR10-2003-7002480A patent/KR20030043935A/ko not_active Application Discontinuation
- 2002-06-20 US US10/344,452 patent/US7030880B2/en not_active Expired - Lifetime
- 2002-06-20 CN CN02802444A patent/CN1465035A/zh active Pending
- 2002-06-20 WO PCT/JP2002/006159 patent/WO2003001458A1/ja active Application Filing
- 2002-06-20 IL IL15445102A patent/IL154451A0/xx unknown
- 2002-06-20 KR KR1020037002479A patent/KR100924250B1/ko active IP Right Grant
- 2002-06-20 US US10/296,811 patent/US6970178B2/en not_active Expired - Lifetime
- 2002-06-20 JP JP2003507765A patent/JPWO2003001458A1/ja not_active Withdrawn
- 2002-06-20 EP EP02743660A patent/EP1406213A4/en not_active Withdrawn
- 2002-06-20 CN CN02802446A patent/CN1465036A/zh active Pending
- 2002-06-20 IL IL15445002A patent/IL154450A0/xx active IP Right Grant
- 2002-06-20 WO PCT/JP2002/006157 patent/WO2003001457A1/ja active Application Filing
- 2002-06-21 TW TW091113608A patent/TWI239488B/zh not_active IP Right Cessation
- 2002-06-21 TW TW091113609A patent/TWI257795B/zh not_active IP Right Cessation
-
2003
- 2003-02-13 IL IL154450A patent/IL154450A/en not_active IP Right Cessation
- 2003-02-13 IL IL154451A patent/IL154451A/en not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US6970178B2 (en) | 2005-11-29 |
CN1465035A (zh) | 2003-12-31 |
US20030185460A1 (en) | 2003-10-02 |
CN1465036A (zh) | 2003-12-31 |
IL154451A (en) | 2009-07-20 |
EP1406213A1 (en) | 2004-04-07 |
KR20030045036A (ko) | 2003-06-09 |
EP1406214A1 (en) | 2004-04-07 |
JP4046233B2 (ja) | 2008-02-13 |
EP1406213A4 (en) | 2009-01-14 |
IL154450A (en) | 2008-11-26 |
JPWO2003001457A1 (ja) | 2004-10-14 |
IL154450A0 (en) | 2003-09-17 |
WO2003001458A1 (fr) | 2003-01-03 |
TWI239488B (en) | 2005-09-11 |
EP1406214A4 (en) | 2009-01-14 |
IL154451A0 (en) | 2003-09-17 |
TWI257795B (en) | 2006-07-01 |
KR100924250B1 (ko) | 2009-10-30 |
US7030880B2 (en) | 2006-04-18 |
WO2003001457A1 (fr) | 2003-01-03 |
US20030184543A1 (en) | 2003-10-02 |
KR20030043935A (ko) | 2003-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPWO2003001458A1 (ja) | 情報処理装置 | |
US8059119B2 (en) | Method for detecting border tiles or border pixels of a primitive for tile-based rendering | |
US5903273A (en) | Apparatus and method for generating an image for 3-dimensional computer graphics | |
CN110084875B (zh) | 使用计算着色器作为顶点着色器的前端 | |
TWI552109B (zh) | 一種使用誤差項之保守格柵化基元的方法、非暫時性電腦可讀儲存媒體及系統 | |
US8379025B1 (en) | Methods and apparatus for rendering vector art on graphics hardware | |
CN102227752A (zh) | 使用三维图形硬件的二维图形渲染期间的顶点丢弃 | |
US10540789B2 (en) | Line stylization through graphics processor unit (GPU) textures | |
US8040357B1 (en) | Quotient remainder coverage system and method | |
EP3563352B1 (en) | Indexed value blending for use in image rendering | |
CN114494564A (zh) | 法线贴图生成方法、设备、电子设备及存储介质 | |
US8179399B2 (en) | Rasterizing method | |
JPH11161819A (ja) | 画像処理装置、画像処理方法、及び画像処理プログラムを記録した記録媒体 | |
US20100302259A1 (en) | Drawing data processing method, graphics drawing system and graphics drawing data generation program | |
JP3979162B2 (ja) | 画像処理装置およびその方法 | |
CN110570504B (zh) | 闭合符号绘制方法、装置、电子设备及存储介质 | |
KR100388587B1 (ko) | 정점 데이터에 오프셋값을 가산하여 폴리곤을 묘화하는3차원 그래픽스 묘화 장치 및 그 방법 | |
JP3522714B2 (ja) | 画像生成方法 | |
US7372466B2 (en) | Image processing apparatus and method of same | |
KR100684558B1 (ko) | 텍스쳐 밉매핑 장치 및 방법 | |
JP4556646B2 (ja) | 図形情報生成装置、画像処理装置、情報処理装置、および図形情報生成方法 | |
JP4483026B2 (ja) | 図形情報変換装置、図形情報変換方法及び記録媒体 | |
CN118097008A (zh) | 用于将mesh格式文件转换为数值分析软件文件的方法 | |
CN115063509A (zh) | 一种基于daa直线表示的光栅化方法、装置及存储介质 | |
CN117224963A (zh) | 虚拟资产的处理方法、装置、存储介质及电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041125 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070718 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20070914 |