1.構成
図1は一実施形態に係る3Dデータシステム1の全体構成を例示する図である。3Dデータシステム1は、3Dモデルを表す3Dデータセットをアプリケーションに提供するシステムである。3Dモデルとは、3次元仮想空間において立体を表すデータをいう。3Dモデルは、少なくとも、3D被写体の表面形状及び表面の色彩に関する情報を含む。3Dデータセットは、例えば、被写体の表面を撮影した画像を用いて生成される。「被写体」は3Dデータセットを生成する対象となる物体をいい、人間や動物などの生物、及び人形、衣服、又は家具などの無生物を含む。
3Dデータシステム1は、クライアント端末10、サーバ20、及びサービスアプリケーション30を備える。サービスアプリケーション30は、3Dデータを用いたサービスをユーザに提供するためのソフトウェア(又はプログラム)である。サービスアプリケーション30はどのようなハードウェア装置に実装されてもよく、一例においてはサーバ20とは別のサーバに実装されるウェブアプリケーションである。あるいは、サービスアプリケーション30は、その一部又は全部がクライアント端末10に実装されてもよい。クライアント端末10は、サービスアプリケーション30のUI(User Interface)を提供するための端末であり、例えばスマートフォン、タブレット端末、ラップトップ型コンピュータ、又はゲーム機器等のコンピュータである。サーバ20はいわゆるクラウドサーバである。サーバ20は3Dデータセットを複数記憶しており、サービスアプリケーション30からの要求に応じて3Dデータセットを記憶部から読み出し、読み出した3Dデータセットをサービスアプリケーション30に提供する。クライアント端末10は通信回線2を介してサーバ20に接続されている。通信回線2は、例えば、インターネット、移動体通信網、電話回線、又はLAN(Local Area Network)を含む。
クライアント端末10には、オペレーティングシステム(以下「OS」という)及びアプリケーションプログラム等のソフトウェアがインストールされ、インストールされたアプリケーションはユーザにより使用される。特に、クライアント端末10には、3Dデータセットを利用するアプリケーションがインストールされている。図1では図面を簡単にするために単一のクライアント端末10を図示しているが、複数のクライアント端末10が3Dデータシステム1に含まれてもよい。
図2は、3Dデータシステム1の機能構成を例示するブロック図である。3Dデータシステム1は、要求送信手段31、応答受信手段32、処理手段33、データ送信手段34、出力手段35、記憶手段21、要求受信手段22、認証手段23、応答送信手段24、シェア手段25、課金手段26、及びUI手段11を有する。
サーバ20において、記憶手段21は、3Dデータセットに関するデータベースを記憶する。このデータベースには、3Dデータセットのデータ識別子、3Dデータセットに含まれるデータ本体において被写体であるユーザ(又はモデル化されたユーザ)のユーザ識別子、及びユーザから3Dデータセットをシェアされたユーザのユーザ識別子の対応関係が記録される。さらにこのデータベースには、3Dモデルを表すデータ本体、そのデータ本体をシェアする範囲の制限事項を記述したシェア制限情報、及びその3Dモデルの処理に関する制限事項を記述した処理制限情報が記録される。なお、データ本体等、一部のデータはこのデータベースではなく、外のデータベースに記録されてもよい。3Dデータセットは、例えば、3Dスキャナ(図示略)により生成される。3Dスキャナは、被写体の表面形状及び表面の色彩を読み取り3Dデータセットを生成する装置である。
サービスアプリケーション30において、要求送信手段31は、3Dデータセットに対する処理要求をサーバ20に送信する。この処理要求は、3Dデータセットを識別するデータ識別子、及びユーザを識別するユーザ識別子を含む。なお、サービスアプリケーション30は、例えば、クライアント端末10においてUI手段11を介してユーザが入力する指示に応じて処理要求を送信する。UI手段11は、ユーザに対するユーザインターフェースを提供する。
サーバ20において、要求受信手段22は、サービスアプリケーション30から処理要求を受信する。認証手段23は、記憶手段21に記憶されている対応関係及び3Dデータセットに含まれるシェア制限情報に基づいて、処理要求に係る処理を行うことを認証する。応答送信手段24は、処理を行うことが認証された場合、処理要求に対する応答として、データ本体の少なくとも一部及び処理制限情報の少なくとも一部をサービスアプリケーション30に送信する。
サービスアプリケーション30において、応答受信手段32は、サーバ20から応答を受信する。処理手段33は、処理制限情報による制限事項の範囲内で、データ本体に対し処理を行う。出力手段35は、処理手段33における処理の結果をクライアント端末10において出力(例えば表示)するためのデータを出力する。データ送信手段34は、処理手段33による処理が3Dモデルに編集を行うものである場合、編集の内容を示す編集データを、例えばサーバ20を介する経路とは別の経路で他のクライアント端末10に送信する。
サービスアプリケーション30から送信される処理要求が3Dデータのシェアに関するものであって、シェア元のユーザからシェア先のユーザへ3Dデータセットをシェアすることが認証された場合、シェア手段25は、シェア元のユーザからシェア先のユーザへ3Dデータセットをシェアした旨を記憶手段21に記憶させる。課金手段26は、クライアント端末10から処理要求を受信した回数又は頻度に基づいてSDKのライセンス料を課金する。
この例において、要求送信手段31、応答受信手段32、処理手段33、及びデータ送信手段34はサービスアプリケーション30が有する機能である。前述のとおり、これらの機能は、どのハードウェアに実装されてもよい。一例において、これらの機能全てがクライアント端末10に実装される。別の例において、これらの機能全てがサーバ20とは別のサーバに実装されてもよい。さらに別の例において、これらの機能の一部がクライアント端末10に、他の一部がサーバ装置に実装されてもよい。記憶手段21、要求受信手段22、認証手段23、応答送信手段24、シェア手段25、及び課金手段26はサーバ20に実装される。なお、クライアント端末10及びサーバ20における機能の分担はあくまで例示であり、機能の分担は図2の例に限定されない。
図3は、クライアント端末10のハードウェア構成を例示するブロック図である。プロセッサ101は、クライアント端末10の他の要素を制御するプロセッサである。メモリ102は、プロセッサ101がプログラムを実行するためのワークエリアとして機能する記憶装置であり、例えばRAM(Random Access Memory)を含む。記憶装置103は各種のプログラム及びデータを記憶する記憶装置であり、例えば、SSD(Solid State Drive)又はHDD(Hard Disk Drive)を含む。通信IF104は、所定の通信規格(例えばTCP/IP)に従った通信を行うためのインターフェースであり、例えばNIC(Network Interface Card)を含む。UI部105は例えばタッチスクリーンとキーとを備える。UI部105はクライアント端末10に内蔵されていてもよく、また、外付けされて外部接続されるものであってもよい。
この例で、記憶装置103は、OSのプログラム、及びその他のアプリケーションプログラムを記憶する。プロセッサ101が記憶装置103に記憶されたプログラムを読み出して実行することにより、図2に示される機能が実装される。プログラムを実行しているプロセッサ101及び/又は通信IF104は、要求送信手段31、応答受信手段32及びデータ送信手段34の一例である。プログラムを実行しているプロセッサ101は、処理手段33の一例である。
図4は、サーバ20のハードウェア構成を例示するブロック図である。プロセッサ201は、サーバ20の他の要素を制御するプロセッサである。メモリ202は、プロセッサ201がプログラムを実行するためのワークエリアとして機能する記憶装置であり、例えばRAM(Random Access Memory)を含む。記憶装置203は各種のプログラム及びデータを記憶する記憶装置であり、例えば、SSD(Solid State Drive)又はHDD(Hard Disk Drive)を含む。通信IF204は、所定の通信規格(例えばTCP/IP)に従った通信を行うためのインターフェースであり、例えばNIC(Network Interface Card)を含む。
この例で、プロセッサ201が記憶装置203に記憶されたコンピュータプログラムを実行することにより、図2の機能が実装される。記憶装置203は記憶手段21の一例である。プログラムを実行しているプロセッサ201及び/又は通信IF204は、要求受信手段22及び応答送信手段24の一例である。プログラムを実行しているプロセッサ201は、認証手段23、シェア手段25、及び課金手段26の一例である。
図5は3Dデータシステム1のソフトウェア構成を例示するブロック図である。この例において、サービスアプリケーション30は、一部がネットワーク上のサーバ(図示略)に実装される。具体的には、要求送信部351、応答受信部352、処理部353、データ送信部354、及び出力部355がサーバに実装される。他の一部、具体的には、表示制御部155及びUI部156はクライアント端末10に実装される。サービスアプリケーション30は、3Dデータセットを利用したサービスをユーザに提供する。サービスアプリケーション30は例えば、IDカード、名刺、バーチャルコミュニケーション、ビデオゲーム、着せ替え(又は試着)、採寸、バーチャルシアター、フィットネス、医療、又は映画製作を提供するアプリケーションである。
IDカードは、ユーザの身分証明に用いられるアプリケーションである。IDカードにおいて、ユーザの写真の代わりに3Dモデルが表示される。名刺は、ユーザの個人情報を他のユーザに伝達するためのアプリケーションである。名刺のデータには、ユーザの3Dデータセットが含まれる。例えばユーザUaの名刺データは、別のユーザUbに出力される。ユーザUbは自分のクライアント端末10においてユーザUbの3Dモデルを含む名刺データを閲覧することができる。
バーチャルコミュニケーションは、仮想空間において他のユーザとコミュニケーションを行うためのアプリケーションである。仮想空間において、各ユーザはいわゆるアバターを用いて表示される。このアバターとして本実施形態に係る3Dモデルが用いられる。バーチャルコミュニケーションを用いれば、例えば遠隔地にいる複数のユーザが会議をすることができる。
ビデオゲームにおいて、ゲーム中に登場するキャラクターとして、本実施形態に係る3Dモデルが用いられる。例えば、格闘ゲームにおいて、プレイヤーは、自身の3Dモデルをプレイヤーキャラクターとして用いることができる。着せ替えは、仮想空間において人体モデルに服を着せるアプリケーションである。この人体モデルとして、本実施形態に係る3Dモデルが用いられる。人体モデルは服を着た状態で仮想空間内を移動する(いわゆるランウェイウォーク)。採寸は、被写体の体のサイズ(例えば、身長、胸囲、胴囲等)を測定するアプリケーションである。
バーチャルシアターは、仮想空間において、仮想キャラクター(又はアバター)に実演(例えば、歌唱、演劇、ダンス等)を行わせ、その実演を鑑賞するアプリケーションである。実演は、例えば仮想空間上のステージで行われる。ユーザは、仮想カメラで撮影されたこの実演を鑑賞することができる。仮想カメラ(又は視点)の位置は例えばユーザの指示に応じて制御される。ユーザは、特定の演者に仮想カメラを寄せたり、ステージを俯瞰したり、仮想カメラの位置を自在に制御できる。
フィットネスは運動の前後において被写体の体を3Dモデル化して記録するアプリケーションである。記憶された3Dモデルを比較することにより、運動により筋肉が増強された部分や、余分なぜい肉が落ちた部分を視覚的に確認することができる。医療は治療の前後において被写体の体を3Dモデル化して記録するアプリケーションである。記憶された3Dモデルを比較することにより、治療、投薬、リハビリの効果を視覚的に確認することができる。映画製作は、映画の中に3Dモデルを登場させるアプリケーションである。
サービスアプリケーション30は、要求送信部351(要求送信手段31の一例)、応答受信部352(応答受信手段32の一例)、処理部353(処理手段33の一例)、データ送信部354(データ送信手段34の一例)、及び出力部355(出力手段35の一例)を含む。要求送信部351は、3Dモデルを表すデータ本体、当該データ本体をシェアする範囲の制限事項を記述したシェア制限情報、及び当該3Dモデルの処理に関する制限事項を記述した処理制限情報を含む3Dデータセットを識別するデータ識別子、及びユーザを識別するユーザ識別子を含む3Dデータセットに対する処理要求をサーバ20に送信する。応答受信部352は、サーバ20から応答を受信する。処理部353は、処理制限情報による制限事項の範囲内で、データ本体に対し処理を行う。出力部355は、処理部353における処理の結果をクライアント端末10において出力(例えば表示)するためのデータを出力する。データ送信部354は、処理部353による処理が3Dモデルに編集を行うものである場合、編集の内容を示す編集データを、サーバ20を介する経路とは別の経路で他のクライアント端末10に送信する。
要求送信部351、応答受信部352、処理部353、及び出力部355は、SDKとしてサービスアプリケーション30の開発者に提供される。サービスアプリケーション30の開発者は、提供されるSDKを用いてサービスアプリケーション30の開発を行う。表示制御部155は、3Dモデルの表示を行う。例えば、表示制御部155は、プログラミングされた3Dモデルの動き(例えば、ダンス又はゲームキャラのアクション等)や仮想カメラの視点の動きに従って3DモデルをUI部156に表示する。
また、プロセッサ201が記憶装置203に記憶されたコンピュータプログラムを実行することにより、図5の要求受信部252(要求受信手段22の一例)、認証部253(認証手段23の一例)、応答送信部254(応答送信手段24の一例)、シェア部255(シェア手段25の一例)、課金部256(課金手段26の一例)、及び取得部257がサーバ20に実装される。
記憶部251は記憶手段21の一例である。記憶部251は、3Dデータセットのデータ識別子、3Dデータセットに含まれるデータ本体において被写体であるユーザのユーザ識別子、及びユーザから3Dデータセットをシェアされたユーザのユーザ識別子の対応関係を記憶する。要求受信部252は、クライアント端末10から処理要求を受信する。認証部253は、記憶部251に記憶されている対応関係及び3Dデータセットに含まれるシェア制限情報に基づいて、処理要求に係る処理を行うことを認証する。応答送信部254は、処理を行うことが認証された場合、処理要求に対する応答として、データ本体の少なくとも一部及び処理制限情報の少なくとも一部をクライアント端末10に送信する。
シェア部255は、シェア元のユーザからシェア先のユーザへ3Dデータセットをシェアすることが認証された場合、シェア元のユーザからシェア先のユーザへ3Dデータセットをシェアした旨を記憶部251に記憶させる。課金部256は、クライアント端末10から受信した処理要求に応じて(例えば、処理要求を受信した回数又は頻度に基づいて)SDKのライセンス料を課金する。取得部257は、3Dデータセットを取得し、記憶部251に記憶する。
記憶部251には、3Dデータベース、及びシェアデータベースが記憶されている。3Dデータベースには、3Dデータセットが、3Dデータセットを識別する識別子(データID)、及びその3Dデータセットに含まれるデータ本体において被写体であるユーザを識別する識別子(ユーザID)に対応付けて記憶される。シェアデータベースには、3Dデータセットのそれぞれについて、どのユーザにシェアされたか(どのユーザの使用が許可されているか)を示す情報が記憶される。
図6は、3DデータセットD1の内容を例示する図である。図6の例で、3DデータセットD1は、データ本体D11、シェア制限情報D12、処理制限情報D13、及びユーザ属性情報D14を含む。データ本体D11は、3Dモデルを表すデータ(以下「3Dモデリングデータ」という)である。3Dモデリングデータは、例えば、3Dモデルのスキンデータ及びボーンデータと含む。スキンデータは、3Dモデルの対象である被写体の表面の立体形状及び色彩を表すデータである。ボーンデータは、3Dモデルに動き(モーション)を与えるための仮想的な構造(ボーン)を表すデータである。ユーザ属性情報D14は、3Dモデルの被写体となったユーザの属性を示す情報である。一例において、ユーザ属性情報D14は、被写体のユーザIDを含む。ユーザ属性情報D14は、ユーザIDに代えて、又は加えて、被写体の年齢、性別、職業等の属性を含んでもよい。
3Dモデリングデータに含まれるスキンデータは例えば、以下のようにして生成される。まず、3Dスキャナ(図示略)等のデータ生成装置において、対象となる被写体がカメラにより撮影され、撮影画像が得られる。対象被写体はあらかじめ決められたポーズで撮影される。3Dスキャナは、撮影画像に加え、カメラまでの距離を計測するための画像(例えば赤外線のパターン図形の像。以下「パターン画像」という)を取得する。3Dスキャナは、カメラからパターン画像における各点までの距離、すなわち対象被写体の表面の立体形状を、パターン画像を用いて計算し、計算された立体形状に対して撮影画像を貼り付ける。こうしてスキンデータが得られる。
また、3Dスキャナは、3Dモデリングデータから特徴点を取得する。特徴点は例えば、3Dモデルにおける、いわゆるボーンの端点である。特徴点の取得には、例えば、特許第6489726号公報に記載した手法が用いられる。また、3Dスキャナは、複数の特徴点の位置関係を示す特徴量を計算する。特徴点に関する特徴量を表すデータがボーンデータとして用いられる。さらに、3Dスキャナは、被写体であるユーザから、そのユーザの属性、シェアの制限に関する情報、及び処理の制限に関する情報の入力を受け付ける。3Dスキャナは、これら入力された情報に基づいて、ユーザ属性情報D14、シェア制限情報D12、及び処理制限情報D13を生成する。3Dスキャナは、これらの情報を所定のデータフォーマットで記述し、3DデータセットD1を生成する。3Dスキャナは、生成した3DデータセットD1をサーバ20にアップロードする。
シェア制限情報D12は、データ本体をシェアする範囲の制限事項を記述した情報である。シェア制限情報には例えば、「制限なし」、「一次シェアのみ可」、又は「シェア不可」といた内容を示す情報が含まれる。「制限なし」は、シェアについての制限が設けられない旨を示す。「一次シェアのみ可」、はデータ本体が表す3Dモデルの被写体であるユーザにより直接シェアが行われた場合のみシェアが許可される旨を示す。「シェア不可」はシェアが禁止されている旨を示す。また、シェア制限情報には、シェアするユーザの上限人数を示す情報が含まれてもよい。さらに、シェア制限情報は、例えば、「シェア先が女性の場合のみ可」、「シェア元が10代の場合のみ可」、「シェア先のユーザが被写体と同じ国に居住している場合のみ可」等、被写体、シェア元、又はシェア先のユーザの属性に関する制限事項を含んでもよい。
処理制限情報D13は、3Dモデルの処理に関する制限事項を記述した情報である。処理制限情報は例えば、ボーンに関する制限事項、仮想カメラに関する制限事項、編集に関する制限事項、及びアプリケーションに関する制限事項の少なくとも1種を含む。ボーンに関する制限事項は、例えば、所定の動き(モーション)又は姿勢(ポーズ)を制限するための情報であり、例えば特定のポーズを禁止するための情報である。仮想カメラに関する制限事項は、3Dモデルの表示に際し仮想カメラの位置を制限するための情報であり、3Dモデルに対し例えば所定の角度及び/又は方向からの撮影が禁止される旨を示す情報である。編集に関する制限事項は、例えば、着せ替え処理を禁止するための情報、又は特定の部位の編集(例えば髪の毛の色を変更)を禁止するための情報である。アプリケーションに関する制限事項は、例えば、その3Dデータを使用可能なアプリケーションを制限するための情報であり、具体的には、アプリケーションの種類を制限するための情報、又は特定のアプリケーションでの使用を禁止するための情報である。
3Dデータセットは、3Dスキャナで生成されるものに限定されず、サーバ20等、他の装置により生成されてもよいサーバ20以外の装置により3Dデータセットが生成される場合、サーバ20は、3Dデータセット、その3Dデータセットを識別するデータID、及びその3Dデータセットが表す3Dモデルの対象であるユーザのユーザIDを、他の装置から受信することにより取得し、3Dデータベースに記憶する。
図7は、シェアデータベースの内容を例示する図である。図7の例では、このデータベースには、「データID」、「ユーザID」、及び「許可ID」の各項目が互いに関連付けられている。これらの項目のうち、「データID」の項目には、3Dデータセットを識別する識別子(データID)が格納される。「ユーザID」の項目には、その3Dデータセットに含まれるデータ本体において被写体であるユーザを識別する識別子(ユーザID)が格納される。「許可ID」の項目には、「ユーザID」の項目に記憶されたユーザIDにより識別されるユーザから、その3DデータセットをシェアされたユーザのユーザID(以下「許可ID」という)が格納される。このように、シェアデータベースには、データID、ユーザID及びその3DデータセットをシェアされたユーザのユーザIDの対応関係が記憶されている。
また、この実施形態では、シェアデータベースの「許可ID」の項目には、その3DデータセットをシェアされたユーザのユーザIDと、そのシェアが何次シェア(一次シェア、二次シェア、三次シェア、等)であるかを示す情報(フラグ等)とが紐付けられて記憶される。「一次シェア」とは、3Dデータセットのデータ本体が表す3Dモデルの被写体であるユーザにより直接行われるシェアのことをいう。「二次シェア」とは、その3Dデータセットのデータ本体が表す3Dモデルの被写体であるユーザにより直接シェアが行われるのではなく、一次シェアにより3Dデータセットをシェアされたユーザが更に他のユーザにその3Dデータセットをシェアすることをいう。「三次シェア」とは、二次シェアにより3Dデータセットをシェアされたユーザが更に他のユーザにその3Dデータセットをシェアすることをいう。n次シェア(nは自然数)も同様であり、n人のユーザを介して3Dデータセットがシェアされることをいう。すなわちシェアデータベースには、その3DデータセットがシェアされたユーザのユーザIDに加えて、シェアされたユーザが何次シェアによりシェアされたかを示す情報が記憶される。図7の例において、「usr002(2)」という表記は、「user002」に対して二次シェアが許可されたことを示している。
2.動作
2-1.3Dデータセットの提供
次いで、3Dデータシステム1の動作について説明する。ここでは、ユーザが自分の3Dデータセットをサービスアプリケーション30で用いる場合の動作を説明する。クライアント端末10のユーザは、UI部105を用いてサービスアプリケーション30を起動する操作を行う。クライアント端末10はユーザの操作に応じてサービスアプリケーション30を起動する。サービスアプリケーション30は、3Dデータセットをサーバ20から取得するための処理を行う。
図8は、3Dデータシステム1の一実施形態に係る動作を例示するシーケンスチャートである。ステップS101において、要求送信部351は、3Dデータセットに対する処理要求をサーバ20に送信する。3Dデータセットに対する処理には、例えば、3Dモデルの出力又は編集、若しくはその3Dデータセットのシェアが含まれる。送信される処理要求には、3Dデータセットを識別するデータID(又はデータ識別子)、処理を要求するユーザを識別するユーザID(又はユーザ識別子)、3Dデータセットの用途(又は種別)を識別する用途識別子(例えば、全部、スキンデータのみ、ボーンデータのみ、等)、及び処理の内容が含まれる。この動作例では、データIDが「data011」、ユーザIDが「usr001」、用途識別子が「全部」、であり、また、シェアデータベースの内容が図7に例示したものである例を用いて説明する。要求受信部252はクライアント端末10から受信した処理要求を認証部253に供給する(ステップS102)。
ステップS103において、認証部253は、シェアデータベースに記憶されているデータID、ユーザID、及び許可IDの対応関係、並びに3Dデータセットに含まれるシェア制限情報に基づいて、処理要求に係る処理を行ってよいか認証する。ここで、処理要求に含まれるデータID「data011」とユーザID「usr001」とは、シェアデータベース(図7参照)に対応付けられて記憶されている。そのため、認証部253は、処理要求に係る処理を行うことを許可する。別の例で、データID「data011」及びユーザID「usr121」を含む処理要求に対しては、シェアデータベースにおいてデータID「data011」とユーザID「usr121」とが対応付けられていないので、処理要求に係る処理を行うことは許可されない。
処理要求に係る処理を行うことが認証された場合、ステップS104において、認証結果が応答送信部254に供給される。ステップS105において、応答送信部254は、ステップS101で受信された処理要求に対する応答として、3Dデータセットに含まれるデータ本体の少なくとも一部及び処理制限情報の少なくとも一部を、クライアント端末10に送信する。この動作例では、応答送信部254は、データ本体に含まれるデータのうち、処理要求に含まれていた用途識別子に応じて選択された一部(又は全部)のデータを応答としてクライアント端末10に送信する。用途識別子がデータ本体の全部を示すものである場合、応答送信部254は、3Dデータセットに含まれるデータ本体の全部と、処理制限情報の全部を、クライアント端末10に送信する。送信されたデータ本体及び処理制限情報は、ステップS105において応答受信部352により受信される。ステップS106において、応答受信部352は、3Dデータセットを受信した旨を表示制御部155に通知する。
ステップS107において、表示制御部155は、3Dモデルの表示を行うべく、処理部353に3Dデータセットに対する処理の実行を指示する。この動作例では、表示制御部155は、予めプログラミングされた(又はユーザにより指定された)3Dモデルのボーンの動きや仮想カメラの視点の動き等に従い、3Dモデルの表示に関するパラメータ値を処理部353に入力する。3Dモデルの表示に関するパラメータ値は、例えば、ボーンの位置関係、又は仮想カメラの視点の座標である。
サービスアプリケーション30において、3Dモデルは仮想空間に配置される。また、この仮想空間において視点(又は仮想カメラ)が定義される。サービスアプリケーション30は、仮想空間内においてこの視点から見た(仮想カメラにより取得された)二次元画像をUI部105に表示する。なお、仮想空間における視点の座標及び向きは、例えば、ユーザにより指定されてもよいし、あるいは、例えば、予め設定された情報又はアルゴリズムに従って自動的に設定されてもよい。後者の場合において、視点の座標及び向きが動的に変更されてもよい。
ステップS108において、処理部353は、受信された処理制限情報による制限事項の範囲内で、受信されたデータ本体に対し処理を行い、処理結果をステップS109において表示制御部155に出力する。例えば、仮想カメラの視点の座標が入力された場合、処理部353は、その視点からみた3Dモデルの画像(2次元)を生成し、生成した画像を出力する。また、例えば、ボーンの位置関係(つまりポーズ)が入力されると、処理部353は、仮想空間においてそのポーズの3Dモデルを、指定された視点から見たときの画像(2次元)を生成し、生成した画像を出力する。
このとき、処理部353は、処理制限情報で禁じられている視点の位置やボーンの位置関係等が表示制御部155により指定されると、2次元の画像を生成することなく、エラーを出力する。あるいは、処理部353は、処理制限情報で許可されている範囲に視点の位置又はボーンの位置関係を留めておき、禁じられている範囲にこれらを移動させる指示を無視してもよい。仮想空間に設定される視点はあくまで仮想的なものであるので、理論上、サービスアプリケーション30は、視点の位置及び画角を任意に設定することができる。しかし、この実施形態では、処理制限情報により、3Dモデルを基準とする、視点の相対的な位置が制限される。具体例としては、例えば女性アイドル歌手の3Dモデルを取り扱う場合において、3Dモデルの腰より下に仮想カメラが来ないように制限したり、あるいは、仮想カメラの画角をある範囲を超えて小さくできないように制限したりすることができる。このように、処理制限情報により、視点の(3Dモデルに対する相対的な)位置が制限される。この情報により、3Dモデルに対する処理(例えば、ユーザに見せない領域)を3Dモデル毎に定義することができる。
ステップS110において、表示制御部155は、処理されたデータ本体を用いて3Dモデルの表示等の処理を行う。例えば、サービスアプリケーション30がバーチャルコミュニケーションを行うアプリケーションである場合、受信された3Dモデリングデータによりユーザの3次元のアバターがUI部105に表示され、そのアバターによりサービスアプリケーション30において他のユーザとコミュニケーションが行われたりする。
処理部353が3Dデータセットを用いて行う処理は、3Dモデルの表示に限定されない。処理部353は、ユーザの操作等に応じて、3Dモデルに対する編集処理を行う。3Dモデルに対する編集処理は例えば、3Dモデルの髪の色を変更する処理、肌の色を変更する処理、顔のパーツ(目、鼻、等)の形状を変更する処理、又は衣装を変更する処理である。3Dモデルに対する編集を行う場合、処理部353は、編集の内容を示す編集データを生成する。3Dモデルが編集された場合、処理部353は、編集内容に従って3Dモデリングデータを加工し、加工した3Dモデリングデータ(又はデータ本体)により表される3Dモデルの画像(2次元)を表す画像データを生成する。処理部353は、生成した画像データを表示制御部155に供給するとともに、編集の内容を表す編集データを記憶装置103に記憶する。表示制御部155は、処理部353から供給される画像データに従い3Dモデルの2次元画像をUI部105に表示する。記憶された編集データは、その3Dデータが他のユーザにシェアされる際に他のクライアント端末10に送信される。なおこの例において、サーバ20に記憶されている3Dモデリングデータ自体は変更されない。編集データはあくまで元のデータを基準として編集の内容(例えば、「肌の色を褐色に変更」、「髪の色を黒に変更」等)を示すものにすぎず、3Dモデリングデータそのものは含んでいない。
2-2.3Dデータセットのシェア
サービスアプリケーション30のユーザは、自身が使用するサービスアプリケーション30において処理した3Dモデリングデータを、サービスアプリケーション30を使用する他のユーザにシェアすることができる。例えば、サービスアプリケーション30がアバターにダンスを踊らせる動画を表示するプログラムであった場合、自身のアバターにダンスを踊らせる動画をサービスアプリケーション30で作成したユーザUaは、同じサービスアプリケーション30を使用するユーザUbに、「ユーザUaのアバターがダンスを踊る動画」をシェアすることができる。詳細には、ユーザUaは、自身のアバターの3Dデータセット、及び自身のアバターにダンスを踊らせるための、ボーンの動きのシーケンス(すなわち振付)を示すデータをシェアすることができる。なお、3Dモデリングデータ(又は3Dデータセット)のシェアは、シェア制限情報による制限を受ける。シェア制限情報は、上述したように3Dデータセットに含まれている。この動作例では、あるユーザUaが他のユーザUbに自身の3Dデータセットをシェアする場合の動作について説明する。以下の説明では、説明の便宜上、ユーザUaが使用するクライアント端末10を「クライアント端末10a」とし、ユーザUbが使用するクライアント端末10を「クライアント端末10b」として説明する。ユーザUaは、クライアント端末10aのUI部105を用いて、3Dデータセットをシェアするための操作を行う。サービスアプリケーション30は、ユーザUaの操作に応じて3Dデータセットをシェアするための処理を行う。
図9は、3Dデータシステム1が行う、3Dデータセットのシェアに係る動作を例示するシーケンスチャートである。ステップS201において、サービスアプリケーション30の要求送信部351は、3Dデータセットを他のユーザにシェアする要求(シェア要求)をサーバ20に送信する。シェア要求には、シェア元のユーザ及びシェア先のユーザそれぞれのユーザID、並びにシェアされる3DデータセットのデータIDが含まれる。なお1ユーザにつき1個の3Dデータセットに限る等の制限がある、又はユーザ毎にデフォルトの3Dデータセットが設定されている等の事情により、識別情報が無くても3Dデータセットを特定できる場合には、シェア要求はデータIDを含まなくてもよい。この動作例では、シェア元のユーザIDが「usr001」、シェア先のユーザIDが「usr002」であり、また、シェアの対象である3Dデータセットに含まれるシェア制限情報が「一次シェアのみ可」である場合を説明する。要求受信部252はステップS201においてクライアント端末10から要求を受信する。受信された要求はステップS202において認証部253に供給される。
ステップS203において、認証部253は、シェア要求を実行してよいか、すなわちシェア元のユーザからシェア先のユーザへ3Dデータセットをシェアしてよいか、記憶部251に記憶されているシェア制限情報に基づいて認証する。具体的には、まず、認証部253は、シェア元のユーザのユーザID「usr001」を3Dデータベースから検索し、そのユーザIDに対応する3Dデータセットに含まれるシェア制限情報を読み出す。この場合、シェアの対象である3Dデータセットに含まれるシェア制限情報は「一次シェアのみ可」であるため、認証部253は、ユーザUbへのシェアを許可する。
シェア元のユーザからシェア先のユーザへ3Dデータセットをシェアすることが認証された場合、ステップS204において、認証結果がシェア部255に送信される。ステップS205において、シェア部255は、認証結果に応じ、シェア元のユーザからシェア先のユーザへ3Dデータセットをシェアした旨をシェアデータベースに記憶する。具体的には、シェア部255は、3DデータセットのデータID、シェア元のユーザID、及びシェア先のユーザIDを対応付けてシェアデータベースに記憶する。シェア部255による処理の結果は、ステップS206において応答送信部254に供給される。
ステップS207において、応答送信部254は、ステップS201で受信された要求に対する応答として、シェアが認証された旨を示す応答を送信する。サービスアプリケーション30において応答受信部352により受信される。受信された応答の内容はステップS209において表示制御部155に通知される。
ステップS209において、表示制御部155はシェアが認証された旨を表示する等の処理を行う。また、3Dデータセットと共にシェアが指示されたデータ(以下「関連データ」という)があれば、表示制御部155は、関連データの送信をデータ送信部354に指示する(ステップS210)。関連データは、例えば、3Dデータセットの編集内容を示すデータ、又はダンスの振付を示すデータである。ステップS211において、データ送信部354は関連データを他のクライアント端末10(クライアント端末10b)に送信する。このとき、関連データが送信される経路は、サーバ20を介する経路とは異なる経路であり、例えばサービスアプリケーション30の開発者が管理するサーバを介する経路である。これにより、関連データがユーザUbにシェアされる。
3DデータセットをシェアされたユーザUbは、クライアント端末10bを用いて、シェアされた3Dデータセットを使用するための操作を行う。クライアント端末10bのサービスアプリケーション30は、ユーザUbの操作に応じて、サーバ20に処理要求を送信する。送信される処理要求には、データIDとして「data011」、ユーザIDとして「usr002」、及び用途識別子(「全部」、等)が含まれる。この場合の3Dデータシステム1の動作は、図8で説明したステップS101乃至ステップS109の動作と同様である。なお、ステップS103においては、図7のシェアデータベースが参照され、ユーザID「usr001」に対応する許可IDとして「usr002」がシェアデータベースに登録されているため、その処理要求に係る処理を行うことが許可される。
また、3Dデータセットのシェアに加え、クライアント端末10bのユーザが関連データのシェアを受けた場合、クライアント端末10bのサービスアプリケーション30は、サーバ20から受信した3Dデータセット及び他のサーバを介して受信した編集データを用いて、3Dモデルの表示等の各種処理を実行する。例えば、サービスアプリケーション30がアバターにダンスをさせるアプリケーションである場合、処理部353により処理された3Dモデリングデータ及び関連データによりユーザの3次元のアバターがUI部105に表示され、そのアバターがダンスしている様子がUI部105に表示されたりする。
図9のステップS203の認証処理においてシェアが認証されない場合について説明する。例えば、ユーザUaから一次シェアを受けたユーザUbが、ユーザUaのアバターがダンスする動画をユーザUcにシェアしようとする場合がある。この場合において、3Dデータセットに含まれているシェア制限情報が「一次シェアのみ可」を示す情報である場合、ユーザUbからユーザUcへのシェアは認証されない。
図10は、図9のステップS203の認証処理においてシェアが認証されない場合の3Dデータシステム1の動作を例示するシーケンスチャートである。図10のステップS201乃至ステップS203の処理は図9に示したそれと同様である。ステップS203において、認証部253は、シェア元のユーザからシェア先のユーザへ3Dデータセットをシェアしてよいか、記憶部251に記憶されているシェア制限情報に基づいて認証する。シェア元のユーザからシェア先のユーザへ3Dデータセットをシェアすることが認証されなかった場合、ステップS404において、認証結果が応答送信部254に送信される。ステップS405において、応答送信部254は、ステップS201で受信された要求に対する応答として、シェアが認証されなかった旨を示す応答を送信する。送信された応答はステップS405において応答受信部352により受信される。受信された応答の内容はステップS406において表示制御部155に通知される。
ステップS407において、表示制御部155はシェアが認証されなかった旨を表示する等の処理を行う。例えば「二次シェアは禁止されています」といったメッセージが表示される。ユーザUbは、表示制御部155による表示結果を視認し、シェアされなかった旨を確認する。
2-3.3Dデータセットのシェア先のユーザの変更動作
次いで、3Dデータセットのシェア先のユーザを変更する動作を説明する。この動作例では、ユーザUaの3Dデータセットのシェア先を、ユーザUbからユーザUcに変更する場合の動作を説明する。ユーザUaは、クライアント端末10aのUI部105を用いて、3Dデータセットのシェア先のユーザを変更するための操作を行う。サービスアプリケーション30は、ユーザUaの操作に応じて3Dデータセットをシェアするための処理を行う。
図11は、3Dデータセットのシェア先のユーザを変更する動作を例示するシーケンスチャートである。ステップS301において、要求送信部351は、3Dデータセットのシェア先を変更する要求(以下「変更要求」という)をサーバ20に送信する。送信される変更要求には、3DデータセットのデータID、要求の送信元ユーザを識別するユーザID、及びシェア先のユーザを識別するユーザIDが含まれる。要求受信部252はステップS301においてクライアント端末10から変更要求を受信する。受信された変更要求はステップS302においてシェア部255に供給される。
ステップS303において、受信された変更要求に含まれるユーザIDが、3Dデータセットに含まれるデータ本体において被写体であるユーザ本人のユーザIDであった場合、シェア部255は、記憶部251に記憶されているシェア先のユーザを変更する。シェア部255による処理の結果は、ステップS304において応答送信部254に供給される。ステップS305において、応答送信部254は、ステップS301で受信された変更要求に対する応答として、シェア先のユーザが変更された旨を示す応答を送信する。送信された応答はステップS305において応答受信部352により受信される。受信された応答の内容はステップS306において表示制御部155に通知される。ステップS307において、表示制御部155はシェアが認証された旨を表示する等の処理を行う。
図7の例において、被写体であるユーザであるusr001が、usr103へのシェアを、別のユーザであるusr104に変更する場合を考える。シェア部255は、記憶部251に記憶されているシェア先のユーザ一覧から、usr103を削除し、usr104を追加する。usr001の3Dデータに関し、usr104からシェアされたユーザは存在しないので、シェア部255は、一覧からusr002(2)及びusr102(3)を削除する。なお記憶部251は、シェア先のユーザとシェア元のユーザとを対応付けて記憶してもよい。一例としては、シェア部255は、図7のテーブルに「user102(3,usr002)」と記録する。これは、user102が3次シェアを受けたユーザであり、シェア元のユーザがusr002であることを示す。
別の例を説明する。図7の例において、被写体であるユーザであるusr001が、usr103へのシェアを、別のユーザであるusr002に変更する場合を考える。シェア部255は、記憶部251に記憶されているシェア先のユーザ一覧から、usr103を削除する。シェア部255は次に、シェア先のユーザ一覧にusr002を追加しようとするが、usr002は既にリストに存在する。そこでシェア部255は、usr002のシェア次数及びシェア元ユーザを書き換える。具体的には、シェア部255は、「usr002(2,usr103)」を、「usr002(1,usr001)」と書き換える。「usr102(3,usr002)」については、シェア元のユーザ(usr002)が一覧に存在するので、シェア部255はシェア次数を書き換え、「usr102(2,usr002)」とする。
最後の例の処理の後、例えばusr103からusr001の3Dデータの処理要求を受信しても、一覧にusr103が記録されていないので、認証部253は、この処理要求を認証しない。
なお、ここでは、被写体であるユーザからの変更要求を処理する例を説明したが、サーバ20は、被写体であるユーザに代えて又は加えて、シェア先のユーザからの変更要求を受け付けてもよい。変更されたユーザとシェア元-シェア先の対応付けがあるか否かに応じて、シェア先のユーザ一覧からユーザIDを削除するか否かを判断する点は同様である。
2-4.シェアされた後でシェア制限情報が書き換えられる場合の動作
3Dデータセットがシェアされた後、シェア制限情報が書き換えられる場合がある。この場合の動作について具体例を用いて説明する。
ここでは、ユーザUaの3Dデータセットのシェア制限情報が「三次シェアまで可」を示す情報であり、ユーザUaの3DデータセットがユーザUcに二次シェアされているとする。この場合において、ユーザUaのアバターがダンスする動画を、ユーザUc(二次シェアを受けた者)がユーザUd(三次シェアを受ける者)にシェアしようとした場合を想定する。この場合の3Dデータシステム1の動作は、図9で説明したステップS201乃至S212の動作と同様である。この場合、ステップS203においては、記憶部251に記憶されているシェア制限情報が参照される。シェアの対象であるユーザUaの3Dデータセットに含まれるシェア制限情報は「三次シェアまで可」であるため、認証部253は、ユーザUdへのシェアを許可する。すなわち、ユーザUaの3DデータセットはユーザUcからユーザUdに三次シェアされる。
ユーザUaは、自身の3Dデータセットに含まれるシェア制限情報を書き換えることができる。シェア制限情報を書き換えたい場合、ユーザUaは、クライアント端末10aのUI部105を用いて、シェア制限情報を書き換えるための操作を行う。サービスアプリケーション30は、ユーザUaの操作に応じてシェア制限情報を書き換えるための処理を行う。
図12は、シェア制限情報が書き換えられる場合の3Dデータシステム1の動作を例示するシーケンスチャートである。ステップS501において、サービスアプリケーション30の要求送信部351は、シェア制限情報の書き換え要求をサーバ20に送信する。書き換え要求には、ユーザID、対象である3DデータセットのデータID、及び書き換え後のシェア制限情報の値(例えば「二次シェアまで可」、「一次シェアまで可」、等)が含まれる。要求受信部252はステップS501においてクライアント端末10aから書き換え要求を受信する。受信された書き換え要求はステップS502において認証部253に供給される。
ステップS503において、認証部253は、シェアデータベースに記憶されているデータID及びユーザID、並びに書き換え要求に含まれている各種情報に基づいて、シェア制限情報の書き換えを行うことを認証する。ここで、ユーザUaのユーザIDと3DデータセットのデータIDとがシェアデータベースに対応付けられて記憶されているため、認証部253は、シェア制限情報の書き換え処理を行うことを許可する。あるいは、シェア制限情報の書き換えの可否を示すデータがシェアデータベースに記録されており、認証部253がこのデータに基づいて書き換えの可否を判断してもよい。書き換えの可否はユーザ毎に記録及び判断されてもよいし、ユーザ属性に応じて判断されてもよい。
シェア制限情報の書き換え処理を行うことが認証された場合、ステップS504において、認証部253は、シェア制限情報の書き換え処理を行う。この処理により、ユーザUaの3Dデータセットのシェア制限情報が例えば「三次シェアまで可」から「二次シェアまで可」に書き換えられる。
ステップS505において、認証部253は、シェアデータベースに記憶されている許可IDに、書き換えられたシェア制限情報によりシェアが認められなくなったユーザIDが含まれるかを判定する。例えば、シェア制限情報が「三次シェアまで可」から「二次シェアまで可」に書き換えられた場合であって、そのシェア制限情報を含む3Dデータセットの許可IDに三次シェアされたユーザIDが含まれている場合、その三次シェアされたユーザIDは、シェアが認められなくなったと判定される。この場合、ステップS506において、認証部253は、シェアが認められなくなったユーザIDを、シェアデータベースの「許可ID」の項目から削除する。この場合において、サーバ20は、削除対象となったユーザIDにより特定されるユーザに対し、「被写体であるユーザの要望により、このデータの処理は禁止されました」等、3Dデータセットの利用ができなくなった旨を通知してもよい。
このように、シェア制限情報が書き換えられることによりシェアが許可されなくなったユーザのユーザIDは、シェアデータベースの「許可ID」の項目から削除される。例えばユーザUaの3Dデータセットのシェア制限情報が「二次シェアまで可」に書き換えられた場合であって、ユーザUdが三次シェアされたユーザである場合、ユーザUdのユーザIDはシェアデータベースの「許可ID」の項目から削除される。また、例えばシェア制限情報が「一次シェアまで可」に書き換えられた場合であって、ユーザUcが二次シェアされたユーザであり、ユーザUdが三次シェアされたユーザである場合、ユーザUcのユーザIDとユーザUdのユーザIDとが、シェアデータベースの「許可ID」の項目から削除される。
認証部253による処理の結果は、ステップS507において応答送信部254に供給される。ステップS508において、応答送信部254は、ステップS501で受信された書き換え要求に対する応答として、シェア制限情報が書き換えられた旨を示す応答を送信する。送信された応答はステップS508において応答受信部352により受信される。受信された応答の内容はステップS509において表示制御部155に通知される。ステップS510において表示制御部155はシェア制限情報が書き換えられた旨を表示する等の処理を行う。
シェア制限情報が書き換えられた後、シェアが許可されなくなったユーザが3Dデータセットを使用しようとした場合、上述の図8の処理が3Dデータシステム1により行われる。この場合、図8のステップS103の認証処理において、シェアデータベースが参照され、そのユーザのユーザIDが「許可ID」の項目に登録されていない場合には、処理が許可されない。このように、シェア制限情報が書き換えられた後は、シェアが許可されなくなったユーザはその3Dデータセットを使用できなくなる。
2-5.課金動作
次いで、ライセンス料の課金動作を説明する。課金部256は、クライアント端末10から処理要求を受信した回数又は頻度に基づいてSDKのライセンス料を課金する。より詳細には、課金部256は、処理要求が認証され、その後、3Dデータがクライアント端末に送信された場合、課金部256は、ライセンス料算出のためのカウンタをカウントアップする。課金部256は、所定期間が経過した後(例えば、毎月1日)、カウンタの値に基づいて課金する。課金の具体的方法は、ユーザとの契約に応じて変わる。課金は例えばサービスアプリケーション30のベンダー(又は開発会社)に対して行われる。課金処理が行われるタイミングは、例えば、予め定められたタイミングで定期的に(例えば、1カ月毎、等)行われてもよく、また、3Dデータシステム1の管理者によって課金処理を指示されたタイミングで行われてもよい。処理要求を受信した回数は例えば、要求受信部252がクライアント端末10から処理要求を受信する毎に、記憶部251に記憶されたカウンタをインクリメントすることによりカウントされてもよい。
以上説明したようにこの実施形態によれば、3Dモデルを含む3Dデータセットがシェアされた場合に、その3Dデータセットの処理をユーザが制御することができる。
3.変形例本発明は上述の実施形態に限定されるものではなく、種々の変形実施が可能である。以下、変形例をいくつか説明する。実施形態の少なくとも一部及び以下の変形例のうち2つ以上のものが組み合わせて用いられてもよい。
(1)上述の実施形態では、サーバ20の応答送信部254は、受信された処理要求に対する応答として、データ本体の全部と、処理制限情報の全部を、クライアント端末10に送信した。送信される処理制限情報は、上述の実施形態で示したものに限られない。一部の処理制限情報が送信されてもよい。例えば、処理要求に含まれる用途識別子の値が「スキンデータのみ」を示す値である場合、3Dモデルの動作を制限する処理制限情報は送信されず、その他の処理制限情報のみが送信されてもよい。
(2)3Dデータシステム1が行う処理の順序は、上述した実施形態において説明された例に限られない。処理のステップは、矛盾が生じない限りにおいて、入れ替えられてもよい。また、本発明は、3Dデータシステム1において行われる3Dデータ処理方法として提供されてもよい。
(3)3Dデータシステム1において、クライアント端末10及びサーバ20における機能の分担は、図2において例示されたものに限定されない。例えば、課金手段26がサーバ20とは別のサーバに設けられていてもよい。
(4)上述の実施形態において、クライアント端末10のプロセッサ101又はサーバ20のプロセッサ201により実行されるプログラムは、インターネットなどの通信回線を介してダウンロードされてもよい。また、これらのプログラムは、磁気記録媒体(磁気テープ、磁気ディスクなど)、光記録媒体(光ディスクなど)、光磁気記録媒体、半導体メモリなどの、コンピュータが読取可能な記録媒体に記録した状態で提供されてもよい。