従来のバーチャルフィッティングは、既存のボディに対して、決められた衣服を着装するものであった。従来のバーチャルフィッティングでは、ユーザの体型に合わせた試着や、質感等をユーザに伝えることはできなかった。本実施形態に係るデータ処理装置100は、例えば、ユーザのボディに合わせたアバタに衣服を試着することで、きつい箇所や裾等の長さをユーザに提供する。また、データ処理装置100は、例えば、アニメーションによって、衣服の揺れ方や擦れた時の音を生成することで、従来技術では実現できなかった体験をユーザに提供する。データ処理装置100は、例えば、ユーザのサイズに合わせたボディの自動生成、ボディに合わせたきつい箇所の提示、布の揺れによる質感、擦れた音による質感の提示、アクセサリー等の装飾品や、着こなしによるフィッティング感を感じられるような技術を提供する。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、データ処理装置100の一例を概略的に示す。データ処理装置100は、バーチャルフィッティングに関する処理を実行する。データ処理装置100は、例えば、ユーザ300の体型に合わせてアバタを生成する。データ処理装置100は、例えば、生成したアバタが、ユーザ300によって選択された衣服を着装したアニメーションを生成する。データ処理装置100は、例えば、生成したアニメーションをユーザ300に提供する。
データ処理装置100は、例えば、デフォルトの体型を有するアバタのアバタデータを予め格納しておく。当該アバタデータは、複数の部位のそれぞれの寸法を含む。当該アバタデータは、各部位の寸法を変更可能に構成されていてよい。各部位の寸法は、直接変更可能であってよい。各部位の寸法は、抽象的なパラメータによって制御されてもよい。例えば、各部位の寸法は、寸法を示すパラメータを変更することによって変更可能であってよい。当該アバタデータは、各部位の寸法が変更された場合に、人物の体型として自然な形状になるように、当該部位に関連する他の部位の寸法が変化するように構成されていてよい。例えば、アバタデータは、ウエストの寸法が大きく変更された場合に、一部のみが大きくなるのではなく、その一部が大きくなるに伴って、近くの部位も大きくなるように構成されている。このように、当該アバタデータは、パラメトリック人体モデルによって実現されていてよい。
データ処理装置100は、ユーザ300の複数の部位のそれぞれの寸法を含むユーザ寸法データを取得する。データ処理装置100は、例えば、センサ450によってユーザ300を実測することによって生成されたユーザ寸法データを取得する。センサ450は、例えば、3次元形状を計測可能なセンサである。センサ450は、専用のスーツを着装したユーザ300を撮像することによって、ユーザ300の複数の部位を採寸するセンサであってもよい。センサ450は、ユーザ300の体型を計測可能であれば、どのようなセンサであってもよい。
また、データ処理装置100は、例えば、ユーザ300によって入力されたユーザ寸法データを取得してもよい。ユーザ300は、例えば、メジャー等を用いて自ら採寸したり、他者に採寸してもらうことによって、寸法を入力し得る。
データ処理装置100は、通信端末400から、ユーザ300のユーザ寸法データを受信してよい。通信端末400は、PC(Personal Computer)、タブレット端末、及びスマートフォン等であってよい。データ処理装置100と通信端末400とは、ネットワーク20を介して通信してよい。ネットワーク20は、インターネットを含んでよい。ネットワーク20は、LAN(Local Area Network)を含んでよい。ネットワーク20は、移動体通信ネットワークを含んでよい。移動体通信ネットワークは、3G(3rd Generation)通信方式、LTE(Long Term Evolution)通信方式、5G(5th Generation)通信方式、及び6G(6th Generation)通信方式以降の通信方式のいずれに準拠していてもよい。
データ処理装置100は、センサ150によってユーザ300を採寸することによって、ユーザ寸法データを取得してもよい。センサ150は、例えば、3次元形状を計測可能なセンサである。センサ150は、専用のスーツを着装したユーザ300を撮像することによって、ユーザ300の複数の部位を採寸するセンサであってもよい。
データ処理装置100は、取得したユーザ寸法データを用いて、アバタデータの寸法を調整する。データ処理装置100は、ユーザ寸法データが示すユーザの複数の部位の寸法と、アバタの複数の部位の寸法との誤差を最小に抑えるための反復最適化アルゴリズムを用いて、ユーザ300の体型に合わせたアバタデータを生成してよい。
図2は、データ処理装置100によるUI200の一例を概略的に示す。図3は、データ処理装置100によるUI210の一例を概略的に示す。ユーザ300は、例えば、通信端末400によってデータ処理装置100にアクセスすることによって、UI200及びUI210を利用し得る。
UI200の右側は、ユーザ300の複数の部位のそれぞれの寸法を示す。これらの寸法は、例えば、センサ150又はセンサ450によって測定された値である。ユーザ300は、例えば、表示された寸法を確認し、問題なければ、アバタの生成を指示する。
UI210の右側は、ユーザ300の複数の部位の寸法を入力する入力画面を示す。ユーザ300は、複数の部位の寸法を、すべて手動で入力してもよい。また、ユーザ300は、センサ150又はセンサ450によって測定された結果を編集することによって、ユーザ寸法データを生成してもよい。
データ処理装置100は、アバタの生成指示を受け付けたことに応じて、設定されているユーザ寸法データを用いて、UI200の左側や、UI210の左側に示すようなアバタデータを生成してよい。
データ処理装置100は、採寸されたユーザ300の複数の部位が、アバタのどの部位に対応するかを特定する。データ処理装置100は、例えば、ユーザ300の指示に従って、ユーザ300の部位と、その部位に対応するアバタの部位とを対応付ける。例えば、ユーザ300は、採寸しようとしている部位に対応するアバタの部位をUI(User Interface)で指定した後、その部位を採寸する。これにより、部位の対応付けが行われる。ユーザ300は、既に採寸しているデータが、アバタのどの部位に対応するのかを指定してもよい。
データ処理装置100は、ユーザ300の複数の部位のそれぞれについて、アバタの複数の部位のそれぞれとの関連度を登録してよい。当該登録は、ユーザ300によって行われてよく、データ処理装置100の管理者等によって行われてもよい。データ処理装置100は、ユーザ300の複数の部位のそれぞれについて、アバタの複数の部位のそれぞれとの関連度を登録した部位関連度データを格納してよい。関連度は、例えば、最小が0、最大が1等であってよい。
例えば、ユーザ300の一の部位と、当該部位に対応するアバタの部位とに、関連度1が登録され、当該部位に対応するアバタの部位から遠くなるにつれて低い関連度が登録され得る。例えば、ユーザ300のウエストに対して、アバタのウエストに1が登録され、ウエストから上下方向に離れるにつれて、0.9、0.8、0.7、・・・の関連度が登録される。
例えば、ウエストの寸法が大きい場合に腕周りの寸法も大きい傾向にある場合には、ユーザ300のウエストとアバタの腕回りとに対して、比較的高い関連度が登録され得る。
データ処理装置100は、例えばまず、アバタを採寸する。データ処理装置100は、採寸を、並行して部位ごとに実行してよい。部位の寸法には、長さの寸法と、周りの寸法との2種類が存在してよい。
図4は、長さの寸法について説明するための説明図である。長さの寸法として、データ処理装置100は、アバタ220の部位開始点に配置されたオブジェクト222から、部位終点に配置されたオブジェクト222までの距離を計算する。具体例として、腕の長さを採寸する場合に、データ処理装置100は、アバタ220の肩に配置したオブジェクト222と、アバタ220の手首に配置したオブジェクト222との距離を計算する。
図5は、周りの寸法について説明するための説明図である。周りの寸法として、データ処理装置100は、まず、採寸部位に対応する位置のプレーン224と、アバタ220のモデルのメッシュの面と辺の全交差点を計算する。そして、データ処理装置100は、交差点を多角形に繋ぎ合わせて、周辺の長さを計算する。
アバタ220は、パラメトリック人体モデルを用いて実現されており、各部位間に制約が存在することから、アバタ220の各部位の寸法を、ユーザ寸法データと一致するように一度に変更することは難しい。本実施形態に係るデータ処理装置100は、上述したように、ユーザ寸法データと、アバタの体型の誤差を最小に抑えるための反復最適化アルゴリズムを用いてよい。
例えば、データ処理装置100は、アバタの複数の部位のうちの一部の部位の寸法を、当該一部の部位に対応するユーザ300の部位の寸法との差異が少なくなるように変更し、かつ、部位関連度データを用いて、当該ユーザ300の部位に関連するアバタの部位の寸法を変更する。データ処理装置100は、関連度に応じた乗数を適用して、ユーザ300の部位に関連するアバタの部位の寸法を変更してよい。変更後、データ処理装置100は、ユーザ300の複数の部位と、ユーザ300の複数の部位に対応するアバタの複数の部位との合計誤差を算出する。
データ処理装置100は、このような処理を、例えば、合計誤差が予め定められた閾値より小さくなるまで繰り返す。また、データ処理装置100は、このような処理を、予め設定された最大実行回数まで繰り返すようにしてもよい。これにより、パラメトリック人体モデルにおける各部位間の制約を守りつつ、ユーザ300の体型との誤差がより少ないアバタを生成することができる。
図6は、データ処理装置100によるUI230の一例を概略的に示す。図6に例示するUI230はアバタ領域240及び設定領域250を含む。
アバタ領域240には、ユーザ300が選択した衣服を着装したアバタ242が表示される。アバタ242は、3D空間に配置され、アバタ242は、寄り引きや、360度で閲覧可能であってよい。
設定領域250は、商品説明252、カラバリ選択254、サイズ選択256、アクション選択258、カメラ選択260、及びキツイ箇所表示ボックス262を含む。商品説明252には、アクティブになっている衣服の詳細説明が表示される。詳細説明は、衣服の商品名を含んでよい。詳細説明は、衣服の値段を含んでよい。詳細説明は、衣服の説明を含んでよい。
カラバリ選択254は、衣服244の色の選択を受け付ける。データ処理装置100は、衣服244の色を、カラバリ選択254において選択された色に変更する。
サイズ選択256は、衣服244のサイズの選択を受け付ける。データ処理装置100は、衣服244のサイズを、サイズ選択256において選択されたサイズに変更する。
アクション選択258は、アバタ242のアクションの選択を受け付ける。データ処理装置100は、アクション選択258において選択されたアクションを、アバタ242が実行するアニメーションを生成して表示させる。
カメラ選択260は、カメラアングルの選択を受け付ける。データ処理装置100は、アバタ領域240の3D空間におけるカメラアングルを、カメラ選択260において選択されたカメラアングルに変更する。
キツイ箇所表示ボックス262は、着装した衣服244のキツイ箇所を表示する選択を受け付ける。データ処理装置100は、キツイ箇所表示ボックス262が選択された場合に、衣服244のきつい箇所を表示する。
図6に示すUI230は例示であり、構成等は変更可能である。また、UI230は、商品説明252、カラバリ選択254、サイズ選択256、アクション選択258、カメラ選択260、及びキツイ箇所表示ボックス262の全てを含まなくてもよく、これら以外を含んでもよい。例えば、UI230は、背景の選択や、ライティングの選択を受け付ける機能を有してもよい。
図7は、きつい箇所の表示の一例を概略的に示す。データ処理装置100は、アバタ242のアバタデータと、衣服244の衣服データに基づいて、衣服244のきつい箇所を判定し、表示に反映してよい。図7では、色の濃淡によって、きつさを表現した場合を例示している。
データ処理装置100は、静止した状態のアバタ242に対してキツイ箇所を表示してよく、また、アクション選択258において選択されたアクションをアバタ242に実行させながら、並行して、きつい箇所を表示するよう制御してもよい。これにより、ユーザ300に、選択した衣服を着装しながら動いたときに、どの部分にどれだけのきつさを感じるかを知得させることができ、ユーザ300に対して、商品の選択やサイズの選択の材料を提供することができる。
図8は、データ処理装置100の機能構成の一例を概略的に示す。データ処理装置100は、格納部102、登録部104、ユーザ寸法データ取得部106、アバタ寸法データ取得部108、関連度データ取得部110、調整部112、アバタデータ取得部114、衣服データ取得部116、生成部120、表示制御部122、表示指定受付部124、アクション選択部126、きつさ判定部128、余裕度判定部130、ウエスト指定受付部132、裾上げ特定部134、状態特定部136、装飾品特定部138、及びポケット特定部140を備える。なお、データ処理装置100がこれらの全てを備えることは必須とは限らない。
格納部102は、各種データを格納する。格納部102は、例えば、デフォルトの体型を有するアバタのアバタデータを格納する。格納部102は、例えば、複数の衣服の衣服データを格納する。
登録部104は、各種データを登録する。登録部104は、登録したデータを格納部102に格納する。
例えば、登録部104は、ユーザ300のユーザ寸法データを登録する。登録部104は、通信端末400からユーザ寸法データを受信して登録してよい。登録部104は、センサ150によって測定したユーザ寸法データを登録してもよい。
ユーザ寸法データは、例えば、身長、股下、首周り、肩幅、胸囲、アンダーバスト、腕周り、手首周り、腕の長さ、身丈、ウエスト、ウエスト(腰骨上)、ヒップ、太もも周り、膝周り、ふくらはぎ周り、及び足首周りの寸法を含む。なお、これらは例示であって、ユーザ寸法データは、これらのうちの一部を含まなくてもよく、これら以外を含んでもよい。
アバタの複数の部位のそれぞれの寸法を含むアバタ寸法データにおける複数の部位の数は、ユーザ寸法データにおける複数の部位の数よりも多い。ユーザ300が自身の身体のあらゆる寸法を測定すれば、正確なアバタを生成することができるが、特に一般のユーザにとっては困難である。しかし、一般のユーザが無理なく採寸できる箇所のみの採寸データでは、正確なアバタを生成することは難しい。
そこで、本実施形態に係るデータ処理装置100では、ユーザ寸法データに含まれる複数の部位のそれぞれに、アバタの複数の部位を対応付ける。例えば、アバタにおいて、ウエストに対して5つの寸法を有する場合、ユーザ寸法データのウエストを、当該5つのウエストの寸法に対応付ける。そして、例えば、5つのうちの真ん中の寸法と、ユーザ寸法データのウエストとの関連度を1とし、上下に離れる毎に、関連度を0.9、0.8としたり、0.8、0.6としたりする。登録部104は、このような部位同士の関連度を含む部位関連度データを登録してよい。
登録部104は、他の装置によって生成されたアバタデータを格納部102に格納してもよい。登録部104は、例えば、他の装置によって、ユーザ300の体型に合わせて生成されたアバタデータを格納部102に格納する。
ユーザ寸法データ取得部106は、ユーザ300のユーザ寸法データを取得する。ユーザ寸法データ取得部106は、格納部102からユーザ寸法データを読み出してよい。
アバタ寸法データ取得部108は、アバタのアバタ寸法データを取得する。アバタ寸法データ取得部108は、格納部102に格納されているアバタデータのアバタを採寸することによって、アバタ寸法データを生成してよい。アバタ寸法データ取得部108は、アバタの複数の部位について、並行して採寸を実行してよい。アバタ寸法データ取得部108は、複数の長さの寸法と、複数の周りの寸法とを採寸する。
関連度データ取得部110は、部位関連度データを取得する。関連度データ取得部110は、格納部102から部位関連度データを読み出してよい。
調整部112は、ユーザ寸法データ、アバタ寸法データ、及び部位関連度データを用いて、アバタデータを生成する。調整部112は、生成したアバタデータを格納部102に格納する。
調整部112は、ユーザ300の複数の部位と、ユーザ300の複数の部位に対応するアバタの複数の部位との合計誤差が小さくなるように、アバタの複数の部位のうちの一部の部位の寸法を、当該一部の部位に対応するユーザ300の部位の寸法との差異が少なくなるように変更し、かつ、変更に伴って、当該ユーザ300の部位に関連するアバタの部位の寸法を変更した後、合計誤差を算出する処理を繰り返す。調整部112は、部位関連度データを用いて、ユーザ300の部位に関連するアバタの部位の寸法を変更してよい。調整部112は、例えば、ユーザ300の一の部位に対応するアバタの一の部位の寸法を値Xの分、変更した場合に、ユーザ300の当該一の部位に対応するアバタの他の部位の寸法を、値Xに関連度を乗じた値の分、変更し得る。調整部112は、対象部位の寸法を直接変更してよい。調整部112は、対象部位の寸法を示すパラメータを変更してもよい。
調整部112は、合計誤差が予め定められた閾値より少なくなるまで、繰り返しを継続してよい。また、調整部112は、予め定められた回数、繰り返しを継続するようにしてもよい。閾値は、ユーザ300の採寸部位の数に応じて決定されてもよい。例えば、ユーザ300の採寸部位が多いほど、閾値を高くする。
調整部112は、ユーザ300の複数の部位と、当該複数の部位に対応するアバタの複数の部位との合計誤差を、重み付けをせずに算出してよく、重み付けをして算出してもよい。調整部112は、例えば、部位毎に重み付けをして合計誤差を算出する。部位毎の重み付けは、アバタが着装する衣服の種類に応じて設定され得る。例えば、衣服がスカートである場合には、ウエスト周りの重み付けを重くし、衣服がトップスの場合には、胸囲周りの重み付けを重くし得る。
アバタデータ取得部114は、アバタデータを取得する。アバタデータ取得部114は、例えば、調整部112によって、複数の部位の寸法がユーザ300の複数の部位の寸法に合わせて調整されたアバタのアバタデータを取得する。アバタデータ取得部114は、格納部102に格納されている当該アバタデータを読み出してよい。アバタデータ取得部114は、登録部104によって格納部102に格納された、他の装置によって生成されたアバタデータを格納部102から読み出してもよい。
衣服データ取得部116は、衣服の衣服データを取得する。衣服データ取得部116は、格納部102に格納されている衣服データを読み出してよい。衣服データ取得部116は、例えば、UI230においてユーザ300によって選択された衣服の衣服データを取得する。
生成部120は、アバタデータ取得部114が取得したアバタデータと、衣服データ取得部116が取得した衣服データに基づいて、アバタが衣服を着装している画像を生成する。生成部120は、例えば、アバタデータ及び衣服データに基づいて、アバタが衣服を着装しているアニメーションを生成する。生成部120は、生成した画像を格納部102に格納する。
表示制御部122は、格納部102に格納されている、生成部120によって生成された画像を表示するよう制御する。表示制御部122は、例えば、データ処理装置100が備えるディスプレイに画像を表示するよう制御する。また、表示制御部122は、例えば、通信端末400に対して画像を送信して、通信端末400に画像を表示させる。
表示指定受付部124は、衣服を着装したアバタの表示に関する指定を受け付ける。表示指定受付部124は、例えば、衣服の色の指定を受け付ける。具体例として、表示指定受付部124は、UI230におけるカラバリ選択254を介した色の指定を受け付ける。表示指定受付部124は、例えば、衣服のサイズの指定を受け付ける。具体例として、表示指定受付部124は、UI230におけるサイズ選択256を介したサイズの指定を受け付ける。表示指定受付部124は、例えば、カメラアングルの指定を受け付ける。具体例として、表示指定受付部124は、UI230におけるカメラ選択260を介したカメラアングルの指定を受け付ける。
生成部120は、表示指定受付部124が受け付けた指定に応じて、アバタが衣服を着装している画像を生成してよい。例えば、生成部120は、指定された色にした衣服をアバタが着装している画像を生成する。また、例えば、生成部120は、指定されたサイズにした衣服をアバタが着装している画像を生成する。例えば、生成部120は、指定されたカメラアングルで、アバタが衣服を着装している画像を生成する。
アクション選択部126は、アバタに実行させるアクションを選択する。アクション選択部126は、予め設定された複数のアクションから、アバタに実行させるアクションを選択してよい。アクション選択部126は、例えば、UI230におけるアクション選択258を介して指定されたアクションを選択する。また、アクション選択部126は、例えば、予め設定された複数のアクションから、順番にアクションを選択してもよい。生成部120は、アクション選択部126によって選択されたアクションを実行するアバタの動きに合わせて衣服が動くアニメーションを生成してよい。
きつさ判定部128は、アバタデータ及び衣服データに基づいて、アバタが着装している衣服のきつさを判定する。生成部120は、きつさ判定部128によって判定された衣服のきつさを反映した画像を生成してよい。きつさ判定部128は、例えば、アバタのサイズと衣服のサイズとを比較することによって、衣服のきつさの度合いを判定する。
きつさ判定部128は、衣服のシミュレーションであるクロスシミュレーションにおける伸縮パラメータのフォースから衣服のきつさを判定してもよい。例えば、衣服データは、衣服の素材の伸縮に関連する伸縮パラメータを含む。生成部120は、きつさ判定部128が伸縮パラメータに基づいて特定した、アバタの衣服を着装している部位の衣服から受ける力の度合を反映した画像を生成してよい。
伸縮パラメータは、衣服が当該衣服を着装している部位に対して力を与え始める衣服のメッシュの辺の長さの長さ閾値を含んでよい。伸縮パラメータは、衣服が破れる衣服のメッシュの辺の長さの破れ閾値を含んでよい。衣服の素材毎の伸縮パラメータは、例えば、ユーザ300や、データ処理装置100の管理者等によって登録される。また、きつさ判定部128が、衣服の素材毎の伸縮パラメータを、クロスシミュレーションの物性に基づいて決定してもよい。
きつさ判定部128は、例えばまず、対象となる衣服の衣服メッシュの初期状態を保存する。きつさ判定部128は、衣服メッシュの頂点毎に、1近傍頂点群を求めて、インデックスを保存し、頂点vと各1近傍頂点の距離(dv0)を保存する。きつさ判定部128は、衣服を装着したアバタのアニメーションのフレーム毎に、現状と初期状態を比較する。きつさ判定部128は、衣服メッシュの頂点毎に、頂点vと各1近傍頂点の距離(dvt)を計算し、初期距離情報との差分をとり(dv0-dvt)、負の差分を捨てて、整数のみを用いて平均をとり(d)、きつさa=(d-長さ閾値)/(破れ閾値-長さ閾値)を計算する。
生成部120は、衣服に、アバタの衣服を着装している部位の衣服から受ける力の度合に応じた色を反映した画像を生成してよい。例えば、生成部120は、各頂点のきつさaに基づいて、各頂点の色を決定する。生成部120は、元の衣服の色を反映しなくても、反映してもよい。例えば、元の衣服の色を反映しない場合、生成部120は、衣服のメッシュの各頂点の色を、きつさaに応じた色とする。例えば、きつさa=0を白色とし、きつさa=1を赤色とすると、きつさがきついほど色が赤い画像が生成される。生成部120は、衣服のメッシュの各頂点の色を、きつさaに応じた濃度の色としてもよい。
元の衣服の色を反映する場合、生成部120は、例えば、元の衣服の色に対して、きつさaに応じた色を加える。例えば、生成部120は、チョウテンシェーダによって頂点色を取得し、フラグメントシェーダに渡す。フラグメントシェーダは、テクスチャからサンプリングされた色と、事前に設定した色の加重平均をとる。これにより、元の衣服に対して、きつさaに応じた色が加わった画像を提供することができる。
余裕度判定部130は、アバタに衣服を着装させた状態における、アバタと衣服との距離に基づいて、アバタに対する衣服のサイズの余裕度を判定する。余裕度判定部130は、アバタを停止させた状態で余裕度を判定してよく、アバタを動かした状態で余裕度を判定してもよい。
例えば、アバタを停止させた状態で余裕度を判定する場合、余裕度判定部130は、衣服を着装したアバタにTポーズをとらせてよい。余裕度判定部130は、腕周り、首周り、及び肩幅等について、アバタのサイズと衣服のサイズの差を計算する。余裕度判定部130は、アバタから離れている衣服のメッシュの頂点の数と、各頂点についてアバタとの距離を計算する。余裕度判定部130は、距離の合計と、予め設定された閾値とを比較して、距離の合計が閾値より大きい場合に、ゆったり目シルエットであると判定する。余裕度判定部130は、距離の合計と閾値との差が大きいほど、余裕度が高いと判定してよい。余裕度判定部130は、衣服がアバタにぴったり着装されている場合における、距離の合計を算出して、当該距離の合計に基づいて、閾値を設定してよい。
アバタを動かした状態で余裕度を判定する場合、余裕度判定部130は、アバタに予め定められたアクションを実行させる。余裕度判定部130は、アバタのモーションに合わせて、リアルタイムクロスシミュレーションを行う。余裕度判定部130は、アバタから離れている衣服のメッシュの頂点の数と、各頂点についてアバタとの距離を計算する。余裕度判定部130は、距離の合計と、予め設定された閾値とを比較して、距離の合計が閾値より大きい場合に、ゆったり目シルエットであると判定する。余裕度判定部130は、距離の合計と閾値との差が大きいほど、余裕度が高いと判定してよい。
なお、リアルタイムで計算することから、余裕度判定部130は、頂点の距離を計算する部位を制限してもよい。例えば、余裕度判定部130は、対象の衣服がズボンである場合、ウエスト、太もも周り、及び裾に制限する。また、例えば、余裕度判定部130は、対象の衣服がスカートである場合、ウエスト下と裾に制限する。また、例えば、余裕度判定部130は、対象の衣服がTシャツである場合、腕周り及び首周りに制限する。
生成部120は、余裕度判定部130によって判定された余裕度を反映した画像を生成してよい。生成部120は、例えば、余裕度に応じた色を反映した画像を生成する。生成部120は、元の衣服の色を反映しなくても、反映してもよい。例えば、元の衣服の色を反映しない場合、生成部120は、衣服のメッシュの各頂点の色を、余裕度aに応じた色とする。例えば、余裕度=0を白色とし、余裕度=1を青色とすると、余裕があるほど色が青い画像が生成される。生成部120は、衣服のメッシュの各頂点の色を、余裕度に応じた濃度の色としてもよい。元の衣服の色を反映する場合、生成部120は、例えば、元の衣服の色に対して、余裕度に応じた色を加える。
格納部102は、衣服の素材毎の摩擦音を格納してもよい。素材毎の摩擦音は、シミュレーションによって生成されてよい。実際に各素材の衣服に摩擦を生じさせて録音してもよい。格納部102は、摩擦音格納部の一例であってよい。生成部120は、格納部102に格納されている摩擦音に基づいて、衣服を着装させたアバタの動きによって発生する衣服の摩擦に対応する摩擦音を生成してもよい。
生成部120は、衣服の摩擦している領域のサイズが大きいほど、大きい音量の摩擦音を生成してよい。生成部120は、衣服の摩擦の加速度が高いほど、高い音の摩擦音を生成してもよい。
生成部120は、例えばまず、衣服のメッシュの単位面積あたりの音量を設定する。生成部120は、摩擦継続単位時間辺りの音を設定する。生成部120は、衣服のメッシュ構造のアニメーションに対して衝突判定を行う。生成部120は、摩擦面、摩擦スピードから音量を計算する。生成部120は、摩擦の加速度から音の高さを計算してよい。生成部120は、摩擦の継続時間から、音声波形を生成する。生成部120は、生成した音声を格納部102に格納してよい。表示制御部122は、生成部120によって生成された画像を表示するとともに、音声を音声出力してよい。これにより、例えば、スポーツウェアや、レザーの衣服等、音が気になりやすい衣服を検討しているユーザ300に対して、どのような動きをすると、どのような音が発生するのかを直感的に把握させることができる。
ウエスト指定受付部132は、衣服がボトムスである場合に、衣服を配置するアバタのウエスト位置、及び衣服をアバタに固定する固定強度の指定を受け付ける。生成部120は、指定されたウエスト位置に、指定された固定強度で衣服をアバタに対して固定した画像を生成する。
ウエスト指定受付部132は、例えば、ユーザ300による、ウエスト位置及び固定強度の指定を受け付ける。ユーザ300は、例えば、自分がボトムスを身に着けるときに、ボトムスを固定したいウエスト位置と、ベルトによる固定強度とを指定する。具体例として、ユーザ300は、表示制御部122によって表示されたアバタに対して、ボトムスを固定したい位置を指定する。生成部120は、アバタのメッシュコライダーから、固定する位置の最寄りエッジループを抽出する。生成部120は、ボトムスのメッシュから、固定する位置の最寄エッジループを抽出する。
生成部120は、両方のエッジループの中心点を算出する。生成部120は、中心点が一致するように、ボトムスの位置を移動する。生成部120は、ボトムスのエッジループの各頂点の、メッシュコライダーのエッジループからの最寄頂点を選択する。
生成部120は、クロスシミュレーションを起動するときに、全ての頂点ペアで距離の制約条件を定義する。具体的に、生成部120は、条件の距離を0に近い値に設定する。メッシュコライダーと交差しないように、0には設定しない。また、生成部120は、条件の強さを0~1で設定する。生成部120は、ユーザ300によって指定された固定強度によって、条件の強さを0~1で設定する。
生成部120は、シミュレーションのソルバーのイテレーションの度に、既存の制約条件とともに、ウエスト位置の距離の制約条件を用いてボトムスのメッシュの頂点の位置を最適化する。すなわち、生成部120は、ウエスト位置が固定されるように、既存の制約条件に合わせて、ボトムスがアバタに固定されるように制約する。
生成部120は、イテレーションの度に、ボトムスのメッシュのエッジループの一定の割合の頂点同士の距離の制約条件の距離を超えてしまった場合は、イベントを発火してよい。例えば、アバタのパラメトリックモデルのコントローラでイベントを受け取り、定義されている最小ウエスト周囲よりウエストが大きい場合、アバタのエッジループの下のウエスト部分に影響が及ぶパラメータを少し少なくする。すなわち、生成部120は、アバタのウエストがボトムスのサイズよりも大きく、ボトムスが伸びている場合に、イベントを発火し、アバタ側で受け取って、アバタのウエストを小さくするとともに、アバタの肉がボトムスにめり込んでいるような画像を生成する。
裾上げ特定部134は、衣服がズボンである場合に、アバタに対応する衣服の丈、及び衣服の裾上げの種類を特定する。裾上げの種類は、例えば、シングル、ダブル、三つ折、及びカットソーを含む。生成部120は、裾上げ特定部134が特定した衣服の丈及び衣服の裾上げの種類に基づいて衣服データを変更する。生成部120は、例えば、衣服の衣服データの一部を、衣服の丈に基づいて削除し、当該衣服データの一部に対応する位置に、裾上げの種類に対応するテクスチャを適用した画像を生成する。
裾上げ特定部134は、事前準備として、ズボンのメッシュの股下の中心の頂点を特定する。裾上げ特定部134は、衣服データを解析することによって、当該頂点を特定してよく、また、ユーザ300による指定を受け付けることによって当該頂点を特定してもよい。
裾上げ特定部134は、ズボンの丈を特定する。裾上げ特定部134は、ユーザ300の股下の寸法(実測データ)を用いて、ユーザ300に適したズボンの丈を特定してよい。また、裾上げ特定部134は、ユーザ300による、ユーザ300が希望する丈の指定を受け付けてもよい。
生成部120は、オリジナルのズボンのメッシュを保存する。裾上げ特定部134は、股下の頂点から、特定した丈ほど下の位置に、メッシュの両端にエッジループ(頂点とエッジのシーケンス)を挿入する。生成部120は、これによって新しく追加した頂点に、周辺の頂点からUV座標を補完する。生成部120は、新しく追加した頂点より下の頂点を削除する。生成部120は、新しく追加した頂点と、それより上の、一定の範囲内の頂点を選択する。当該範囲は、特定した裾上げの種類に応じた範囲であってよい。生成部120は、選択中の頂点にテクスチャを適用する。当該テクスチャは、特定した裾上げの種類に応じたテクスチャであってよい。
生成部120は、選択中の頂点のクロスシミュレーションのパラメータを変更してもよい。生成部120は、例えば、特定した裾上げの種類に応じて、選択中の頂点のクロスシミュレーションのパラメータを変更する。
具体例として、生成部120は、裾上げの種類がシングルである場合、選択中の頂点の質量を2倍にし、折り曲げ制約条件の強さを2倍にしてよい(重み付けをしてもよい)。これにより、シングルの裾上げをすることによって、布が2重になった状態を疑似的にクロスシミュレーションに反映することができる。
生成部120は、裾上げの種類がダブルである場合、選択中の頂点の質量を4倍にし、折り曲げ制約条件の強さを4倍にしてよい(重み付けをしてもよい)。これにより、ダブルの裾上げをすることによって、布が4重になった状態を疑似的にクロスシミュレーションに反映することができる。
生成部120は、裾上げの種類が三つ折である場合、選択中の頂点の質量を3倍にし、折り曲げ制約条件の強さを3倍にしてよい(重み付けをしてもよい)。これにより、三つ折の裾上げをすることによって、布が3重になった状態を疑似的にクロスシミュレーションに反映することができる。
生成部120は、裾上げの種類がカットソーである場合、選択中の頂点の質量を2倍にし、折り曲げ制約条件の強さを2倍にしてよい(重み付けをしてもよい)。これにより、カットソーの裾上げをすることによって、布が2重になった状態を疑似的にクロスシミュレーションに反映することができる。
生成部120は、丈を変更する場合には、保存しておいたオリジナルのメッシュを用いて処理をやり直してよい。
状態特定部136は、衣服がトップスであり、かつ、衣服がジッパー又はボタンを有する場合に、ジッパー又はボタンの状態を特定する。例えば、データ処理装置100が、衣服を着装したアバタに対して、ジッパーの開閉状態及びボタンの開閉状態を変更可能なUIをユーザ300に提供する。ユーザ300は、衣服の着こなし方を検討すべく、ジッパーの開閉状態やボタンの開閉状態をUI上で変更する。
生成部120は、状態特定部136によって特定されたジッパー又はボタンの状態に応じた画像を生成する。生成部120は、衣服がジッパーを有する場合に、衣服データにおけるジッパーに対応する部分の折り曲げ制約条件を強くしてよい。生成部120は、ジッパーが閉じている状態の方が、ジッパーが開いている状態よりも折り曲げ制約条件を強くしてよい。生成部120は、ジッパーが半分開いている場合には、閉じている部分の折り曲げ制約条件を、開いている部分の折り曲げ制約条件よりも強くしてよい。
衣服がジッパーを有する場合において、生成部120は、衣服のメッシュのうち、両前裾の接続される縁の頂点ペアを選択する。生成部120は、選択した頂点の折り曲げ制約条件を強くする。生成部120は、ジッパーを再現できる固定値に設定してよい。生成部120は、頂点ペアの距離の制約条件を定義する。生成部120は、距離を0に設定し、強さを最大値に設定してよい。生成部120は、衣服を着装したアバタのアニメーションを表示している間に、ジッパーが空いている割合を自由に変更可能に構成してよく、ジッパーが開いている部分について、上記制約条件を無効にしてよい。
生成部120は、事前に、つながっているジッパーと、つながっていないジッパーの部分のメッシュを用意してよい。生成部120は、衣服を着装したアバタのアニメーションのフレーム毎に、前裾の各エッジに、当該メッシュを合わせて配置する。生成部120は、エッジの頂点が両方閉じてある場合、つながっているジッパーのメッシュを配置し、ペアのエッジにメッシュを配置しない。エッジの頂点が1つでも閉じていない場合、生成部120は、つながっていないジッパーのメッシュを配置する。
衣服がボタンを有する場合において、生成部120は、各ボタンについて、2つの頂点のペアを指定する。ボタン側は、前から見たボタンの上部と下部の周辺の2頂点であってよく、ボタンの穴の側は、穴の真上と真下の2頂点であってよい。生成部120は、指定した頂点の折り曲げ制約条件を、ボタンを再現できる固定値に設定してよい。生成部120は、頂点ペアの距離の制約条件を定義する。生成部120は、距離を0に設定し、強さを最大値に設定してよい。生成部120は、衣服を着装したアバタのアニメーションを表示している間に、各ボタンが空いているかどうかを自由に変更可能に構成してよく、ボタンが開いている部分について、上記制約条件を無効にしてよい。
装飾品特定部138は、衣服に接する装飾品を特定する。装飾品特定部138は、衣服にもともとついている装飾品を特定してよい。また、データ処理装置100が、衣服に対して装飾品を追加するUIをユーザ300に提供し、装飾品特定部138は、ユーザ300によって追加された装飾品を特定してもよい。生成部120は、衣服と装飾品との関係に応じた衣服の動きを生成してよい。
装飾品の例として、帽子、カバン、リュック、スカーフ、マフラー、ネクタイ、蝶ネクタイ、靴下、ストッキング、タイツ、ポケットチーフ、ブートニア、時計、ブレスレット、及び指輪等が挙げられる。装飾品は、3つのカテゴリに分けられてよい。カテゴリは、硬いものをクロスにつけるもの、物理シミュレーションで制御されている硬いものとクロスを相互にインタラクションさせるものと、1つのクロスをもう一つのクロスにつけるもの(例えば、ハンカチをジャケットにつける場合)とを含んでよい。
生成部120は、装飾品が小さな剛体である場合、クロスシミュレーションに反映しなくてよい。生成部120は、例えば、装飾品を、ユーザ300が指定した位置に配置する。生成部120は、クロスシミュレーションの起動時に、衣服メッシュ上の装飾品から最も近い頂点を検索する。生成部120は、検索した頂点と、周辺の頂点から平均の法線を計算する。生成部120は、起動時の配置情報を保存する。配置情報は、頂点と装飾品の相対的な位置と、法線と装飾品の相対的な向きを含んでよい。生成部120は、衣服を着装したアバタのアニメーションのフレーム毎に、頂点の位置と周辺の法線を計算する。そして、生成部120は、保存した配置情報を維持するように装飾品の位置と向きを変更する。これにより、小さな剛体である装飾品の自然な動きを表現することができる。
生成部120は、装飾品が剛体(小さな剛体以外の剛体)である場合、クロスシミュレーションに反映する。生成部120は、例えば、装飾品を、ユーザ300が指定した位置に配置する。生成部120は、装飾品のメッシュをクロスシミュレーション用のコライダーで囲む。生成部120は、貼り付け用のコライダーの頂点を指定する。生成部120は、クロスシミュレーションの起動時に、指定した頂点と衣服メッシュの最も近い頂点の間の距離の制約条件を定義する。生成部120は、衣服を着装したアバタのアニメーションのフレーム毎に、全制約条件を守るために、ソルバーの処理で、クロスの粒子だけでなく、コライダーも移動・回転させる。
生成部120は、装飾品がクロスである場合、衣服メッシュで装飾品を貼り付け可能な領域の頂点を選択する。生成部120は、装飾品メッシュで貼り付け用の領域の頂点を選択する。生成部120は、装飾品メッシュを衣服に配置する。生成部120は、クロスシミュレーションの起動時に、一定範囲内で、装飾品メッシュと衣服メッシュの選択された頂点から最も短距離の頂点ペア群を集めて、ペアから距離の制約条件を定義する。
ポケット特定部140は、衣服のポケット内の物を特定する。データ処理装置100は、衣服のポケットの中に、ユーザ300が指定した物を配置するUIをユーザ300に提供してよい。ユーザ300は、例えば、スマートフォン及び財布等をポケットに入れたときの衣服の状態を確認したい場合に、スマートフォン及び財布等を指定し得る。生成部120は、ポケット内の物に応じた衣服の動きを生成する。
生成部120は、ポケット特定部140が特定した物(特定物と記載する場合がある。)の形状を計算し、初期値とする。生成部120は、特定物と、衣服の素材の摩擦を設定する。生成部120は、ポケットの形状と、特定物のサイズから、ポケットを中心としたヒートマップを生成する。ヒートマップは、特定物がポケットの中で移動した際に、影響を受けるポケットの周りのメッシュの頂点の設定と移動量であってよい。特定物に近く、縫い目がないとき(ポケットの口)は、移動量が大きく、縫い合わせ側は、移動量が小さい。
生成部120は、アバタの動きに合わせた通常のクロスシミュレーション結果に対して、ヒートマップ部分について、補正を加える。生成部120は、ヒートマップ内の各頂点のベクトルの再計算によって補正を加える。生成部120は、特定物の重量による重力、アニメーションによる方向と力、ヒートマップによる方向と力の合成によって、各頂点の移動方向と移動量を計算する。
図9は、データ処理装置100として機能するコンピュータ1200のハードウェア構成の一例を概略的に示す。コンピュータ1200にインストールされたプログラムは、コンピュータ1200を、本実施形態に係る装置の1又は複数の「部」として機能させ、又はコンピュータ1200に、本実施形態に係る装置に関連付けられるオペレーション又は当該1又は複数の「部」を実行させることができ、及び/又はコンピュータ1200に、本実施形態に係るプロセス又は当該プロセスの段階を実行させることができる。そのようなプログラムは、コンピュータ1200に、本明細書に記載のフローチャート及びブロック図のブロックのうちのいくつか又はすべてに関連付けられた特定のオペレーションを実行させるべく、CPU1212によって実行されてよい。
本実施形態によるコンピュータ1200は、CPU1212、RAM1214、及びグラフィックコントローラ1216を含み、それらはホストコントローラ1210によって相互に接続されている。コンピュータ1200はまた、GPU1250を含む。コンピュータ1200はまた、通信インタフェース1222、記憶装置1224、DVDドライブ、及びICカードドライブのような入出力ユニットを含み、それらは入出力コントローラ1220を介してホストコントローラ1210に接続されている。DVDドライブは、DVD-ROMドライブ及びDVD-RAMドライブ等であってよい。記憶装置1224は、ハードディスクドライブ及びソリッドステートドライブ等であってよい。コンピュータ1200はまた、ROM1230及びキーボードのようなレガシの入出力ユニットを含み、それらは入出力チップ1240を介して入出力コントローラ1220に接続されている。
CPU1212は、ROM1230及びRAM1214内に格納されたプログラムに従い動作し、それにより各ユニットを制御する。グラフィックコントローラ1216は、RAM1214内に提供されるフレームバッファ等又はそれ自体の中に、CPU1212によって生成されるイメージデータを取得し、イメージデータがディスプレイデバイス1218上に表示されるようにする。
通信インタフェース1222は、ネットワークを介して他の電子デバイスと通信する。記憶装置1224は、コンピュータ1200内のCPU1212によって使用されるプログラム及びデータを格納する。DVDドライブは、プログラム又はデータをDVD-ROM等から読み取り、記憶装置1224に提供する。ICカードドライブは、プログラム及びデータをICカードから読み取り、及び/又はプログラム及びデータをICカードに書き込む。
ROM1230はその中に、アクティブ化時にコンピュータ1200によって実行されるブートプログラム等、及び/又はコンピュータ1200のハードウェアに依存するプログラムを格納する。入出力チップ1240はまた、様々な入出力ユニットをUSBポート、パラレルポート、シリアルポート、キーボードポート、マウスポート等を介して、入出力コントローラ1220に接続してよい。
プログラムは、DVD-ROM又はICカードのようなコンピュータ可読記憶媒体によって提供される。プログラムは、コンピュータ可読記憶媒体から読み取られ、コンピュータ可読記憶媒体の例でもある記憶装置1224、RAM1214、又はROM1230にインストールされ、CPU1212によって実行される。これらのプログラム内に記述される情報処理は、コンピュータ1200に読み取られ、プログラムと、上記様々なタイプのハードウェアリソースとの間の連携をもたらす。装置又は方法が、コンピュータ1200の使用に従い情報のオペレーション又は処理を実現することによって構成されてよい。
例えば、通信がコンピュータ1200及び外部デバイス間で実行される場合、CPU1212は、RAM1214にロードされた通信プログラムを実行し、通信プログラムに記述された処理に基づいて、通信インタフェース1222に対し、通信処理を命令してよい。通信インタフェース1222は、CPU1212の制御の下、RAM1214、記憶装置1224、DVD-ROM、又はICカードのような記録媒体内に提供される送信バッファ領域に格納された送信データを読み取り、読み取られた送信データをネットワークに送信し、又はネットワークから受信した受信データを記録媒体上に提供される受信バッファ領域等に書き込む。
また、CPU1212は、記憶装置1224、DVDドライブ(DVD-ROM)、ICカード等のような外部記録媒体に格納されたファイル又はデータベースの全部又は必要な部分がRAM1214に読み取られるようにし、RAM1214上のデータに対し様々なタイプの処理を実行してよい。CPU1212は次に、処理されたデータを外部記録媒体にライトバックしてよい。
様々なタイプのプログラム、データ、テーブル、及びデータベースのような様々なタイプの情報が記録媒体に格納され、情報処理を受けてよい。CPU1212は、RAM1214から読み取られたデータに対し、本開示の随所に記載され、プログラムの命令シーケンスによって指定される様々なタイプのオペレーション、情報処理、条件判断、条件分岐、無条件分岐、情報の検索/置換等を含む、様々なタイプの処理を実行してよく、結果をRAM1214に対しライトバックする。また、CPU1212は、記録媒体内のファイル、データベース等における情報を検索してよい。例えば、各々が第2の属性の属性値に関連付けられた第1の属性の属性値を有する複数のエントリが記録媒体内に格納される場合、CPU1212は、当該複数のエントリの中から、第1の属性の属性値が指定されている条件に一致するエントリを検索し、当該エントリ内に格納された第2の属性の属性値を読み取り、それにより予め定められた条件を満たす第1の属性に関連付けられた第2の属性の属性値を取得してよい。
上で説明したプログラム又はソフトウエアモジュールは、コンピュータ1200上又はコンピュータ1200近傍のコンピュータ可読記憶媒体に格納されてよい。また、専用通信ネットワーク又はインターネットに接続されたサーバシステム内に提供されるハードディスク又はRAMのような記録媒体が、コンピュータ可読記憶媒体として使用可能であり、それによりプログラムを、ネットワークを介してコンピュータ1200に提供する。
本実施形態におけるフローチャート及びブロック図におけるブロックは、オペレーションが実行されるプロセスの段階又はオペレーションを実行する役割を持つ装置の「部」を表わしてよい。特定の段階及び「部」が、専用回路、コンピュータ可読記憶媒体上に格納されるコンピュータ可読命令と共に供給されるプログラマブル回路、及び/又はコンピュータ可読記憶媒体上に格納されるコンピュータ可読命令と共に供給されるプロセッサによって実装されてよい。専用回路は、デジタル及び/又はアナログハードウェア回路を含んでよく、集積回路(IC)及び/又はディスクリート回路を含んでよい。プログラマブル回路は、例えば、フィールドプログラマブルゲートアレイ(FPGA)、及びプログラマブルロジックアレイ(PLA)等のような、論理積、論理和、排他的論理和、否定論理積、否定論理和、及び他の論理演算、フリップフロップ、レジスタ、並びにメモリエレメントを含む、再構成可能なハードウェア回路を含んでよい。
コンピュータ可読記憶媒体は、適切なデバイスによって実行される命令を格納可能な任意の有形なデバイスを含んでよく、その結果、そこに格納される命令を有するコンピュータ可読記憶媒体は、フローチャート又はブロック図で指定されたオペレーションを実行するための手段を作成すべく実行され得る命令を含む、製品を備えることになる。コンピュータ可読記憶媒体の例としては、電子記憶媒体、磁気記憶媒体、光記憶媒体、電磁記憶媒体、半導体記憶媒体等が含まれてよい。コンピュータ可読記憶媒体のより具体的な例としては、フロッピー(登録商標)ディスク、ディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM又はフラッシュメモリ)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、静的ランダムアクセスメモリ(SRAM)、コンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク、メモリスティック、集積回路カード等が含まれてよい。
コンピュータ可読命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又はSmalltalk(登録商標)、JAVA(登録商標)、C++等のようなオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語のような従来の手続型プログラミング言語を含む、1又は複数のプログラミング言語の任意の組み合わせで記述されたソースコード又はオブジェクトコードのいずれかを含んでよい。
コンピュータ可読命令は、汎用コンピュータ、特殊目的のコンピュータ、若しくは他のプログラム可能なデータ処理装置のプロセッサ、又はプログラマブル回路が、フローチャート又はブロック図で指定されたオペレーションを実行するための手段を生成するために当該コンピュータ可読命令を実行すべく、ローカルに又はローカルエリアネットワーク(LAN)、インターネット等のようなワイドエリアネットワーク(WAN)を介して、汎用コンピュータ、特殊目的のコンピュータ、若しくは他のプログラム可能なデータ処理装置のプロセッサ、又はプログラマブル回路に提供されてよい。プロセッサの例としては、コンピュータプロセッサ、処理ユニット、マイクロプロセッサ、デジタル信号プロセッサ、コントローラ、マイクロコントローラ等を含む。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。その様な変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
特許請求の範囲、明細書、及び図面中において示した装置、システム、プログラム、及び方法における動作、手順、ステップ、及び段階などの各処理の実行順序は、特段「より前に」、「先立って」などと明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、及び図面中の動作フローに関して、便宜上「まず、」、「次に、」などを用いて説明したとしても、この順で実施することが必須であることを意味するものではない。