実施例に係る算出装置について説明する。図1は、実施例に係る算出装置の機能構成の一例を示す図である。
[算出装置の機能構成]
図1に示すように、算出装置10は、入力部11と、表示部12と、通信部13と、記憶部14と、制御部15とを有する。
入力部11は、各種情報を入力する。また、入力部11は、各種情報を指定したり、選択したりするために用いられる。例えば、入力部11は、ユーザから、後述の算出処理を実行するための指示を受け付けて、受け付けた指示を制御部15に入力する。
また、入力部11は、ユーザによる操作によって、表示部12に表示された部品モデルの中から、変形させる部品モデル(変形対象の部品モデル)または移動させる部品モデル(移動対象の部品モデル)を指定する。例えば、入力部11に、ポインティングデバイスであるマウスが含まれている場合について説明する。図2および図3は、実施例に係る算出装置が実行する処理の一例を説明するための図である。図2の例は、表示部12に表示された三次元のCADデータが表す携帯電話の筐体の部品モデルの断面図の一例を示す。なお、図2の例では、部品モデルの断面図の一部が示されている。図2の例は、表示部12に、携帯電話の筐体の部品モデル20のツメ20aと部品モデル21のツメ21aとが嵌合された場合を示す。図2の例に示すように、表示部12に部品モデル20と部品モデル21とが表示されている場合について説明する。この場合に、ユーザがマウスを操作して表示部12に表示されるカーソル(図示せず)を部品モデル20に合わせ、ユーザがマウスをクリックすると、図3に示すように、部品モデル20が選択されて表示部12に表示される。このようにして、変形対象または移動対象のモデルが選択される。
また、入力部11は、ユーザによる操作によって、表示部12に表示された変形対象または移動対象の部品モデルの面の中から、変形させる面(変形面)を指定する。図4および図5は、実施例に係る算出装置が実行する処理の一例を説明するための図である。図4の例は、先の図3の例における部品モデル20のツメ20aが表示部12に表示されている場合を示す。なお、図4の例が示すツメ20aは、図3の例の場合のツメ20と比較して、上下方向の向きが逆である。図4の例において、ユーザがマウスを操作して表示部12に表示されるカーソルを、ツメ20aの複数の面のうち面22に合わせ、ユーザがマウスをクリックすると、図5の例に示すように、面22が指定され、面22が選択される。
また、入力部11は、ユーザによる操作によって、表示部12に表示された部品モデルの変形後の位置を示す三次元座標(x,y,z)を受け付ける。ここでいう「変形後の位置」とは、変形対象の部品モデルをユーザが変形させようとする目標位置を指す。例えば、ユーザがマウスを操作して表示部12に表示されるカーソルを部品モデルの変形後の位置に合わせ、ユーザがマウスをクリックすると、部品モデルの変形後の位置を示す三次元座標が指定される。
入力部11のデバイスの一例としては、マウスやキーボードなどのユーザの操作を受け付けるデバイスなどが挙げられる。
表示部12は、各種の画像を表示する。例えば、表示部12は、後述のCADデータ14aが表す部品モデルをユーザにより選択可能なように表示する。また、表示部12は、ユーザにより選択された変形対象の部品モデルの変形面を指定可能なように表示する。表示部12のデバイスの一例としては、液晶ディスプレイなどが挙げられる。
通信部13は、各装置間の通信を行うためのインターフェースである。例えば、通信部13は、図示しないサーバに接続される。かかるサーバの一例としては、アニメーションデータを再生するサーバが挙げられる。通信部13は、後述の再生部15gから送信されたアニメーション情報14b、変形情報14c、移動情報14dを受信すると、受信したアニメーション情報14b、変形情報14c、移動情報14dをサーバに送信する。これにより、サーバは、アニメーション情報14b、変形情報14c、移動情報14dを用いて、部品モデルのアニメーションを再生する。
記憶部14は、各種情報を記憶する。例えば、記憶部14は、CADデータ14a、アニメーション情報14b、変形情報14b、移動情報14cを記憶する。
CADデータ14aは、三次元の部品モデルを表すデータである。例えば、CADデータ14aには、複数の部品モデルのそれぞれを識別するためのID(Identification)、複数の部品モデルの各面を識別するためのID、各面の領域を特定するための各面の頂点の三次元座標が含まれる。
アニメーション情報14bは、アニメーションを表す情報である。アニメーション情報14bは、後述の生成部15fにより生成されて記憶部13に記憶される。図6は、アニメーション情報のデータ構造の一例を示す図である。図6の例では、アニメーション情報14bのレコードは、「タイムライン」、「対象モデル」、「移動/変形」、「変位データ」の各項目を有する。「タイムライン」の項目には、アニメーションを再生する順番が登録される。「対象モデル」の項目には、再生される部品モデルのIDが登録される。「移動/変形」の項目には、部品モデルが移動するアニメーションを再生することを示す値、または、部品モデルが変形するアニメーションを再生することを示す値が設定される。図6の例は、部品モデルが移動するアニメーションを再生することを示す値として、「0」が設定される場合を示す。また、図6の例は、部品モデルが変形するアニメーションを再生することを示す値として、「1」が設定される場合を示す。「変位データ」の項目には、「タイムライン」の項目に登録された順番で表示されるアニメーションにおける部品モデルの移動または変形に関するデータを識別するためのIDが登録される。かかるIDは、後述の変形情報14cおよび移動情報14dから、部品モデルが移動する場合の移動量、部品モデルが変形する場合の変形後の位置などの情報を検索するためのキーとなる情報である。
変形情報14cは、部品モデルの変形後の位置や姿勢を示す情報である。変形情報14cは、生成部15fにより生成され、記憶部13に記憶される。図7は、変形情報のデータ構造の一例を示す図である。図7の例では、変形情報14cのレコードは、「変形変位データ」、「面ID」、「変形/解除」、「目標位置」、「相対姿勢(Rx,Ry,Rz)」の各項目を有する。「変形変位データ」の項目には、アニメーションにおける部品モデルの変形に関するデータを識別するためのIDが登録される。「面ID」の項目には、ユーザが入力部11を操作することによって指定された変形させる面または変形を解除する面のIDが登録される。「変形/解除」の項目には、部品モデルを変形させることを示す値、または、部品モデルの変形を解除すること、すなわち、部品モデルを変形前の形状に戻ることを示す値が設定される。図7の例は、部品モデルを変形させることを示す値として、「1」が設定される場合を示す。また、図7の例は、部品モデルの変形を解除することを示す値として、「0」が設定される場合を示す。「目標位置」の項目には、ユーザが入力部11を操作することによって指定された、部品モデルの変形後の位置を示す三次元座標が登録される。「相対姿勢(Rx,Ry,Rz)」の項目には、部品モデルが変形する場合に、「面ID」に登録されたIDが示す面の変形後の姿勢が変形前の姿勢からどれだけ変化するかを示す量が登録される。かかる量としては、各軸の回転量(X軸周りの回転量Rx、Y軸周りの回転量Ry、Z軸周りの回転量Rz)が挙げられる。
移動情報14dは、部品モデルの移動後の位置や姿勢を示す情報である。移動情報14dは、生成部15fにより生成され、記憶部13に記憶される。図8は、移動情報のデータ構造の一例を示す図である。図8の例では、移動情報14dのレコードは、「移動変位データ」、「相対位置(x,y,z)」、「相対姿勢(Rx,Ry,Rz)」の各項目を有する。「移動変位データ」の項目には、アニメーションにおける部品モデルの移動に関するデータを識別するためのIDが登録される。「相対位置(x,y,z)」の項目には、部品モデルが移動する場合に、移動後の部品モデルの位置が移動前の部品モデルの位置からどれだけ移動するかを示す情報が登録される。かかる情報としては、3次元のベクトル(x,y,z)が挙げられる。「相対姿勢(Rx,Ry,Rz)」の項目には、部品モデルが変形する場合に、移動後の部品モデルの姿勢が移動前の部品モデルの姿勢からどれだけ変化するかを示す量が登録される。かかる量としては、各軸の回転量(変形前のX軸周りの回転量Rx、Y軸周りの回転量Ry、Z軸周りの回転量Rz)が挙げられる。
記憶部14は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク(HDD)、光ディスクなどの記憶装置である。なお、記憶部14は、上記の種類の記憶装置に限定されるものではなく、RAM(Random Access Memory)、ROM(Read Only Memory)であってもよい。
制御部15は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図1に示すように、制御部15は、取得部15aと、第一の特定部15bと、第二の特定部15cと、第一の算出部15dと、第二の算出部15eと、生成部15fと、再生部15gとを有する。
取得部15aは、各種情報を取得する。具体例を挙げて説明すると、取得部15aは、まず、記憶部14からCADデータ14aを取得し、取得したCADデータ14aが表す製品の複数の部品モデルを表示するように、表示部12の表示を制御する。これにより、表示部12は、変形対象の部品モデルがユーザによる指定が可能なように複数の部品モデルを表示する。例えば、先の図2の例に示すように、取得部15aは、部品モデル20および部品モデル21を表示するように表示部12の表示を制御する。続いて、取得部15aは、ユーザが入力部11を操作して変形対象または移動対象の部品モデルを指定したか否かを判定する。
変形対象または移動対象の部品モデルを指定した場合には、取得部15aは、次のような処理を行う。すなわち、取得部15aは、移動対象の部品モデルを移動させるための指示である移動指示、および、変形対象の部品モデルを変形させるための指示である変形指示を受け付ける画面を表示するように、表示部12の表示を制御する。以下の説明では、かかる画面を「指示受付画面」と表記する。
図9は、指示受付画面の一例を示す図である。図9の例が示す指示受付画面には、変形指示を受け付けるためのチェックボックス40、移動指示を受け付けるためのチェックボックス41が含まれる。また、図9の例が示す指示受付画面には、チェックボックス41がチェックされた場合、すなわち、移動指示が指定された場合にチェック可能となる、回転指示を受け付けるためのチェックボックス42が含まれる。また、図9の例が示す指示受付画面には、移動指示が指定された場合にチェック可能となる、並進指示を受け付けるためのチェックボックス43が含まれる。また、図9の例が示す指示受付画面には、チェックボックス42がチェックされた場合、すなわち、回転指示が指定された場合にチェック可能となる、部品モデルを回転させる軸を指定するためのチェックボックス44a〜44cが含まれる。図9の例では、チェックボックス44aは、部品モデルを回転させる軸としてX軸を指定するためのものである。また、図9の例では、チェックボックス44bは、部品モデルを回転させる軸としてY軸を指定するためのものである。さらに、図9の例では、チェックボックス44cは、部品モデルを回転させる軸としてZ軸を指定するためのものである。
また、図9の例が示す指示受付画面には、チェックボックス44aがチェックされた場合、すなわち、部品モデルを回転させる軸としてX軸が指定された場合に、書き込み可能となるテキストボックス45aが含まれている。また、図9の例が示す指示受付画面には、チェックボックス44bがチェックされた場合、すなわち、部品モデルを回転させる軸としてY軸が指定された場合に、書き込み可能となるテキストボックス45bが含まれている。また、図9の例が示す指示受付画面には、チェックボックス44cがチェックされた場合、すなわち、部品モデルを回転させる軸としてZ軸が指定された場合に、書き込み可能となるテキストボックス45cが含まれている。図9の例では、テキストボックス45aには、部品モデルをX軸周りに回転移動させる場合の移動量が度数でユーザにより設定される。また、図9の例では、テキストボックス45bには、部品モデルをY軸周りに回転移動させる場合の移動量が度数でユーザにより設定される。さらに、図9の例では、テキストボックス45cには、部品モデルをZ軸周りに回転移動させる場合の移動量が度数でユーザにより設定される。
また、図9の例が示す指示受付画面には、チェックボックス43がチェックされた場合、すなわち、並進指示が指定された場合に書き込み可能となるテキストボックス46a〜46cが含まれる。図9の例では、テキストボックス46aには、部品モデルを並進移動させる場合のX軸方向の移動量がユーザにより設定される。また、図9の例では、テキストボックス46bには、部品モデルを並進移動させる場合のY軸方向の移動量がユーザにより設定される。さらに、図9の例では、テキストボックス46cには、部品モデルを並進移動させる場合のZ軸方向の移動量がユーザにより設定される。
図9の例では、ユーザによって、変形指示の指定、もしくは、移動指示の指定、および、回転指示の指定、並進指示の指定、回転軸の指定、回転度数の設定、移動量の設定などが行われると、ユーザは、マウスを操作して指示完了ボタン47をクリックする。これにより、指示受付画面が閉じて、各種の情報の指定および設定が完了する。
また、取得部15aは、生成部15fにより、後述の変形に係る情報の記録、または、後述の移動に係る情報の記録が行われた場合に、アニメーションの生成を終了するかまたは継続するかの指示を受け付ける画面を表示するように、表示部12の表示を制御する。アニメーションの生成を継続する指示を受け付けた場合には、取得部15aは、再び、記憶部14からCADデータ14aを取得し、ユーザによる指定が可能な変形対象または移動対象の複数の部品モデルを表示するように表示部12の表示を制御する。
第一の特定部15bは、ユーザによって変形指示が指定された部品モデルについて、部品モデルの後述する変形面に外側面が接するバウンディングボックスのモデルと、部品モデルとが干渉する領域である干渉領域を特定する。具体例を挙げて説明する。なお、以下の説明では、ユーザによって、先の部品モデル20について変形指示が指定された場合を例に挙げて説明する。例えば、第一の特定部15bは、まず、変形指示が指定された部品モデル20を表示するように、表示部12の表示を制御する。例えば、第一の特定部15bは、先の図3の例に示すように、部品モデル20を表示するように表示部12の表示を制御する。
そして、第一の特定部15bは、変形指示が指定された部品モデル20の各面のうち、変形させる面(変形面)を指定する旨のメッセージ、例えば、「変形面を指定して下さい」を表示するように、表示部12の表示を制御する。これにより、部品モデル20の各面の中から、ユーザによる変形面の指定が促される。なお、以下の説明では、ユーザによって、先の変形面22が指定された場合を例に挙げて説明する。
ユーザにより変形面22が指定された場合には、第一の特定部15bは、次のような処理を行う。すなわち、第一の特定部15bは、部品モデル20の変形後の位置を示す三次元座標(x,y,z)を指定する旨のメッセージ、例えば、「部品モデルの変形後の位置にカーソルを合わせてクリックして下さい」を表示するように、表示部12の表示を制御する。これにより、ユーザの操作によって、表示部12に表示された部品モデル20の変形後の位置を示す三次元座標(x,y,z)が指定される。
ユーザにより部品モデル20の変形後の位置を示す三次元座標(x,y,z)が指定された場合には、第一の特定部15bは、変形面22をY−Z平面、X−Z平面、X−Y平面のそれぞれに投影する。以下の説明では、Y−Z平面をX平面、X−Z平面をY平面、X−Y平面をZ平面と表記する。
次に、第一の特定部15bは、X平面、Y平面、Z平面のそれぞれに投影した変形面22の領域のうち、面積が最大となる領域を1つ特定し、特定した領域が投影された平面の法線ベクトルの方向を変形面22が変形する方向として特定する。図10は、実施例に係る算出装置が実行する処理の一例を説明するための図である。例えば、先の変形面22をX平面、Y平面、Z平面のそれぞれに投影させた場合、投影した領域の面積が最大となる場合の平面は、Z平面である。したがって、第一の特定部15bは、図10の例に示すように、Z平面の法線ベクトル22aの方向を変形面22が変形する方向として特定する。ここで、一般的に、法線ベクトルの方向は、1つの面に対して2つの方向があるが、本実施例に係る第一の特定部15bは、部品モデルの内部の方向ではなく、部品モデルの外部の方向を法線ベクトルの方向として特定する。
続いて、第一の特定部15bは、特定した法線ベクトルの方向とは逆方向に存在する部品モデル20の面を探索し、変形面22から最も距離が離れている面を、変形面22の裏側の面(裏面)として特定する。図11は、実施例に係る算出装置が実行する処理の一例を説明するための図である。図11の例では、部品モデル20は、変形面22の裏側の面に、裏面23を有する。図11の例では、第一の特定部15bは、変形面22の裏側の面として、裏面23を特定する。
そして、第一の特定部15bは、変形面22に接続された面のうち、未選択の面があるか否かを判定する。未選択の面がある場合には、第一の特定部15bは、変形面22に接続された面のうち、未選択の面を1つ選択する。また、未選択の面がない場合には、第一の特定部15bは、選択済みの面に接続された未選択の面を1つ選択する。続いて、第一の特定部15bは、選択した面をX平面、Y平面、Z平面のそれぞれに投影する。そして、第一の特定部15bは、X平面、Y平面、Z平面のそれぞれに投影された面の領域のうち、面積が最大となる領域が投影された平面の法線ベクトルの方向が、次のような方向であるか否かを判定する。すなわち、第一の特定部15bは、かかる法線ベクトルの方向が、変形面22が変形する方向、裏面23の法線ベクトルの方向、後述の「抽出された面」がある場合における「抽出された面」の法線ベクトルの方向のいずれの方向とも異なるか否かを判定する。
いずれの方向とも異なる場合には、第一の特定部15bは、選択した面を抽出する。なお、かかる面が上記の「抽出された面」である。第一の特定部15bは、X、Y、Z軸の各軸の正の方向および負の方向の6方向のうち、変形面22が変形する方向、裏面23の法線ベクトルの方向以外の4方向を法線ベクトルとする4つの面が抽出されるまで、次のような処理を繰り返し行う。すなわち、第一の特定部15bは、未選択の面を1つ選択し、選択した面に対して上記で説明した処理を繰り返し行う。図12は、実施例に係る算出装置が実行する処理の一例を説明するための図である。図12の例は、変形面22が変形する方向、裏面23の法線ベクトルの方向以外の4方向を法線ベクトルとする4つの面のうち、3つの面24、25、26が示されている。図12の例が示す部品モデル20に対して、第一の特定部15bは、面24、25、26および面24に対向する面(図示せず)の4つの面を抽出する。以下の説明では、第一の特定部15bにより、面24、25、26および面24に対向する面の4つの面が抽出された場合を例に挙げて説明する。
このようにして、面24、25、26および面24に対向する面の4つの面が抽出されたら、第一の特定部15bは、抽出した4つの面、変形面22、裏面23を含有するバウンディングボックスのモデルを生成する。例えば、バウンディングボックスのモデルは、抽出した4つの面、変形面22、裏面23を外側面に接するモデルである。バウンディングボックスのモデルは、変形対象のモデルとして用いられる。図13は、第一の特定部が生成するバウンディングボックスの一例を示す図である。図13の例に示すように、第一の特定部15bは、変形面22、裏面23、面24、25、26および面24に対向する面の6つの面を含有するバウンディングボックスのモデル27を生成する。以下の説明では、第一の特定部15bがバウンディングボックスのモデル27を生成した場合を例に挙げて説明する。
次に、第一の特定部15bは、バウンディングボックスのモデル27の面と、部品モデル20とが干渉する領域である干渉領域を特定する。図14は、実施例に係る算出装置が実行する処理の一例を説明するための図である。図14の例では、バウンディングボックスのモデル27の面と、部品モデル20とが領域28において干渉する。図14の例において、第一の特定部15bは、バウンディングボックスのモデル27の面と、部品モデル20とが干渉する領域として、干渉領域28を特定する。
ここで、干渉領域は、変形対象のモデルであるバウンディングボックスのモデル27が変形する場合の固定面である。そのため、干渉領域が複数特定された場合には、固定面が複数存在することになり、バウンディングボックスのモデル27が固定されてしまい変形しないことになることが考えられる。そこで、第一の特定部15bは、特定した干渉領域の数が複数である場合には、干渉領域のエッジを有する部品モデルの面に接続された面を含むように、バウンディングボックスのモデルを拡大する。そして、第一の特定部15bは、再び、拡大後のバウンディングボックスのモデルの面と、部品モデルとが干渉する領域である干渉領域を特定する。このような処理を第一の特定部15bは、特定した干渉領域の数が1つとなるまで繰り返し行う。以下の説明では、第一の特定部15bにより、干渉領域28が特定された場合について説明する。
その後、第一の特定部15bは、バウンディングボックスのモデル27の面のうち、変形面22に接する面29に、特定した干渉領域28を投影し、面29に投影された領域を固定面の領域として特定する。図14の例に示すように、第一の特定部15bは、干渉領域28を面29に投影した領域30を固定面の領域として特定する。
第二の特定部15cは、第一の特定部15bにより特定された干渉領域28を面29に投影した固定面の領域のバウンディングボックスのモデル27上の位置に基づいて、バウンディングボックスのモデル27が変形する際の変位点を特定する。図15は、実施例に係る算出装置が実行する処理の一例を説明するための図である。例えば、第二の特定部15cは、図15の例に示すように、特定された固定面の領域30の所定の点、例えば、固定面の領域30の中心の点30aに対して、面29の辺の中で、最も距離が遠い辺31の中心の点31aを変位点として特定する。
第一の算出部15dは、変形面22に接するバウンディングボックスのモデル27の面29上の固定面の領域30の所定の位置から、変位点31aまでの距離と、変形面22から変形面22に対向する裏面23までの距離とに基づいて、次のような処理を行う。すなわち、第一の算出部15dは、部品モデル20の変形に関する物性値を算出する。図16は、実施例に係る算出装置が実行する処理の一例を説明するための図である。図16の例では、固定面の領域30のY座標の最大値の点から、変位点31aまでのY軸上の距離が「d」である場合が示されている。また、図16の例では、変形面22から裏面23までの距離が「h」である場合が示されている。図16の例の場合において、第一の算出部15dは、部品モデル20の変形のしにくさを示す物性値K((h/d)×α)を算出する。ここで、αは、所定の係数である。
第二の算出部15eは、物性値K、および、ユーザにより指定された部品モデル20の変形後の位置に基づいて、次のような処理を行う。すなわち、第二の算出部15eは、変位点31aの位置が、指定された部品モデル20の変形後の位置となるようにバウンディングボックスのモデル27を変形させた場合のバウンディングボックスのモデル27の姿勢を算出する。
具体例を挙げて説明する。図17は、実施例に係る算出装置が実行する処理の一例を説明するための図である。図17の例に示すように、第二の算出部15eは、変形面22に接するバウンディングボックスのモデル27の面29の二次元バネ・質点系モデル(平面モデル)32を生成する。以下の説明では、この平面モデル32を「変形基準モデル」と表記する。図17の例に示すように、変形基準モデル32は、格子状に配置された複数の質点32aと、質点32aを接続するバネ32bとを有するモデルである。例えば、変形基準モデル32は、いわゆるバネマスモデルである。質点32aのピッチ間隔は、物性値Kに基づいて定まる値である。
そして、第二の算出部15eは、変形基準モデル32を変形させる。図18は、実施例に係る算出装置が実行する処理の一例を説明するための図である。例えば、図18の例に示すように、第二の算出部15eは、まず、変位点31aを通るX平面(Y−Z平面)33上に、ユーザにより指定された部品モデル20の変形後の位置を示す三次元座標(x,y,z)の点を投影する。なお、図18の例では、かかる点がX平面33上に投影された点が、点34である。また、第二の算出部15eは、X平面33上において、変位点31aを通るような、物性値Kを半径とする円35を生成する。そして、第二の算出部15eは、X平面33上において、円35の中心35aと、点34とを結ぶ線分35を生成する。
その後、第二の算出部15eは、変形基準モデル32の変位点31aの位置が、点34の位置となるように変形させる。このとき、第二の算出部15eは、変形させた変形基準モデル32の形状が、線分36と接するように、変形基準モデル32を変形させる。
図19および図20は、物性値Kの値の大きさによって、変形させた際の変形基準モデルの形状が異なることを説明するための図である。図19の例における物性値Kの大きさは、図20の例における物性値Kの大きさよりも小さい。すなわち、図19の例における変形基準モデル32は、図20の例における変形基準モデル32より変形しやすい。ここで、図19の例における円35の半径は、図20の例における円35の半径よりも小さいため、図19の例に示す変形基準モデル32のほうが、図20の例に示す変形基準モデル32よりも変形の度合いが大きい。
そして、第二の算出部15eは、変形後の変形基準モデル32の各面の姿勢を算出する。ここで、姿勢は、X軸、Y軸、Z軸の各軸周りに基準面からどれだけ回転したかを回転度数で表したものである。
上述してきたように、第一の特定部15bは、部品モデル20の変形面22に外側面が接するバウンディングボックスのモデル27と、部品モデル20とが干渉する領域である干渉領域28を特定する。そして、第二の特定部15cは、第一の特定部15bにより特定された干渉領域28を面29に投影した固定面の領域30のバウンディングボックスのモデル27上の位置に基づいて、バウンディングボックスのモデル27が変形する際の変位点31aを特定する。続いて、第一の算出部15dは、変形面22に接するバウンディングボックスのモデル27の面29上の固定面の領域30の所定の位置から、変位点31aまでの距離dと、変形面22から変形面22に対向する裏面23までの距離hとに基づいて、次の処理を行う。すなわち、第一の算出部15dは、部品モデル20の変形に関する物性値K((h/d)×α)を算出する。その後、第二の算出部15eは、物性値K、および、ユーザにより指定された部品モデル20の変形後の位置に基づいて、次のような処理を行う。すなわち、第二の算出部15eは、変位点31aの位置が、指定された部品モデル20の変形後の位置となるようにバウンディングボックスのモデル27を変形させた場合のバウンディングボックスのモデル27の姿勢を算出する。このように、本実施例に係る算出装置10は、部品モデル20の物性値を算出し、算出した物性値を用いて、バウンディングボックスのモデル27の姿勢を算出する。したがって、本実施例に係る算出装置10によれば、簡易に変形後の部品モデル20に関する情報を得ることができる。
また、第二の算出部15eは、干渉領域28を面29に投影した領域をバウンディングボックスのモデル27が変形する際の固定面の領域30として、次のような処理を行う。すなわち、第二の算出部15eは、変位点31の位置が部品モデル20の変形後の位置となるようにバウンディングボックスのモデル27を変形させた場合の姿勢を算出する。このように、本実施例に係る算出装置10は、ユーザによる固定面などの境界条件の設定を行わずに、バウンディングボックスのモデル27の姿勢を算出する。したがって、本実施例に係る算出装置10によれば、簡易に変形後の部品モデル20に関する情報を得ることができる。
生成部15fは、第二の算出部15eにより算出された姿勢となるようにバウンディングボックスのモデル27を変形させた場合のバウンディングボックスのモデル27を表すCADデータを生成する。具体例を挙げて説明する。図21は、変形後の変形基準モデルの形状の一例を示す図である。また、図22は、バウンディングボックスのモデルを変形させた場合の一例を示す図である。第二の算出部15eは、図21の例に示すような変形後の変形基準モデル32の形状に沿って、FFD(Free-Form Deformation)により、次のような処理を行う。すなわち、第二の算出部15eは、図22の例に示すように、バウンディングボックスのモデル27を変形させ、変形後のバウンディングボックスのモデル27のCADデータを生成し、記憶部14に格納する。FFDについて説明する。図23は、FFDを説明するための図である。図23の例に示すように、FFDでは、物体を中に含むような直方体を均等に分割して得られる制御格子点群を作成し、制御格子点群に囲まれる空間を設定する。FFDでは、制御格子点群を動かすことで中の空間を歪め、それに伴って物体も一緒に変形させる。
そして、生成部15fは、指定された指示が変形指示である場合には、変形に係る情報を記録する。具体例を挙げて説明すると、生成部15fは、上述したアニメーション情報14bに新たなレコードを1つ追加する。そして、生成部15fは、新たなレコードの「タイムライン」の項目に、アニメーションを再生する順番を登録する。また、生成部15fは、「対象モデル」の項目に、部品モデル20のIDを登録する。また、生成部15fは、「移動/変形」の項目に、部品モデル20が変形するアニメーションを再生することを示す値、例えば、「1」を登録する。また、生成部15fは、「変位データ」の項目に、部品モデル20の変形に関するデータを識別するためのIDを登録する。
続いて、生成部15fは、上述した変形情報14cに新たなレコードを1つ追加する。そして、生成部15fは、新たなレコードの「変形変位データ」の項目に、上記の「変位データ」の項目に登録したIDと同一のIDを登録する。これにより、アニメーション情報14bと変形情報14cとが対応付けられる。また、生成部15fは、「面ID」の項目に、ユーザが入力部11を操作することによって指定された変形させる面22のIDが登録される。また、生成部15fは、「変形/解除」の項目に、部品モデル20を変形させる場合には部品モデル20を変形させることを示す値が設定される。なお、部品モデルの変形を解除する指示が入力された場合には、生成部15fは、部品モデル20の変形を解除することを示す値を、「変形/解除」の項目に設定することもできる。また、生成部15fは、「目標位置」の項目に、ユーザが入力部11を操作することによって指定された、部品モデル20の変形後の位置を示す三次元座標を登録する。また、生成部15fは、「相対姿勢(Rx,Ry,Rz)」の項目に、部品モデル20が変形する場合に、「面ID」に登録されたIDが示す面22の変形後の姿勢が変形前の姿勢からどれだけ変化するかを示す量を登録する。
また、生成部15fは、ユーザによって、移動指示が指定されると、指示受付画面で指定された回転指示、並進指示、回転軸、回転度数、移動量などに基づいて、ユーザによって指定された移動対象の部品モデルを移動させる。
そして、生成部15fは、指定された指示が移動指示である場合には、移動に係る情報を記録する。具体例を挙げて説明すると、生成部15fは、上述したアニメーション情報14bに新たなレコードを1つ追加する。そして、生成部15fは、新たなレコードの「タイムライン」の項目に、アニメーションを再生する順番を登録する。また、生成部15fは、「対象モデル」の項目に、部品モデルのIDを登録する。また、生成部15fは、「移動/変形」の項目に、部品モデルが移動するアニメーションを再生することを示す値、例えば、「0」を登録する。また、生成部15fは、「変位データ」の項目に、部品モデル20の移動に関するデータを識別するためのIDを登録する。
続いて、生成部15fは、上述した移動情報14dに新たなレコードを1つ追加する。そして、生成部15fは、新たなレコードの「移動変位データ」の項目に、上記の「変位データ」の項目に登録したIDと同一のIDを登録する。これにより、アニメーション情報14bと移動情報14dとが対応付けられる。また、生成部15fは、「相対位置(x,y,z)」の項目に、部品モデルが移動する場合に、移動後の部品モデルの位置が移動前の部品モデルの位置からどれだけ移動するかを示す情報を登録する。また、生成部15fは、「相対姿勢(Rx,Ry,Rz)」の項目に、部品モデルが変形する場合に、移動後の部品モデルの姿勢が移動前の部品モデルの姿勢からどれだけ変化するかを示す量を登録する。
再生部15gは、アニメーションを再生する。例えば、再生部15gは、入力部11からアニメーションを再生する指示が入力されると、次のような処理を行う。すなわち、再生部15gは、「対象モデル」の項目に登録されたIDが示すモデルの変位データを、「変位データ」の項目に登録されたIDをキーとして、「移動/変形」の項目に登録された値に対応する変形情報14cまたは移動情報14dから取得する。そして、再生部15gは、取得した変位データが示すアニメーションを表示部12に表示させる。このような処理を、再生部15gは、アニメーション情報14bの「タイムライン」の項目に登録された順番で行う。
制御部15は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路である。
[処理の流れ]
次に、本実施例に係る算出装置10の処理の流れについて説明する。図24は、実施例に係る算出処理の手順を示すフローチャートである。算出処理は、例えば、入力部11から、算出処理を実行するための指示を制御部15が受け付けたタイミングで、実行される。
図24に示すように、取得部15aは、記憶部14からCADデータ14aを取得し、取得したCADデータ14aが表す製品の複数の部品モデルを表示するように、表示部12の表示を制御する(S101)。続いて、取得部15aは、ユーザが入力部11を操作して変形対象または移動対象の部品モデルを指定したか否かを判定する(S102)。
変形対象または移動対象の部品モデルを指定していない場合(S102否定)には、取得部15aは、再び、S102の判定を行う。一方、変形対象または移動対象の部品モデルを指定した場合(S102肯定)には、取得部15aは、次のような処理を行う。すなわち、取得部15aは、移動対象の部品モデルを移動させるための指示である移動指示、および、変形対象の部品モデルを変形させるための指示である変形指示を受け付ける指示受付画面を表示するように、表示部12の表示を制御する(S103)。
そして、取得部15aは、移動指示または変形指示を受け付けたか否かを判定する(S104)。移動指示または変形指示を受け付けていない場合(S104否定)には、取得部15aは、再び、S104の判定を行う。一方、移動指示または変形指示を受け付けた場合(S104肯定)には、取得部15aは、受け付けた指示が変形指示であるか否かを判定する(S105)。
受け付けた指示が変形指示である場合(S105肯定)には、制御部15は、後述する変形処理を実行し(S106)、S109へ進む。一方、受け付けた指示が肯定指示でない場合、すなわち、移動指示である場合(S105否定)には、生成部15fは、次のような処理を行う。すなわち、生成部15fは、指示受付画面で指定された回転指示、並進指示、回転軸、回転度数、移動量などに基づいて、ユーザによって指定された移動対象の部品モデルを移動させる(S107)。そして、生成部15fは、上述した移動に係る情報を記録する(S108)。その後、取得部15aは、アニメーションの生成を終了するかまたは継続するかの指示を受け付ける画面を表示するように、表示部12の表示を制御する(S109)。
そして、取得部15aは、アニメーションの生成を終了するかまたは継続するかの指示を受け付けたか否かを判定する(S110)。アニメーションの生成を終了する指示および継続する指示のいずれの指示も受け付けていない場合(S110否定)には、取得部15aは、再び、S110の判定を行う。一方、アニメーションの生成を終了するかまたは継続するかの指示を受け付けた場合(S110肯定)には、取得部15aは、受け付けた指示が、アニメーションの生成を終了する指示であるか否かを判定する(S111)。受け付けた指示がアニメーションの生成を終了する指示ではない場合、すなわち、継続する指示である場合(S111否定)には、S101に戻る。一方、受け付けた指示がアニメーションの生成を終了する指示である場合(S111肯定)には、処理を終了する。
次に、変形処理について説明する。図25および図26は、実施例に係る変形処理の手順を示すフローチャートである。図25に示すように、第一の特定部15bは、変形指示が指定された部品モデルを表示するように、表示部12の表示を制御する(S201)。
そして、第一の特定部15bは、変形指示が指定された部品モデルの各面のうち、変形させる面(変形面)を指定する旨のメッセージを表示するように、表示部12の表示を制御する(S202)。続いて、第一の特定部15bは、ユーザにより変形面が指定されたか否かを判定する(S203)。ユーザにより変形面が指定されていない場合(S203否定)には、第一の特定部15bは、再び、S203の判定を行う。
一方、ユーザにより変形面が指定された場合(S203肯定)には、第一の特定部15bは、次のような処理を行う。すなわち、第一の特定部15bは、指定された部品モデルの変形後の位置を示す三次元座標(x,y,z)を指定する旨のメッセージを表示するように、表示部12の表示を制御する(S204)。
続いて、第一の特定部15bは、ユーザにより、部品モデルの変形後の位置を示す三次元座標(x,y,z)が指定されたか否かを判定する(S205)。ユーザにより、部品モデルの変形後の位置を示す三次元座標(x,y,z)が指定されていない場合(S205否定)には、第一の特定部15bは、再び、S205の判定を行う。一方、ユーザにより、部品モデルの変形後の位置を示す三次元座標(x,y,z)が指定された場合(S205肯定)には、第一の特定部15bは、変形面22をX平面、Y平面、Z平面のそれぞれに投影する(S206)。
次に、第一の特定部15bは、X平面、Y平面、Z平面のそれぞれに投影した変形面22の領域のうち、面積が最大となる領域を1つ特定し、特定した領域が投影された平面の法線ベクトルの方向を変形面が変形する方向として特定する(S207)。
続いて、第一の特定部15bは、特定した法線ベクトルの方向とは逆方向に存在する部品モデルの面を探索し、変形面から最も距離が離れている面を、変形面の裏側の面(裏面)として特定する(S208)。
そして、第一の特定部15bは、変形面に接続された面のうち、未選択の面があるか否かを判定する(S209)。未選択の面がある場合(S209肯定)には、第一の特定部15bは、変形面に接続された面のうち、未選択の面を1つ選択する(S210)。また、未選択の面がない場合(S209否定)には、第一の特定部15bは、選択済みの面に接続された未選択の面を1つ選択する(S216)。続いて、第一の特定部15bは、選択した面をX平面、Y平面、Z平面のそれぞれに投影する(S211)。そして、第一の特定部15bは、X平面、Y平面、Z平面のそれぞれに投影された面の領域のうち、面積が最大となる領域が投影された平面の法線ベクトルの方向を特定する(S212)。続いて、第一の特定部15bは、特定した法線ベクトルの方向が、次のような方向であるか否かを判定する。すなわち、第一の特定部15bは、法線ベクトルの方向が、変形面22が変形する方向、裏面23の法線ベクトルの方向、下記のS212で抽出された面がある場合には、抽出された面の法線ベクトルの方向のいずれの方向とも異なるか否かを判定する(S213)。
いずれかの方向と一致する場合(S213否定)には、S209に戻る。一方、いずれの方向とも異なる場合(S213肯定)には、第一の特定部15bは、選択した面を抽出する(S214)。そして、第一の特定部15bは、X、Y、Z軸の各軸の正の方向および負の方向の6方向のうち、変形面が変形する方向、裏面の法線ベクトルの方向以外の4方向を法線ベクトルとする4つの面が抽出されたか否かを判定する(S215)。4つの面が抽出されていない場合(S215否定)には、S209に戻る。
一方、4つの面が抽出された場合(S215肯定)には、第一の特定部15bは、抽出した4つの面、変形面、裏面を含有するバウンディングボックスのモデルを生成する(S217)。
次に、第一の特定部15bは、バウンディングボックスのモデルの面と、部品モデルとが干渉する領域である干渉領域を特定する(S218)。続いて、第一の特定部15bは、特定した干渉領域の数が1つであるか否かを判定する(S219)。特定した干渉領域の数が1つでない場合、すなわち、特定した干渉領域の数が複数である場合(S219否定)には、第一の特定部15bは、次のような処理を行う。すなわち、第一の特定部15bは、干渉領域のエッジを有する部品モデルの面に接続された面を含むように、バウンディングボックスのモデルを拡大する(S220)。そして、S218に戻り、第一の特定部15bは、再び、拡大後のバウンディングボックスのモデルの面と、部品モデルとが干渉する領域である干渉領域を特定し、以降の処理を行う。
一方、特定した干渉領域の数が1つである場合(S219肯定)には、第一の特定部15bは、バウンディングボックスのモデルの面のうち、変形面に接する面に、干渉領域を投影し、変形面に接する面に投影された領域を固定面の領域として特定する(S221)。
続いて、第二の特定部15cは、特定された固定面の領域の所定の点に対して、干渉領域が投影された面の辺の中で、最も距離が遠い辺の中心の点を変位点として特定する(S222)。
そして、第一の算出部15dは、固定面の領域の所定の位置から、変位点までの距離「d」と、変形面から変形面に対向する裏面までの距離「h」とに基づいて、部品モデルの変形に関する物性値K((h/d)×α)を算出する(S223)。
その後、第二の算出部15eは、物性値K、および、ユーザにより指定された部品モデルの変形後の位置に基づいて、次のような処理を行う。すなわち、第二の算出部15eは、変位点の位置が、指定された部品モデルの変形後の位置となるようにバウンディングボックスのモデルを変形させた場合のバウンディングボックスのモデル27の姿勢を算出する(S224)。
そして、第二の算出部15eは、変位点を通るX平面、Y平面、Z平面のいずれかの平面上に、ユーザにより指定された部品モデルの変形後の位置を示す三次元座標(x,y,z)の点を投影する(S225)。そして、第二の算出部15eは、かかる平面上において、変位点を通るような、物性値Kを半径とする円を生成する(S226)。そして、第二の算出部15eは、平面上において、円の中心と、投影された点とを結ぶ線分を生成する(S227)。
その後、第二の算出部15eは、変形基準モデルの変位点の位置が、平面に投影された点の位置となるように変形させる。このとき、第二の算出部15eは、変形させた変形基準モデルの形状が、線分と接するように、変形基準モデルを変形させる(S228)。そして、第二の算出部15eは、変形後の変形基準モデルの各面の姿勢を算出する(S229)。
続いて、第二の算出部15eは、変形後の変形基準モデルの形状に沿って、FFDにより、バウンディングボックスのモデルを変形させ、変形後のバウンディングボックスのモデルのCADデータを生成し、記憶部14に格納する(S230)。
そして、生成部15fは、上記で説明した変形に係る情報を記録し(S231)、処理結果を内部メモリに格納し、リターンする。
上述してきたように、本実施例に係る算出装置10は、部品モデル20の変形面22に外側面が接するバウンディングボックスのモデル27と、部品モデル20とが干渉する領域である干渉領域28を特定する。そして、算出装置10は、特定された干渉領域28を面29に投影した固定面の領域30のバウンディングボックスのモデル27上の位置に基づいて、バウンディングボックスのモデル27が変形する際の変位点31aを特定する。続いて、算出装置10は、変形面22に接するバウンディングボックスのモデル27の面29上の固定面の領域30の所定の位置から、変位点31aまでの距離dと、変形面22から変形面22に対向する裏面23までの距離hとに基づいて、次のような処理を行う。すなわち、算出装置10は、部品モデル20の変形に関する物性値K((h/d)×α)を算出する。その後、算出装置10は、物性値K、および、ユーザにより指定された部品モデル20の変形後の位置に基づいて、次のような処理を行う。すなわち、算出装置10は、変位点31aの位置が、指定された部品モデル20の変形後の位置となるようにバウンディングボックスのモデル27を変形させた場合のバウンディングボックスのモデル27の姿勢を算出する。このように、本実施例に係る算出装置10は、部品モデル20の物性値を算出し、算出した物性値を用いて、バウンディングボックスのモデル27の姿勢を算出する。したがって、本実施例に係る算出装置10によれば、簡易に変形後の部品モデル20に関する情報を得ることができる。
また、算出装置10は、特定された干渉領域28を面29に投影した領域をバウンディングボックスのモデル27が変形する際の固定面の領域30として、次のような処理を行う。すなわち、算出装置10は、変位点31の位置が部品モデル20の変形後の位置となるようにバウンディングボックスのモデル27を変形させた場合の姿勢を算出する。このように、本実施例に係る算出装置10は、ユーザによる固定面などの境界条件の設定を行わずに、バウンディングボックスのモデル27の姿勢を算出する。したがって、本実施例に係る算出装置10によれば、簡易に変形後の部品モデル20に関する情報を得ることができる。
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
例えば、実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更できる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
[算出プログラム]
また、上記の実施例で説明した算出装置10の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図27を用いて、上記の実施例で説明した算出装置10と同様の機能を有する算出プログラムを実行するコンピュータの一例を説明する。図27は、算出プログラムを実行するコンピュータを示す図である。
図27に示すように、コンピュータ300は、CPU310、ROM320、HDD330、RAM340を有する。CPU310、ROM320、HDD330、RAM340は、互いに、バス350を介して接続されている。
ROM320には、OSなどの基本プログラムが記憶されている。また、HDD330には、上記の実施例で示す取得部15a、第一の特定部15b、第二の特定部15c、第一の算出部15d、第二の算出部15e、生成部15f、再生部15gと同様の機能を発揮する算出プログラム330aが予め記憶される。なお、算出プログラム330aについては、適宜分離しても良い。例えば、算出部プログラム330aは、次のように分離できる。すなわち、取得部15aと同様の機能、第一の特定部15b、第二の特定部15c、第一の算出部15d、第二の算出部15e、生成部15fと同様の機能、再生部15gと同様の機能を発揮する3つのプログラムに分離できる。また、HDD330には、CADデータ、アニメーション情報、変形情報、移動情報などが設けられる。これらのCADデータ、アニメーション情報、変形情報、移動情報は、上述したCADデータ14a、アニメーション情報14b、変形情報14c、移動情報14dに対応する。
そして、CPU310が、算出プログラム330aをHDD330から読み出して実行する。
そして、CPU310は、CADデータ、アニメーション情報、変形情報、移動情報などを読み出してRAM340に格納する。さらに、CPU310は、RAM340に格納されたCADデータ、アニメーション情報、変形情報、移動情報などを用いて、算出プログラム330aを実行する。なお、RAM340に格納される各データは、常に全てのデータがRAM340に格納されなくともよい。処理に用いられるデータがRAM340に格納されれば良い。
なお、上記した算出プログラム330aについては、必ずしも最初からHDD330に記憶させておく必要はない。
例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ300がこれらからプログラムを読み出して実行するようにしてもよい。
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ300に接続される「他のコンピュータ(またはサーバ)」などにプログラムを記憶させておく。そして、コンピュータ300がこれらからプログラムを読み出して実行するようにしてもよい。