特許第6799883号(P6799883)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 株式会社VRCの特許一覧

<>
  • 特許6799883-サーバ及び情報処理方法 図000002
  • 特許6799883-サーバ及び情報処理方法 図000003
  • 特許6799883-サーバ及び情報処理方法 図000004
  • 特許6799883-サーバ及び情報処理方法 図000005
  • 特許6799883-サーバ及び情報処理方法 図000006
  • 特許6799883-サーバ及び情報処理方法 図000007
  • 特許6799883-サーバ及び情報処理方法 図000008
  • 特許6799883-サーバ及び情報処理方法 図000009
  • 特許6799883-サーバ及び情報処理方法 図000010
  • 特許6799883-サーバ及び情報処理方法 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】6799883
(24)【登録日】2020年11月26日
(45)【発行日】2020年12月16日
(54)【発明の名称】サーバ及び情報処理方法
(51)【国際特許分類】
   G06T 19/00 20110101AFI20201207BHJP
【FI】
   G06T19/00 A
【請求項の数】11
【全頁数】18
(21)【出願番号】特願2020-545612(P2020-545612)
(86)(22)【出願日】2020年7月27日
(86)【国際出願番号】JP2020028755
【審査請求日】2020年8月31日
【早期審査対象出願】
(73)【特許権者】
【識別番号】316014722
【氏名又は名称】株式会社VRC
(74)【代理人】
【識別番号】110000752
【氏名又は名称】特許業務法人朝日特許事務所
(72)【発明者】
【氏名】謝 英弟
(72)【発明者】
【氏名】張 彦鵬
【審査官】 村松 貴士
(56)【参考文献】
【文献】 特表2019−532373(JP,A)
【文献】 特表2019−503906(JP,A)
【文献】 国際公開第2008/066393(WO,A2)
【文献】 柳瀬龍郎,“3DCGシステム”,ヒューマンインタフェース学会研究報告集,特定非営利活動法人ヒューマンインタフェース学会,2006年 6月 6日,Vol.8, No.3,pp.79-83
(58)【調査した分野】(Int.Cl.,DB名)
G06T 19/00 − 19/20
G06F 30/00 − 30/18
G06Q 50/00 − 50/34
(57)【特許請求の範囲】
【請求項1】
複数の対象物についての3Dデータセットを記憶したデータベースにアクセスするアクセス手段であって、前記3Dデータセットが複数の対象物の各々について当該対象物の3Dモデリングデータ及び付随データを含み、前記3Dモデリングデータが複数の要素を含むアクセス手段と、
情報処理装置から、対象物及び複数の要素のうち使用する要素を特定する要求情報を含むAPIリクエストを受信する受信手段と、
前記データベースから抽出された、前記要求情報により特定された対象物の、特定された要素からなる3Dモデリングデータにより示される3Dモデルを出力するためのデータを、前記APIリクエストに対するAPIレスポンスとして前記情報処理装置に送信する送信手段と
を有するサーバ。
【請求項2】
前記付随データが、前記対象物を撮影した画像を含み、
対象物の画像からアルゴリズムに従って3Dモデリングデータを生成する生成手段に対し前記画像及び前記アルゴリズムを用いた3Dモデリングデータの生成を要求するデータ要求手段と、
前記画像及び前記アルゴリズムを用いて生成された3Dモデリングデータを前記生成手段から取得する取得手段と
を有する請求項1に記載のサーバ。
【請求項3】
前記データ要求手段は、前記生成手段において前記アルゴリズムが更新されたことを示すイベントの発生に応じて、当該生成手段に対し前記画像及び当該更新されたアルゴリズムを用いた3Dモデリングデータの再生成を要求し、
前記取得手段は、前記更新されたアルゴリズムを用いた3Dモデリングデータを取得する
請求項2に記載のサーバ。
【請求項4】
前記付随データが、前記画像が撮影された日から現時点までの期間における前記対象物の行動を示す行動情報を含み、
前記要求手段は、前記生成手段に対し、前記画像、前記行動情報、及び前記更新されたアルゴリズムを用いた3Dモデリングデータの生成を要求し、
前記取得手段は、前記生成手段から、前記画像、前記行動情報、及び前記更新されたアルゴリズムを用いた3Dモデリングデータを取得する
請求項3に記載のサーバ。
【請求項5】
前記生成手段は、異なる複数のアルゴリズムの中から選択された一のアルゴリズムに従って3Dモデリングデータを生成し、
前記APIリクエストが、前記複数のアルゴリズムの中から一のアルゴリズムを指定する情報を含み、
前記データ要求手段は、前記APIリクエストにより指定されるアルゴリズムを選択して3Dモデリングデータの生成を要求する
請求項2に記載のサーバ。
【請求項6】
前記受信手段は、前記3Dモデリングデータが情報処理装置において編集されたことを示す情報を受信し、
前記編集されたことを示す編集履歴の記録を要求する記録要求手段を有する
請求項1乃至5のいずれか一項に記載のサーバ。
【請求項7】
前記編集履歴を用いて生成された暗号鍵を用いて前記3Dモデルを出力するためのデータを暗号化する暗号化手段を有する
請求項6に記載のサーバ。
【請求項8】
前記受信手段は、情報処理装置から3Dモデリングデータが真正なものであるか確認の要求であって、当該3Dモデリングデータの編集履歴を示すデータを含む要求を受信し、
前記記録を参照して前記3Dモデリングデータが真正なものであるか判断する
請求項6に記載のサーバ。
【請求項9】
前記サーバの管理事業者の秘密鍵、及び複数のユーザの公開鍵を記憶する記憶手段を有し、
前記APIリクエストが、前記情報処理装置を使用するユーザの公開鍵を特定する情報を含み、
前記APIリクエストにより要求された前記3Dモデルを出力するためのデータを、前記管理事業者の秘密鍵及び前記情報処理装置を使用するユーザの公開鍵で暗号化する暗号化手段を有し、
前記送信手段は、前記暗号化手段により暗号化された前記3Dモデルを出力するためのデータを前記APIレスポンスとして前記情報処理装置に送信する
請求項1乃至6及び8のいずれか一項に記載のサーバ。
【請求項10】
前記管理事業者の秘密鍵に対応する公開鍵であって、有効期限が設定された公開鍵を配布する配布手段を有する
請求項9に記載のサーバ。
【請求項11】
複数の対象物についての3Dデータセットを記憶したデータベースであって、前記3Dデータセットが複数の対象物の各々について当該対象物の3Dモデリングデータ及び付随データを含み、前記3Dモデリングデータが複数の要素を含むデータベースにアクセスするステップと、
情報処理装置から、対象物及び複数の要素のうち使用する要素を特定する要求情報を含むAPIリクエストを受信するステップと、
前記データベースから抽出された、前記要求情報により特定された対象物の、特定された要素からなる3Dモデリングデータにより示される3Dモデルを出力するためのデータを、前記APIリクエストに対するAPIレスポンスとして前記情報処理装置に送信するステップと
を有する情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、3Dモデリングデータを処理する技術に関する。
【背景技術】
【0002】
対象物の3Dモデルを示す3Dモデリングデータを処理するシステムが知られている。例えば特許文献1は、3Dモデリングデータの動的な個性を推定し、推定された個性を示すデータを3Dモデリングデータに付加する技術を開示している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第6489726号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
3Dモデリングデータは様々なアプリケーションにおいて利用が可能である。本発明は、3Dモデリングデータを様々なアプリケーションから容易に利用することができるようにする技術を提供する。
【課題を解決するための手段】
【0005】
本開示の一態様は、複数の対象物についての3Dデータセットを記憶したデータベースにアクセスするアクセス手段であって、前記3Dデータセットが複数の対象物の各々について当該対象物の3Dモデリングデータ及び付随データを含み、前記3Dモデリングデータが複数の要素を含むアクセス手段と、情報処理装置から、対象物及び複数の要素のうち使用する要素を特定する要求情報を含むAPIリクエストを受信する受信手段と、前記データベースから抽出された、前記要求情報により特定された対象物の、特定された要素からなる3Dモデリングデータにより示される3Dモデルを出力するためのデータを、前記APIリクエストに対するAPIレスポンスとして前記情報処理装置に送信する送信手段とを有するサーバを提供する。
【0006】
前記付随データが、前記対象物を撮影した画像を含み、このサーバは、対象物の画像からアルゴリズムに従って3Dモデリングデータを生成する生成手段に対し前記画像及び前記アルゴリズムを用いた3Dモデリングデータの生成を要求するデータ要求手段と、前記画像及び前記アルゴリズムを用いて生成された3Dモデリングデータを前記生成手段から取得する取得手段とを有してもよい。
【0007】
前記データ要求手段は、前記生成手段において前記アルゴリズムが更新されたことを示すイベントの発生に応じて、当該生成手段に対し前記画像及び当該更新されたアルゴリズムを用いた3Dモデリングデータの再生成を要求し、前記取得手段は、前記更新されたアルゴリズムを用いた3Dモデリングデータを取得してもよい。
【0008】
前記付随データが、前記画像が撮影された日から現時点までの期間における前記対象物の行動を示す行動情報を含み、前記要求手段は、前記生成手段に対し、前記画像、前記行動情報、及び前記更新されたアルゴリズムを用いた3Dモデリングデータの生成を要求し、前記取得手段は、前記生成手段から、前記画像、前記行動情報、及び前記更新されたアルゴリズムを用いた3Dモデリングデータを取得してもよい。
【0009】
前記生成手段は、異なる複数のアルゴリズムの中から選択された一のアルゴリズムに従って3Dモデリングデータを生成し、前記APIリクエストが、前記複数のアルゴリズムの中から一のアルゴリズムを指定する情報を含み、前記データ要求手段は、前記APIリクエストにより指定されるアルゴリズムを選択して3Dモデリングデータの生成を要求してもよい。
【0010】
前記受信手段は、前記3Dモデリングデータが情報処理装置において編集されたことを示す情報を受信し、このサーバは、前記編集されたことを示す編集履歴の記録を要求する記録要求手段を有してもよい。
【0011】
前記編集履歴を用いて生成された暗号鍵を用いて前記3Dモデルを出力するためのデータを暗号化する暗号化手段を有してもよい。
【0012】
前記受信手段は、情報処理装置から3Dモデリングデータが真正なものであるか確認の要求であって、当該3Dモデリングデータの編集履歴を示すデータを含む要求を受信し、前記記録を参照して前記3Dモデリングデータが真正なものであるか判断してもよい。
【0013】
このサーバは、前記サーバの管理事業者の秘密鍵、及び複数のユーザの公開鍵を記憶する記憶手段を有し、前記APIリクエストが、前記情報処理装置を使用するユーザの公開鍵を特定する情報を含み、前記APIリクエストにより要求された前記3Dモデルを出力するためのデータを、前記管理事業者の秘密鍵及び前記情報処理装置を使用するユーザの公開鍵で暗号化する暗号化手段を有し、前記送信手段は、前記暗号化手段により暗号化された前記3Dモデルを出力するためのデータを前記APIレスポンスとして前記情報処理装置に送信してもよい。
【0014】
このサーバは、前記管理事業者の秘密鍵に対応する公開鍵であって、有効期限が設定された公開鍵を配布する配布手段を有してもよい。
【0015】
本開示の別の一態様は、複数の対象物についての3Dデータセットを記憶したデータベースであって、前記3Dデータセットが複数の対象物の各々について当該対象物の3Dモデリングデータ及び付随データを含み、前記3Dモデリングデータが複数の要素を含むデータベースにアクセスするステップと、情報処理装置から、対象物及び複数の要素のうち使用する要素を特定する要求情報を含むAPIリクエストを受信するステップと、前記データベースから抽出された、前記要求情報により特定された対象物の、特定された要素からなる3Dモデリングデータにより示される3Dモデルを出力するためのデータを、前記APIリクエストに対するAPIレスポンスとして前記情報処理装置に送信するステップとを有する情報処理方法を提供する。
【発明の効果】
【0016】
本発明によれば、3Dモデリングデータを様々なアプリケーションから容易に利用することができる。
【図面の簡単な説明】
【0017】
図1】一実施形態に係る3Dデータシステム1の概要を示す図。
図2】サーバ10の機能構成を例示する図。
図3】サーバ10のハードウェア構成を例示する図。
図4】3Dデータシステム1の動作を示すシーケンスチャート。
図5】データベース111における3Dモデリングデータの構造を例示する図。
図6】暗号化されたデータを例示する図。
図7】3Dモデリングデータの再生成処理を例示するフローチャート。
図8】仮説のシミュレーション処理を例示するフローチャート。
図9】ブロックチェーンに編集履歴を記録する処理を例示するフローチャート。
図10】3Dモデリングデータを検証する処理を例示するフローチャート。
【符号の説明】
【0018】
1…3Dデータシステム、9…3Dデータセット、10…サーバ、11…記憶手段、12…アクセス手段、13…受信手段、14…送信手段、15…制御手段、20…サーバ、30…端末装置、31…アプリケーション、91…ユーザID、92…3Dモデリングデータ、93…付属データ、101…CPU、102…メモリ、103…ストレージ、104…通信IF、111…データベース、330…端末装置、921…3Dモデリングデータ、921…3Dモデリングデータ、922…3Dモデリングデータ、923…3Dモデリングデータ、Km1…秘密鍵、Km2…公開鍵、Ku1…秘密鍵、Ku2…公開鍵。
【発明を実施するための形態】
【0019】
1.構成
図1は、一実施形態に係る3Dデータシステム1の概要を示す図である。3Dデータシステム1は、3Dモデリングデータを提供する。ここで、3Dモデリングデータとは、人間、動物、物品等の対象物の3Dモデルを表すデータをいう。3Dモデルとは対象物の三次元的な外観を表すモデルをいう。一例において、3Dモデリングデータの外表面には、対象物を撮影した写真から生成された画像が貼り付けられる。3Dモデルは、例えば、仮想空間においてユーザ自身の、又はユーザとは別の人物のアバターとして用いられる。3Dモデルは、例えば、ビデオゲーム、ビデオ通話、ビデオ会議、ショッピング、又はフィットネスなど、様々なアプリケーション又は用途において用いられる。
【0020】
3Dデータシステム1は、サーバ10、サーバ20、端末装置30、及び3Dスキャナー40を有する。サーバ10は、3Dモデリングデータを管理するサーバである。サーバ10は、3Dデータシステム1の管理事業者により管理される。サーバ20は、3Dモデルを用いたアプリケーションを提供するサーバである。このアプリケーションは、3Dデータシステム1の管理事業者自身により提供されてもよいし、別の事業者により提供されてもよい。端末装置30はアプリケーションを利用する(すなわち3Dモデルを利用する)ユーザ端末である。端末装置30は、スマートフォン、タブレット端末、又はパーソナルコンピュータ等の情報処理装置である。なおここでは図面を簡単にするため、サーバ20、端末装置30、及び3Dスキャナー40をそれぞれ1台のみ図示しているが、3Dデータシステム1は、複数のサーバ20及び/又は複数の端末装置30を有してもよい。
【0021】
3Dスキャナー40は、対象物をスキャンして3Dモデリングデータを生成する装置である。3Dスキャナー40は、対象物の外観の画像(すなわち写真)を撮影し、基準位置(例えばセンサーの位置)から対象物の表面までの距離を測定し、画像データ及び距離データを得る。さらに、3Dスキャナー40は、この画像データ及び距離データに対し所定のアルゴリズムを適用し、対象物の3Dモデリングデータを生成する。3Dスキャナー40は、生成された3Dモデリングデータをサーバ10にアップロードする。
【0022】
サーバ20は、端末装置30にアプリケーションプログラムを提供する。このアプリケーションプログラムは、サーバ10にAPI(Application Programming Interface)リクエストを送信するためのソフトウェアモジュールを含む。例えば端末装置30がこのアプリケーションプログラムを実行すると、端末装置30は、このプログラムに従ってサーバ10にAPIリクエストを送信する。このAPIリクエストは、3Dモデルを出力するためのデータ(例えば3Dモデリングデータ)の送信を要求するものである。サーバ10は、このAPIリクエストに対しAPIレスポンスを送信する。このAPIレスポンスは、要求された3Dデータを含む。端末装置30は、この3Dデータを用いたアプリケーションをユーザに提供する。
【0023】
図2は、サーバ10の機能構成を例示する図である。サーバ10は、記憶手段11、アクセス手段12、受信手段13、送信手段14、及び制御手段15を有する。記憶手段11は各種のデータを記憶する。この例において記憶手段11はデータベース111を記憶する。データベース111は、複数の対象物(すなわち対象物)についての3Dデータセットを記憶したデータベースである。3Dデータセットは、複数の対象物の各々について、その対象物の3Dモデリングデータ及び付随データを含む。3Dモデリングデータは複数の要素を含む。アクセス手段12は、データベース111にアクセスする。
【0024】
受信手段13は、端末装置30からAPIリクエストを受信する。このAPIリクエストは、3Dモデリングデータの提供を要求するためのものである。このAPIリクエストは、対象物及び3Dモデリングデータに含まれる複数の要素のうち使用する要素を特定する要求情報を含む。送信手段14は、このAPIリクエストに対するAPIレスポンスを、そのAPIリクエストの送信元の端末装置に送信する。このAPIレスポンスは、データベース111から抽出された、要求情報により特定された対象物の、特定された要素からなる3Dモデリングデータにより示される3Dモデルを出力するためのデータを含む。3Dモデルを出力するためのデータは、3Dモデリングデータそのものであってもよいし、3Dモデリングデータを処理した結果を示すデータ(例えば、3Dモデルを動かした動画データ)であってもよい。制御手段15は、各種の制御を行う。
【0025】
図3は、サーバ10のハードウェア構成を例示する図である。サーバ10は、CPU(Central Processing Unit)101、メモリ102、ストレージ103、及び通信IF104を有するコンピュータ装置又は情報処理装置である。CPU101は、プログラムに従って各種の演算を行う制御装置である。メモリ102は、CPU101が処理を実行する際のワークエリアとして機能する主記憶装置である。メモリ102は、例えばRAM(Random Access Memory)及びROM(Read Only Memory)を含む。ストレージ103は、各種のデータ及びプログラムを記憶する補助記憶装置である。ストレージ103は、例えばSSD(Solid State Drive)及び/又はHDD(Hard Disc Drive)を含む。通信IF104は、所定の通信規格(例えばイーサネット)に従って他の装置と通信する装置であり、例えばNICを含む。
【0026】
この例において、ストレージ103が記憶するプログラムには、コンピュータ装置を3Dデータシステム1におけるサーバ10として機能させるためのプログラム(以下「管理サーバプログラム」という)が含まれる。CPU101が管理サーバプログラムを実行している状態において、メモリ102及びストレージ103の少なくとも一方が記憶手段11の一例である。CPU101がアクセス手段12及び制御手段15の一例である。通信IF104が受信手段13及び送信手段14の一例である。
【0027】
2.動作
2−1.基本動作
図4は、3Dデータシステム1の動作を示すシーケンスチャートである。以下において、アクセス手段12等の機能要素を処理の主体として記載することがあるが、これは、管理サーバプログラムを実行しているCPU101等のハードウェア要素が他のハードウェア要素と協働して処理を実行することを意味する。
【0028】
端末装置30のユーザは、端末装置30においてアプリケーションプログラムのダウンロードを指示する。このアプリケーションプログラムは、例えば、ユーザの3Dモデルをプレイヤーキャラクターとするビデオゲームのアプリケーションプログラムである。端末装置30は、サーバ20からアプリケーションプログラムをダウンロードする(ステップS101)。ダウンロードが完了すると、ユーザは、アプリケーションプログラムの起動を指示する。端末装置30は、アプリケーションプログラムを起動する(ステップS102)。以下このアプリケーションプログラムにより実装されるアプリケーションをアプリケーション31という。
【0029】
アプリケーション31は、3Dデータの取得に関しては、サーバ10により提供されるAPIを用いる。アプリケーション31は、サーバ10にAPIリクエストを送信する(ステップS103)。このAPIリクエストは、ユーザID及び要素IDを含む。ユーザIDは、3Dデータシステム1のユーザを一意に特定する識別情報である。要素IDは、データベース111に記録されている3Dモデリングデータ(後述)に含まれる要素のうち少なくとも一部を特定する識別情報である。
【0030】
サーバ10において、受信手段13は端末装置30からAPIリクエストを受信する(ステップS104)。アクセス手段12は、受信したAPIリクエストからユーザID及び要素IDを抽出する(ステップS105)。アクセス手段12は、データベース111にアクセスし、このユーザID及び要素IDに対応する3Dモデリングデータを抽出する(ステップS106)。
【0031】
図5は、データベース111における3Dモデリングデータの構造を例示する図である。データベース111は、複数の3Dデータセット9を含む。3Dデータセットとは、少なくとも3Dモデリングデータを含むデータ群をいう。各3Dデータセット9は、ユーザID91、3Dモデリングデータ(又は3Dモデリングデータ本体)92、及び付属データ93を含む。付属データ93は、例えば、ユーザ属性及び更新日を含む。ユーザ属性は、ユーザID、ユーザ名、生年月日、性別、身長、及び体重などユーザの属性を示す。更新日は、3Dデータセットが更新された日時を示す。
【0032】
この例において、3Dモデリングデータ92は、同じ対象物を表す複数(図では3つ)の3Dモデリングデータ921、3Dモデリングデータ922、及び3Dモデリングデータ923を含む。3Dモデリングデータ921は、対象物の形状を定義するデータを含む。対象物の形状は、ポリゴン又は自由曲面により定義される。3Dモデリングデータ921は、さらに対象物の材質に関する情報を含む。材質に関する情報は、色、透明度、反射、屈折率、自己発光、バンプ、及びディスプレイスメントのうち少なくとも1種を含む。3Dモデリングデータ921は、さらにテクスチャを含む。テクスチャはモデルに貼り付けられる画像である。同様に3Dモデリングデータ922及び3Dモデリングデータ923も、モデルの形状を定義するデータ、材質に関する情報、及びテクスチャを含む。モデルの形状を定義するデータ、材質に関する情報、及びテクスチャは、3Dモデリングデータ92を構成する複数の要素の一例である。
【0033】
一例において、これら複数のデータはそれぞれ品質が異なる。この例において、3Dモデリングデータ921は高品質(すなわちデータ量大)であり、3Dモデリングデータ922は中品質(すなわちデータ量中)であり、3Dモデリングデータ923は低品質(すなわちデータ量小)である。これら、高品質、中品質、及び低品質の3Dモデリングデータは、3Dモデリングデータ92を構成する複数の要素の一例である。
【0034】
この例において、3Dモデリングデータ921は、複数の部位に区分される。すなわち、形状、材質、及びテクスチャはそれぞれ、複数の部位に区分される。複数の部位とは、対象物の身体構造に基づく区分であり、例えば、頭、胸、腹、腰、腕、手、脚、及び足を含む。これら複数の部位の少なくとも一部は、さらに複数の副部位に細分化されてもよい。例えば、頭は、髪、目、鼻、口、及び耳に区分されてもよい。これら複数の部位は、3Dモデリングデータ92を構成する複数の要素の別の一例である。
【0035】
付属データ93は、ボーンデータを含む。ボーンは、3Dモデルを動かすための、動きの単位となる要素を示す。例えば3Dモデルがポリゴンにより表される場合、ポリゴンの頂点とボーンとの対応関係(いわゆるスキンウェイト)が設定される(いわゆるスキニング)。ボーンが動くと対応するポリゴンがボーンの動きに追従して動き、全体として3Dモデルが動く。ボーンデータも、3Dモデリングデータと同様、品質が異なる複数セットのデータを含んでもよい。なお、ボーンデータは3Dモデリングデータに含まれてもよく、その場合、ボーンデータは3Dモデリングデータ92を構成する複数の要素の一例である。
【0036】
この例において、付属データ93は、3Dモデルの動きを規定する動きデータを含む。一例において、動きデータは、例えば、歩く、走る、ジャンプする、止まる、物を投げる、泳ぐ、及びダンスする等、動作毎に、ボーンの動きとして定義される。例えば走るための動きデータは、歩幅、脚の上げ方、及び腕の振り方等を定義する。別の例において、動きデータは、3Dモデリングデータの特定の部位の動き、例えば顔の表情を規定するものであってもよい。例えば表情の動きデータは、口の開け方、目の開け方、及び眉毛の動かし方等を定義する。
【0037】
動きデータは、例えば、対象物を撮影した動画から抽出されてもよい。例えば、動きデータは、いわゆるモーションキャプチャ技術を用いて生成されてもよい。あるいは、動きデータは、3Dデータシステム1においてテンプレートとして用意され、ユーザの選択に従って又はシステムにより自動的に、その3Dモデリングデータと対応づけられてもよい。
【0038】
3Dモデリングデータは、3Dモデル生成エンジンにより生成される。3Dモデル生成エンジンとは、対象物の画像データ及び距離データからその対象物の3Dモデルを生成する生成手段の一例であり、例えばソフトウェアモジュールである。この例において、3Dモデル生成エンジンは3Dスキャナー40に実装される。3Dモデル生成エンジンは、3Dスキャナー40に加えて、又は代えて、サーバ10に実装されてもよいし、他の装置に実装されてもよい。
【0039】
再び図4を参照する。この例において、APIリクエストから抽出された要素IDは、高品質、中品質、及び低品質のうちいずれかを指定する。アクセス手段12は、APIリクエストにより指定されたユーザIDを含む3Dデータセット9の中から、要素IDにより指定されるデータを抽出する。例えば、要素IDにより高品質が指定された場合、アクセス手段12は、データベース111から、3Dモデリングデータ921及びボーンデータを読み出す。
【0040】
ステップS107において、制御手段15は、データベース111から読み出したデータに対し、端末装置30における使用を可能にするための処理を行う。使用を可能にするための処理には、例えば、ファイル形式の変換が含まれる。ファイル形式の変換は、例えば、3Dモデリングデータから他の形式の3Dモデリングデータへの変換である。あるいは、ファイル形式の変換は、3Dモデリングデータから他の種類のデータ(例えば、動画データ又は画像データ)への変換であってもよい。ステップS107において処理されたデータを以下「対象データ」という。なお、ステップS107の処理は省略されてもよい。
【0041】
制御手段15は、対象データを暗号化する(ステップS108)。この処理に関し、制御手段15は、3Dモデルを出力するためのデータを暗号化する暗号化手段の一例である。暗号化には2つの暗号鍵が用いられる。1つは、サーバ10の管理事業者の秘密鍵Km1である。もう1つは、APIリクエストを送信した端末装置30(又はそのユーザ)の公開鍵Ku2である。
【0042】
図6は、暗号化された対象データを例示する図である。制御手段15は、データベース111から読み出されたデータを、まず秘密鍵Km1で暗号化する。制御手段15はこのデータをさらに公開鍵Ku2で暗号化する。公開鍵Ku2は、例えばユーザ登録の際にサーバ10においてユーザデータベースに登録される。あるいは、公開鍵Ku2はAPIリクエストに含まれてもよい。なお、秘密鍵Km1及び公開鍵Ku2を適用する順番はこの逆、すなわち先に公開鍵Ku2で暗号化し、次に秘密鍵Km1で暗号化するものであってもよい。
【0043】
再び図4を参照する。制御手段15は、APIレスポンスを生成する(ステップS109)。このAPIレスポンスは、ステップS106において二重に暗号化された対象データを含む。送信手段14は、生成されたAPIレスポンスを、APIリクエストの送信元である端末装置30に送信する(ステップS110)。
【0044】
制御手段15は、APIの使用履歴、すなわちAPIリクエストを処理した回数をデータベース(図示略)に記録する。制御手段15は、この記録に基づいてアプリケーション31の運営事業者にAPIの利用料を課金することができる。
【0045】
なおここではAPIレスポンスが3Dモデリングデータを含む例を説明したが、先に述べたようにAPIレスポンスは3Dモデリングデータ自体を含んでいなくてもよい。例えば、サーバ10は、3Dモデリングデータを処理する処理手段(図示略)を有する。処理手段は、例えば、3Dモデリングデータにより示される3Dモデルに、仮想空間において指定された動き(例えば、ダンスやスポーツなど)をさせる動画を生成する。制御手段15は、この動画データを含むAPIレスポンスを生成する。
【0046】
端末装置30において、アプリケーション31はAPIレスポンスを受信する(ステップS111)。APIリクエストを受信すると、アプリケーション31は、端末装置30(又はそのユーザ)の秘密鍵Ku1で復号し、その後さらに管理事業者の公開鍵Km2で復号する。管理事業者の公開鍵Km2は、例えば、アプリケーション31をインストールする際に端末装置30にインストールされる。アプリケーション31のインストール用ファイルを提供するため、サーバ10の制御手段15は、サーバ20に対し公開鍵Km2を配布する(配布手段の一例)。こうして、アプリケーション31は、そのユーザの3Dモデリングデータを使用することができる。
【0047】
この例において、公開鍵Km2には有効期限が設定される。アプリケーション31からサーバ10のAPIを利用可とすることは、例えばサーバ10の運営事業者とサーバ20の運営事業者との間の契約に依存する。サーバ10の運営事業者は、この契約に合わせて公開鍵Km2の有効期限を設定することができる。サーバ10の運営事業者とサーバ20の運営事業者との契約が満了すると3Dモデリングデータは復号できなくなり、アプリケーション31において3Dモデリングデータを使用することができなくなる。引き続き3Dモデリングデータを使用するには契約の更新及びそれに伴う新たな有効期限を有する公開鍵のインストールが必要である。
【0048】
2−2.3Dモデルの再生成処理
この例において、3Dモデル生成エンジンは、3Dモデリングデータを生成するアルゴリズムがアップデートされるのに伴って、3Dモデリングデータを再生成(又は更新)する。
【0049】
この例において、付属データ93は、元画像データ、距離データ、及びアルゴリズムIDを含む。元画像データは、その3Dモデリングデータを生成する際に用いられた画像データ、すなわち対象物を撮影した画像(又は写真)のデータである。距離データは、基準位置(例えばセンサーの位置)からの距離(又は深さ)を、対象物の表面にマッピングしたデータである。アルゴリズムIDは、元画像データから3Dモデリングデータを生成する際に用いられたアルゴリズム(以下「3Dモデル化アルゴリズム」という)を特定する識別情報である。元画像データ、距離データ、及びアルゴリズムIDは、3Dモデリングデータを生成したときにデータベース111に書き込まれる。その後、時間の経過とともに3Dモデル化アルゴリズムは次々に更新されて改善されていく。しかし、アルゴリズムが更新されるたびに対象物を撮影し直していたのでは手間である。そこでこの例は、更新されたアルゴリズムを用いた3Dモデルの再生成を容易にする。
【0050】
図7は、3Dモデリングデータの再生成処理を例示するフローチャートである。ステップS201において、制御手段15は、このフローのトリガとなるイベントが発生したか判断する。このフローのトリガとなるイベントは、例えば、前回この処理を行ってから所定の時間が経過したというイベント、又は3Dモデル生成エンジンから3Dモデル化アルゴリズムが更新されたことの通知を受けたというイベントである。このフローのトリガとなるイベントが発生したと判断された場合、制御手段15は、処理をステップS202に移行する。このフローのトリガとなるイベントが発生していないと判断した場合、制御手段15は待機する。
【0051】
ステップS202において、制御手段15は、3Dモデルの再生成要求を3Dモデル生成エンジンに送信する。この処理に関し、制御手段15は、3Dモデリングデータの再生成を要求する要求手段の一例である。この再生成要求は、ユーザID、元画像データ、及び距離データを含む。3Dモデル生成エンジンは、この再生成要求に含まれる元画像データ及び距離データを用いて3Dモデリングデータを生成する。この例において、3Dモデル生成エンジンは、高品質、中品質、及び低品質の3つの3Dモデリングデータを生成する。3Dモデル生成エンジンは、生成された3Dモデリングデータを制御手段15に送信する。
【0052】
ステップS203において、制御手段15は、更新された3Dモデリングデータを受信する。すなわち制御手段15は、更新された3Dモデリングデータを取得する取得手段の一例である。ステップS204において、アクセス手段12は、3Dモデリングデータの更新要求をデータベース111に出力する。この更新要求は、ユーザID及び更新された3Dモデリングデータを含む。データベース111は、この更新要求に含まれるユーザIDに対応する3Dデータセット9に含まれる3Dモデリングデータを、この更新要求に含まれる3Dモデリングデータで上書きする。
【0053】
この例によれば、サーバ10は、最新の3Dモデル化アルゴリズムで生成された3Dモデリングデータを、新しい画像を撮影することなく得ることができる。
【0054】
2−3.仮説のシミュレーション処理
この例において、3Dモデル生成エンジンは、対象物(すなわちユーザ)の行動情報を考慮して3Dモデルを生成する。すなわち、3Dモデル生成エンジンは、仮説に基づくユーザの姿をシミュレーションする。
【0055】
付属データ93は行動情報を含む。行動情報は、元画像が撮影された日から現時点までの期間における対象物の行動を示す情報である。行動情報は、例えば、対象物の生活習慣に関する情報を含む。生活習慣とは、食事、運動、睡眠、仕事、飲酒、及び喫煙など、対象物の習慣的な行動をいう。食事に関する行動情報は、例えば、食事の回数、時間、摂取カロリー、及び栄養価の情報を含む。運動に関する行動情報は、例えば、運動の回数、時間、運動強度、及び運動の種類の情報を含む。睡眠に関する行動情報は、例えば、就寝時刻、起床時刻、及び眠りの深さの情報を含む。仕事に関する行動情報は、例えば、始業時刻及び終業時刻の情報を含む。飲酒に関する行動情報は、例えば、飲酒の回数及び量の情報を含む。喫煙に関する行動情報は、例えば、喫煙の回数及び量の情報を含む。行動情報は、例えば、3Dモデリングデータを生成する際、又は3Dモデリングデータをデータベース111に登録する際にユーザにより入力される。あるいは、端末装置330が、アプリケーション31とは別のアプリケーション(例えば健康管理アプリケーション)により収集された情報を所定のタイミングで(例えば定期的に)データベース111にアップロードする。
【0056】
図8は、仮説のシミュレーション処理を例示するフローチャートである。ステップS301において、制御手段15は、このフローのトリガとなるイベントが発生したか判断する。このフローのトリガとなるイベントは、例えば、前回この処理を行ってから所定の時間が経過したというイベント、又はユーザからのフローを開始する指示を受け付けたというイベントである。このフローのトリガとなるイベントが発生したと判断された場合、制御手段15は、処理をステップS302に移行する。このフローのトリガとなるイベントが発生していないと判断した場合、制御手段15は待機する。
【0057】
ステップS302において、制御手段15は、3Dモデルの生成要求を3Dモデル生成エンジンに送信する。この生成要求は、ユーザID及びデータベース111に記録されている行動情報の少なくとも一部、現状の3Dモデリングデータ、及び時間に関する情報を含む。制御手段15は、データベース111に記録されている行動情報のうち生成要求に含む行動情報を選択する。制御手段15は、例えば、ユーザの指示に応じて行動情報を選択する。時間に関する情報は、いつの時点の状態をシミュレーションするのか(例えば1年後なのか10年後なのか)を指定する情報である。制御手段15は、例えば、ユーザの指示に応じて時間に関する情報を指定する。
【0058】
3Dモデル生成エンジンは、この生成要求に含まれる3Dモデリングデータ及び行動情報を用いて新たな3Dモデリングデータを生成する。一例において、行動情報に基づく3Dモデルの時間変化のシミュレーションには、機械学習の技術が用いられる。3Dモデル生成エンジンは機械学習モデルを有する。この機械学習モデルは、複数のユーザの各々について、第1時点におけるユーザの3Dモデリングデータ、第1時点から第2時点までに期間におけるユーザの行動情報、及び第1時点から第2時点までの時間を入力層に、第2時点におけるユーザの3Dモデリングデータを出力層に教師データとして与えて機械学習をさせた学習済モデルである。例えば、データベース111に記録されるデータが教師データとして用いられる。3Dモデル生成エンジンは、この生成要求に含まれる、現状の3Dモデリングデータ、行動情報、及び時間に関する情報を、機械学習モデルの入力層に与える。機械学習モデルは、これらのデータに対応する3Dモデリングデータを出力する。この3Dモデリングデータは、時間に関する情報により示される日時又は時刻において予想される3Dモデルを示す。
【0059】
ここで、行動情報としてスポーツジムで定期的に筋力トレーニングを行うことを示す情報が、時間に関する情報として1年後を示す情報が入力される例を考える。この場合、機械学習モデルは、そのユーザが1年間その筋力トレーニングを続けた場合に予想される体型の変化を反映した3Dモデリングデータを出力する。
【0060】
ステップS303において、制御手段15は、3Dモデル生成エンジンから、シミュレーション結果として得られた3Dモデリングデータを取得する。制御手段15は、アプリケーション31等の要求に応じてこの3Dモデリングデータを出力する。
【0061】
この例によれば、サーバ10は、行動情報に基づくシミュレーション結果を示す(すなわち未来の予想を示す)3Dモデリングデータを得ることができる。
【0062】
2−4.ブロックチェーンに編集履歴を記録する処理
この例において、アプリケーション31は、3Dモデリングデータを編集をする機能を有する。3Dモデリングデータの編集は、例えば、髪の色を変える、髪の長さを変える、髭の有無を変える、髭の長さを変える、肌の色を変える、太らせる、痩せさせる、歳を取らせる、若返らせる、性別を変える、服を変える、眼鏡を着ける/外す、眼鏡を変える、メイクを変える、アクセサリを変える、等の処理を含む。この例においては、これらの処理による編集が正当なものであるかブロックチェーン技術を用いて検証できるようにする。
【0063】
図9は、ブロックチェーンに編集履歴を記録する処理を例示するフローチャートである。ステップS401において、制御手段15は、このフローのトリガとなるイベントが発生したか判断する。このフローのトリガとなるイベントは、例えば、ユーザからのフローを開始する指示を受け付けたというイベントである。このフローのトリガとなるイベントが発生したと判断された場合、制御手段15は、処理をステップS402に移行する。このフローのトリガとなるイベントが発生していないと判断した場合、制御手段15は待機する。
【0064】
ステップS401の処理に先立ち、又はその処理の後で、端末装置30は、ユーザから、3Dモデリングデータの編集指示を受け付ける。端末装置30は、受け付けた編集指示を示す編集履歴をサーバ10に送信する。この編集履歴は、3DモデリングデータのID及び編集の内容を示す情報を含む。
【0065】
ステップS402において、サーバ10の受信手段13は、端末装置30から編集履歴を受信する。制御手段15は、受信した編集履歴に従って3Dモデリングデータを編集(又は修正)するように、3Dモデル生成エンジンに要求する(ステップS403)。この要求は、編集履歴を含む。3Dモデル生成エンジンは、この要求に従って3Dモデリングデータを修正する。3Dモデル生成エンジンは、修正された3Dモデリングデータをサーバ10に送信する。サーバ10の制御手段15は、修正された3Dモデリングデータを受信する(ステップS404)。
【0066】
なお、3Dモデリングデータを修正する前に、制御手段15は、3Dモデリングデータの対象物であるユーザに、3Dモデリングデータの編集をしてよいか合意を求めてもよい。対象物であるユーザの合意が得られなかった場合、制御手段15は、この変種指示は対象物の意に沿わないものであるとして、3Dモデリングデータの編集を却下する。対象物であるユーザの合意が得られた場合、制御手段15は、受信した編集履歴に従って3Dモデリングデータを編集(又は修正)するように、3Dモデル生成エンジンに要求する。
【0067】
この場合において、対象物であるユーザは、自身の3Dモデリングデータを編集してよいか、包括的な許可を与えてもよい。許可を与える範囲は、例えば、対象物であるユーザにより指定される。例えば、包括的な許可は、3Dモデリングデータにおける編集対象部位を限定するものであってもよい。具体的には、ユーザは、「髪の毛の色は変更可」、「肌の色は変更不可」、及び「服装は変更不可」等、3Dモデリングデータを編集できる範囲を制限する。あるいは、包括的な許可は、編集をしようとするユーザの属性を限定するものであってもよい。具体的には、ユーザは、「編集しようとする者が男性場合は不許可」、「編集しようとする者が13歳未満の場合は許可」、及び「編集しようとする者が日本在住の場合は許可」等、3Dモデリングデータを編集できるユーザを制限する。
【0068】
制御手段15は、修正された3Dモデリングデータを、編集指示の送信元である端末装置30に送信する(ステップS405)。さらに、制御手段15は、3DモデリングデータのID及びこの編集に係る編集履歴を台帳へ書き込むことを、所定のブロックチェーンのネットワークに対して要求する(ステップS406)。この処理に関し、制御手段15は、編集履歴を台帳すなわちブロックチェーンに書き込むことを要求する要求手段の一例である。このブロックチェーンのネットワークに属するマイナーノードは、この編集履歴を受信するとマイニングを試みる。マイニングに成功したノードは、この編集履歴を含む新たなブロックを生成してこのネットワークに提供する。マイニングに成功したノード以外のノードは、新たなブロックを受信すると、そのブロックが正しい手順で生成されたものかどうか検証する。そのノードは、そのノードが正しいと認めたブロックを、そのノードが保有するブロックチェーンに追加する。このようにして、3Dモデリングデータの編集履歴がブロックチェーンに記録される。なおこの例において、ブロックチェーンに記録されるのは編集履歴だけであり、3Dモデリングデータ本体はブロックチェーンに記録されない。
【0069】
図10は、3Dモデリングデータを検証する処理を例示するフローチャートである。ステップS501において、制御手段15は、このフローのトリガとなるイベントが発生したか判断する。このフローのトリガとなるイベントは、例えば、アプリケーション31から編集履歴が真正なものであるかの確認要求を受信したというイベント、又は前回、編集履歴が真正なものであるか確認してから所定の時間が経過したというイベントである。例えば、アプリケーション31は、他のユーザからシェアされた編集履歴が真正なものであるか、サーバ10に確認を要求する。この確認要求は、例えば、3DモデリングデータのID及び検証の対象となる編集履歴を含む。このフローのトリガとなるイベントが発生したと判断された場合、制御手段15は、処理をステップS502に移行する。このフローのトリガとなるイベントが発生していないと判断した場合、制御手段15は待機する。
【0070】
ステップS502において、制御手段15は、ブロックチェーンのネットワークに台帳の開示を要求する。このブロックチェーンは、パブリックチェーン、プライベートチェーン、及びコンソーシアムチェーンのいずれであってもよい。制御手段15は、ネットワークから開示された台帳において、要求に含まれる3Dモデリングデータの編集履歴を検索する。制御手段15は、検索により得られた編集履歴と、確認要求に含まれる編集履歴とを対比する(ステップS503)。両者が一致していた場合(S503:YES)、制御手段15は、確認要求に含まれる編集履歴が真正なものであると判断する(ステップS504)。両者が一致していなかった場合(S503:NO)、制御手段15は、確認要求に含まれる編集履歴が改ざんされたと判断する(ステップS505)。
【0071】
制御手段15は、検証の結果を確認要求の送信元である端末装置30に送信する(ステップS506)。こうして、アプリケーション31は、取得した編集履歴が真正なものであるか確認をすることができる。
【0072】
3Dモデリングデータの編集に関し、ブロックチェーンを利用した処理はこれに限定されない。例えば、制御手段15は、ブロックチェーンに記録されている編集履歴から、対象となる3Dモデリングデータを過去に編集したユーザ名(及びその日時)を抽出し、これを端末装置30に提供してもよい。あるいは、制御手段15は、対象となる3Dモデリングデータのうち過去に編集された部分(及びその日時)を抽出し、これを端末装置30に提供してもよい。
【0073】
なおここでサーバ10が行うものとして説明した処理の少なくとも一部を、アプリケーション31が行ってもよい。例えば、サーバ10に代わりアプリケーション31がブロックチェーンのネットワークに台帳の開示を要求してもよい。
【0074】
3.変形例
本発明は上述の実施形態に限定されるものではなく、種々の変形実施が可能である。以下、変形例をいくつか説明する。以下の変形例に記載する事項の一部が、他の一部と組み合わせて適用されてもよい。
【0075】
実施形態においてはデータベース111に3Dモデリングデータが記録される例を説明した。しかし、3Dモデリングデータはデータベース111に記録されず、要求に応じて生成されてもよい。端末装置30からAPIリクエストを受信すると、サーバ10は、モデル生成エンジンに対し3Dモデリングデータの生成を要求する(データ要求手段としての処理の一例)。この要求は、対象物の画像データ及び距離データを含む。モデル生成エンジンは、この画像データ及び距離データをアルゴリズムに従って処理し、対象物の3Dモデリングデータを生成する。サーバ10は、こうして生成された3Dモデリングデータを取得する。この例においては、端末装置30からAPIリクエストを受信する都度、要求された3Dモデリングデータが生成される。
【0076】
上記の例において、モデル生成エンジンは異なる複数のアルゴリズムを有してもよい。モデル生成エンジンは、これら複数のアルゴリズムの中から選択された一のアルゴリズムに従って3Dモデリングデータを生成する。この場合、端末装置30から送信されるAPIリクエストは、複数のアルゴリズムの中から一のアルゴリズムを指定する情報を含む。サーバ10は、モデル生成エンジンに対して、APIリクエストにより指定されるアルゴリズムを選択して3Dモデリングデータの生成を要求する。
【0077】
編集履歴を記録する台帳はブロックチェーンに限定されない。編集履歴は、例えばサーバ10におけるデータベース等、ブロックチェーン以外の形態で記録されてもよい。編集履歴がデータベースに記録される場合において、サーバ10は、秘密鍵Km1及び公開鍵Ku2を用いた暗号化に代えて、又は加えて、編集履歴を用いて生成された情報(例えば、編集履歴のハッシュ値)を暗号鍵として用いて、対象データを暗号化してもよい。この場合、編集履歴を保持している装置のみが対象データを復号できる。
【0078】
実施形態においては、秘密鍵Km1及び公開鍵Ku2で二重に暗号化した対象データを端末装置30に送信する例を説明した。この例によれば、公開鍵Km2及び秘密鍵Ku1を有する端末でなければ対象データを復号することができない。しかし、サーバ10は、対象データの送信に先立って、端末装置30(及び/又はそのユーザ)の認証を行ってもよい。この場合において、サーバ10は、端末装置30(及び/又はそのユーザ)が認証されるまでは対象データを送信しない。
【0079】
実施形態においては、端末装置30すなわちユーザ端末からAPIリクエストを送信する例(すなわち、いわゆるBtoCのサービスの例)を説明したが、サーバ10にAPIリクエストを送信する情報処理装置は端末装置30に限定されない。サーバ20等、他の事業者が運営するサーバが、端末装置30のユーザの3Dモデルを出力するためのデータの送信を要求するAPIリクエストをサーバ10に送信してもよい。すなわちBtoBのサービスに本願発明が適用されてもよい。この場合において、Ku1及びKu2はそのサーバの事業者の秘密鍵及び公開鍵である。
【0080】
暗号鍵の有効期限は実施形態において例示したものに限定されない。例えば、端末装置30に3Dモデリングデータを送信する場合(すなわちBtoCのサービスの場合)とサーバ20に3Dモデリングデータを送信する場合(すなわちBtoBのサービスの場合)とで、公開鍵Km2の有効期限が異なっていてもよい。具体的には、前者の場合は有効期限がより長く(例えば、無期限)、後者の場合は有効期限がより短く(例えば、1年や2年等の有限)てもよい。
【0081】
実施形態においては3Dモデリングデータが、サーバ10が提供するAPIにより提供される例を説明したが、3Dモデリングデータを提供する手法はAPIを用いるものに限定されない。
【0082】
実施形態において説明された機能又は処理の一部は省略されてもよい。例えば、3Dモデリングデータが端末装置30に送信される際、暗号化されなくてもよい。
【0083】
サーバ10、サーバ20、及び端末装置30のハードウェア構成は実施形態において例示されたものに限定されない。例えば、サーバ10は物理サーバであってもよいし、いわゆるクラウド上の仮想サーバであってもよい。
【0084】
実施形態においてサーバ10が行うものとして説明した処理の少なくとも一部を、端末装置30(例えばアプリケーション31)が行ってもよい。また、これらの機能の一部は省略されてもよい。
【0085】
CPU101等が実行するプログラムは、インターネットを介してサーバからダウンロード可能な状態で提供されてもよいし、CD−ROM等の記録媒体に記憶された状態で提供されてもよい。
【要約】
サーバは、複数の対象物についての3Dデータセットを記憶したデータベースにアクセスするアクセス手段であって、前記3Dデータセットが複数の対象物の各々について当該対象物の3Dモデリングデータ及び付随データを含み、前記3Dモデリングデータが複数の要素を含むアクセス手段と、情報処理装置から、対象物及び複数の要素のうち使用する要素を特定する要求情報を含むAPIリクエストを受信する受信手段と、前記データベースから抽出された、前記要求情報により特定された対象物の、特定された要素からなる3Dモデリングデータにより示される3Dモデルを出力するためのデータを、前記APIリクエストに対するAPIレスポンスとして前記情報処理装置に送信する送信手段とを有する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10