(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-01
(45)【発行日】2022-06-09
(54)【発明の名称】3次元ボクセル・ベース・モデリングのための方法
(51)【国際特許分類】
G06T 19/20 20110101AFI20220602BHJP
【FI】
G06T19/20
(21)【出願番号】P 2017566222
(86)(22)【出願日】2016-03-14
(86)【国際出願番号】 IB2016000415
(87)【国際公開番号】W WO2016142787
(87)【国際公開日】2016-09-15
【審査請求日】2019-03-13
(32)【優先日】2015-03-12
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】517320462
【氏名又は名称】ハッピー エル-ロード アクチボラグ
【氏名又は名称原語表記】HAPPY L-LORD AB
(74)【代理人】
【識別番号】100105957
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】オリアリー、ロバート
【審査官】村松 貴士
(56)【参考文献】
【文献】Thor Helms,“A Voxel-Based Platform for Game Development”, [online],Technical University of Denmark,2013年,pp.5-28,[令和2年5月20日検索], インターネット<URL: https://www2.imm.dtu.dk/pubdb/edoc/imm6677.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/00 - 19/20
(57)【特許請求の範囲】
【請求項1】
ウェブ・ブラウザにおける3Dモデリングのための方法であって、
複数のボクセル情報をサーバから前記ウェブ・ブラウザにアップロードすることであって、前記ボクセル情報は、対応する複数の重ね合わされたボクセルグリッドを含み、各グリッドは、その中に複数の離散値を有し、各グリッド内の各対応する離散値が、異なるボクセル特性に対応し、
前記ボクセル情報は、ボクセル環境を構成し、異なるボクセル特性がボクセル環境を記述し、
前記ボクセル情報は、複数のボクセル・チャンクに分けられ、前記複数のボクセル・チャンクの各々は、前記ボクセル環境の一部分をその中に含み、
前記複数のボクセル・チャンクのうちのそれぞれの多数のボクセル・チャンクは、対応するボクセル・ゾーン・ファイルを含み、任意のボクセル・ゾーン・ファイルは、前記ウェブ・ブラウザに送信される、前記アップロードすること、
該ウェブ・ブラウザにアップロードされた複数のボクセル情報から、ボクセル・メッシュ・データ、ボクセル・データ、ボクセル・メタデータ、およびそれらの組み合わせを抽出すること、
前記任意のボクセル・ゾーン・ファイルからの前記ボクセル・メッシュ・データから前記ウェブ・ブラウザにおいて、抽出された複数のボクセル情報からの少なくとも1つの3Dモデルをレンダリングすること、を備え、
各ボクセル・ゾーン・ファイル内の各ボクセル・チャンクについて、当該ボクセル・チャンクが走査されてその中の共通ボクセル面を除去し、少なくとも1つの共通ボクセル面が除去される、3Dモデリングのための方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、3次元(3D)モデリングおよびアニメーションの改善を対象とする。
【背景技術】
【0002】
計算能力およびグラフィカル・プロセッサの向上により、仮想世界および環境全体を精巧に作ることができるツールが作成されており、それらは、能力の向上ならびにグラフィックス・ソフトウェアおよび他のツールの改善とともにますますリアルになりつつある。ゲーム業界においてなど、各業界が繁盛しており、特に、複数のプレイヤがゲームおよび仲間のプレイヤを相手に/とともに戦う多人数同時参加型ロールプレイングゲーム(MMORG)を含むゲームが繁栄している。
【0003】
処理能力の向上についていくことは、グラフィックス・ツールの洗練の程度およびリアルさへの近さの程度である。ディスプレイの解像度が高いほど、アニメーションは、ますます真に迫っているように見える。MMORGなどの現在の多人数同時参加型ゲームでは、多数の多様なプレイヤが共通のシナリオまたは冒険に参加し、プロットを共有する。投影とは、これらのタイプの体験の「共有」が、体験をさらに容易にするために、本明細書において示される技法などのより優れた技法の誕生とともに、さらに増加することを示す。
【0004】
3次元すなわち3Dモデリングおよびアニメーション・システムは、今日、まずユーザがクライアント・ファイルをダウンロードすることに一般に依存しており、クライアント・ファイルは、数ギガバイトのデータからなることが多い。また、当技術分野で理解されるように、3Dモデリングは一般的には、3D多角形モデリング技法を利用して実行され、3Dモデリング・エンジンがグラフィカルに解釈して視覚化することができるサーフェス/メッシュが定義される。
【0005】
イメージング機能の改善は現にゲームをはるかに超え、これらの同じ原理は、さまざまな他の適用例にも適合および適用が可能であり、そのようなものは、医用画像、建築または建物のモデリング、構成要素またはデバイスのモデリングなどにおいて使用され、現実世界のシナリオならびに想像上のシナリオまたは潜在的なシナリオをモデル化する際の多種多様の現在の利用および潜在的な使用を包含することを理解されたい。
【0006】
しかしながら、3Dモデリングにおいて用いられるソフトウェア・ツールのいっそうの技術的洗練によって、進出のかなりの障壁が生まれる。現在、ユーザの必須技術スキルのセットは、高くなければならないのである。たとえば、最新の3Dモデルの作成は多角形モデリング技法を用いるが、この技法は一般的に、3Dモデル制作者が、そのような多角形3Dモデリングのために、大学レベルのプログラムにおいて高等数学、データ構造、およびグラフィカル・ユーザ・インタフェースのためのコンピュータ・モデリング・アルゴリズムを含む広範な訓練を受けることを必要とする。
【0007】
したがって、必要とされるものは、特に現在用いられている複雑なサーフェス・モデリング技法に関して必ずしもそれほど技術的に訓練を受けていないユーザをその気にさせる、代替のより簡単なモデリング手法である。より単純なパラダイムを提供するために本発明において用いられる1つのツールは、前述のサーフェス・モデリングの代わりにボクセル(voxel)を用いる。
【0008】
ボクセルは、高速で単純であるなどのさまざまな利点を有する体積ピクセルである。さらに、出願人は、本発明の教示による、ボクセルを用いる3Dモデリングは一般的に、中程度にコンピュータに習熟した人なら誰でも実行できることを見出した。説明するように、ボクセルは、(単にサーフェスではなく)ボリュームの3Dモデリングを含み、この技術を使用および理解することをより簡単にする、すなわち、一般の人々にとって、より利用しやすいものにする。
【0009】
しかしながら、ボクセルの利用は高くつき、ボクセル技術の主な欠点は、必要とされるプロセッサ負荷である。実際、より多くのボクセルが追加されるほど、ボクセル間の複雑さは劇的に増加し、各ボクセル、各体積(volumetric)構成要素を追跡すると、特にそれによって表されるボクセルおよびオブジェクトの数が増加するので、コンピュータ・プロセッサに関するかなりの要件が急速に高まる。そのうえ、数個または多数のクライアントが1つのサーバに接続するサーバ・クライアント・ソリューションは、かなりの容量要件をサーバおよびサーバとクライアントとの間の通信に課す。
【0010】
この場合も、必要とされるものは、本明細書において提案されるものなどの、3Dモデリングのボクセルの多い環境におけるプロセッサの負荷に関連付けられた技術的問題に対処する改善された技法およびシステムである。
【発明の概要】
【発明が解決しようとする課題】
【0011】
本発明は、たとえば、ウェブ上でコンテンツを構築および提示するための有力なハイパーテキスト・マークアップ言語プロトコルの新しい第5版であるHTLM5を利用するシステムを実施するなどの、クライアント・アーキテクチャ・システム内のボクセル3Dモデリングおよびアニメーション・システムに関連するさまざまな技術的問題を解決する。既存の標準およびプロトコルの利用は、多数のユーザ(最大で80%ものユーザであることが多い)が、そのような技術を用いてソフトウェア・クライアント・ファイルをダウンロードすることを選ばない、または大容量ソフトウェア・クライアントのダウンロードの完了を待てるほど忍耐強くないここのような状況では、重要である。
【0012】
したがって、現在、既存のモデリング方法を改善して、より使いやすくし、ダウンロードをより簡単にし、より効率的なものにするシステム、方法、技法、デバイス、装置、およびアーキテクチャを提供することが必要である。
【0013】
したがって、専門的な訓練を受けていない(または最も限られた量の専門的な訓練を受けた)ユーザを平均化することによって簡単なやり方で編集できる、そのようなモデリング・システムを提供することが本発明の目的である。
【0014】
あるユーザによって作製された3Dモデルおよびアニメーションを簡単で効果的なやり方で他のユーザに配信するための機能を提供することが本発明の別の目的である。
【課題を解決するための手段】
【0015】
本発明は、たとえばウェブ・ブラウザを主要ユーザ・インタフェースとして使用して、クライアント・サーバ・システムにおいてボクセル3Dモデリング技法を実施するためのシステム、装置、および方法を対象とする。
【0016】
本明細書は、本発明を形成すると見なされる主題を詳細に指摘し、明確に請求する特許請求の範囲で終わるが、本発明は、添付の図面と併せて取り上げる以下の説明からより良好に理解されると考えられる。添付の図面では、同じ参照番号は、同じ構造的要素および他の要素を示す。
【図面の簡単な説明】
【0017】
【
図1】2値ボクセル値が形状を定義する、単純なマニホルド・グラフィカル形状の図。
【
図2】複数の形状および特性を定義するために複数の値を有するいくつかのボクセルから構成されるより詳細なグラフィカル形状の1実施形態を示す図。
【
図3】本発明による、単一の高次元ボクセル・グリッド値への個別のボクセル・グリッド値の階層化または積み重ねを説明する図。
【
図4】本発明の原理によるブラウザ上で使用するためのサーバから標準ウェブ・ブラウザへのボクセル・グリッド・データの転送のための手順の1実施形態を示す図。
【
図5】本発明の教示によるボクセル環境ゾーン・ファイルの各セグメントすなわちチャンクに関連付けられたメッシュ、ボクセル・データ、およびメタデータとともに、本発明の教示によるボクセル環境ゾーン・ファイル構造の1実施形態を示す図。
【
図6】本発明の別の実施形態による、その中におけるメッシュ、ボクセル・データ、およびメタデータの分離とともに、サーバから標準ウェブ・ブラウザへのボクセル・ゾーン・ファイルの転送のための機構の1実施形態を示す図。
【
図7】
図6に示される転送機構が別々に行われる本発明の別の実施形態を示す図。
【
図8】本発明の教示による、ブラウザが、ボクセル・データを処理するためにプライマリ・スレッドとセカンダリ・スレッドとをその中に有する、サーバから標準ウェブ・ブラウザへのボクセル・グリッドの転送のための別の実施形態を示す図。
【
図9】ボクセル表現の簡略化のための技法の1実施形態を示す図。
【
図10】本発明の教示による、人間の表現のためのヒューマノイド動的モデルの骨組みすなわちフレームワークを示す図。
【
図11】本発明の原理によるユーザ・ナビゲーションを容易にするようにポータル座標をその中に記憶するためのボクセル・メタデータの例示的な使用法を示す図。
【
図12】本発明による、いくつかのイベントの発生を扱うための1実施形態を示す図。
【
図13】本発明による、画像を投影するための好ましいモデリング技法を示す図。
【
図14】本発明の原理を実施する際に使用され得る構成要素および機器の例示的な構成を示す図。
【発明を実施するための形態】
【0018】
以下で本文に記載されているさまざまな図は、例示的な構成において本発明の原理を用いてボクセル3Dモデリングを実施するためのシステムおよび方法のさまざまな態様および特徴の代表的なビューを提供する。
【0019】
次に、本発明が、本発明の好ましい実施形態が示されている、本明細書において記載される添付の図面を参照して、以下でより十分に説明される。もちろん、しかしながら、本発明は、多数の異なる形で実施されてよく、本明細書において記載される実施形態に限定されると解釈すべきではないことが理解される。むしろ、これらの実施形態は、開示が徹底的で完全であり、本発明の範囲を当業者に十分に伝えるように提供される。したがって、本発明の範囲から逸脱することなく、他の実施形態が利用でき、構造上の変更が行われてよいことを理解されたい。
【0020】
説明されたように、プロセッサの計算能力を増加させることによって、高次のソフトウェア・ツールが引き続き使用可能になる。しかしながら、ボクセルを使用すると、個別のボクセル(discrete voxels)の互いとの、および環境との相互関連性により、計算の複雑性が生じ得る。以下で説明および図示されるように、本発明は、機器の技術的問題を克服し、たいていのモデリング・ソフトウェアのユーザ知識しきい値問題も克服し、高度ソフトウェア・スキル・セットを持たないユーザが、本明細書において示されるものなどの新しいソフトウェア・モデリング・ツールの利点を用いることを可能にする。
【0021】
以下で説明されるように、本発明の多くの特徴を十分に説明するために、いくつかのトピック・カテゴリが本明細書において用いられる。用いられるカテゴリの記述は例示的なものであり、順序などは、使用される説明は別として、必ずしも重要性のレベルを暗示するものとは限らないことを理解されたい。
【0022】
1.高次元ボクセル環境
説明されるように、体積ピクセル(「ボクセル」)は、3D空間またはグリッドの概念を利用する、3次元空間およびその中に含まれるオブジェクトのモデリングの手法であり、グリッド上の各点は値を含む。これらの値は、ボクセル環境のいかなる側面も表すことができる。たとえば、2値ボクセル値は、単純なマニホルド形状(manifold shape)をモデル化するために、「中実(solid)」および「非中実(not solid)」を表すために使用可能である。
【0023】
ここで図面の
図1を参照すると、参照番号100によって全体的に指定される、マニホルド空間および画像の基本的表現が示されている。必要とされるボクセル単位すなわち空間の粒度が、その中の形状をウサギと視覚的に定義するのに適切であることは、直ちに明らかである。画像100内のすべてのボクセルの値が2値である、すなわち、ボイド(void)または示されるウサギ形状の一部のどちらかであることが、さらに明らかである。したがって、画像100のための3次元空間のグリッドすなわち配列は、1およびゼロの行列のみからなる。
【0024】
もちろん、ボクセルに対する単純な2値使用ではなく、代わりに、10進または16進などのより大きい基本的進法が、環境およびオブジェクトの体積モデリングにおけるより多種多様な材料、たとえば、「ガラス」、「木」、「水」などを表すために使用可能であることは理解されたい。言い換えれば、各ボクセルに関連付けられた数値は、境界または差異を提供するのに十分に変化することができ、示されるものなどのより複雑な画像をレンダリングするためのより高レベルの方法論を可能にする。
【0025】
ここで図面の
図2を参照すると、参照番号200によって全体的に指定される、はるかに複雑な画像を有する空間の別の表現が示されている。画像200を構築するために用いられるボクセル間にいくつかの階調があり、多数に対して、オブジェクトを有する環境すなわちシーンの個別の部分、たとえば、参照番号202によって全体的に指定される水、参照番号204によって全体的に指定される島(または単に陸)、参照番号206によって全体的に指定される木、島204の頂上にある氷河(または雪)208、氷河208から発し、陸204を横切って、水202に注ぐ川210などの輪郭をその上に描くことが、直ちに明らかである。依然として外観は単純すぎるが、画像100にまさる画像200の複雑さは著しく進んでいる。
【0026】
このシステム・モデルでは、各ボクセルが複数の値を含む単一の高次元グリッドを作り出すために、複数の重ね合わされたボクセル・グリッドを使用するボクセル環境が用いられている。
図2に示されるように、次いで、これらの値は、物理的ボクセル属性および非物理的ボクセル属性、たとえば、材料(前述の「水」、「島」、「川」など)、ならびに、温度、湿度レベル、圧縮レベル、密度、重量、および同じく数値的にモデル化可能な他の任意の値などの、示されていない他の属性を表すために使用される。
【0027】
図1の画像100に関連して図示および説明されるものなどの単一次元ボクセル・グリッドの、
図2の画像200において用いられるはるかに詳細な多次元グリッドへのこの拡張は、より豊かで、より複雑な環境を提供する。たとえば、単一ボクセルは、以下の値などのいくつかの個別の特性を含んでよい。
【0028】
材料:水
温度:摂氏101度
圧縮:0.1
重量:18.01528
温度に関する属性または特性は水の沸点を上回っており、圧縮は、材料が空気よりも低い重量を有するのに十分なほど低いので、上記で説明された組み合わせは、実際には、水ではなく水蒸気をモデル化することを理解されたい。
【0029】
従来の単一次元ではなく高次元の、ボクセル環境をそのようにモデル化することによって、出願人は、これらの環境は、より複雑な材料およびそれらの材料間の相互作用をモデル化する、より表現力豊かな環境を作り出すことができることを見出した。そして、これらのツールを使用しやすく、用いやすくすることによって、日常的なソフトウェア・ユーザは、これらの新しい技法をより容易に習得して用いることができる。
【0030】
ここで図面の
図3を参照すると、好ましい1実施形態では参照番号300によって全体的に指定される、本発明によって用いられる高次元モデリングの表現がどのように機能するかが示されている。たとえば、特定のボクセル内の属性のスタッキング(stacking)または階層化をより良く視覚化するために、さまざまな個々の特性または属性が、1つの属性のみを有するいくつかのボクセル、たとえば、参照番号302によって全体的に指定される材料ボクセル・グリッド、参照番号304によって全体的に指定される温度ボクセル・グリッド、参照番号306によって全体的に指定される圧縮ボクセル・グリッド、および他の所望のまたは必要な特性または属性のためのその他に分割されて示されている。属性に関する多種多様のこれらの個別の1次元ボクセル・グリッド(discrete, one-dimensional voxel grids)は、そのように視覚化されてよく、それらのグリッドはすべて、参照番号308によって全体的に指定される単一の高次元ボクセル・グリッドに結合され、そのボクセルに関する値の行列またはグリッド内のそれぞれの値によって表される前述の特性または属性のすべては、より高次元の表現を形成することを理解されたい。
【0031】
論じられたように、これらの高次元ボクセル・グリッドの適用例としては、複雑なビデオ・ゲーム環境や、医療環境またはエンジニアリング環境において使用するための複雑な現実世界の材料のモデリング、たとえば、動物組織および植物組織または複合合金の材料、密度、温度、電気抵抗、および圧縮のモデリングがある。それぞれのボクセルまたはボクセルのグループ(グリッド)内に特性を容易に与えることによって、かなり複雑で相互関係のある構造が、当技術分野のより複雑なサーフェス・マッピングおよびモデリング技法を使用するよりもはるかに容易にモデル化可能である。
【0032】
2.ウェブ・ブラウザ内のボクセル環境
論じられたように、ボクセル環境は、一般的に記憶のために大量のメモリを必要とし、読み取りのための一時メモリ(RAM)、たとえば、
図14のコンピュータ・システム1400の中に示されるRAMメモリ1420の中で圧縮解除されなければならず、または低性能の読み取り時間を有するデータ構造内に記憶されなければならない(たとえば、0(1)の読み取り時間を提供する単純配列に対して、0(log(n))の読み取り時間を提供する八分木)。
【0033】
したがって、ボクセル環境の生成およびレンダリングは、
図14ではハード・ドライブ1425(および他のメモリ)、プロセッサ1415を有する前述のコンピュータ・システム1400などの、大量のワーキング・メモリおよび処理能力が直ちに利用可能であり、カスタム・ソフトウェアのダウンロードおよびインストールが必要とされる、デスクトップ・コンピュータなどのコンピューティング環境に限定されている。論じられたように、たいていのソフトウェア・ツールのダウンロード要件は、さまざまなユーザの期待および懸念と衝突するものであり、ユーザは、潜在的にウイルスを含むソフトウェアのダウンロードを必要とするいかなるプログラムも回避し得る。
【0034】
しかしながら、本発明は、代わりに、現在の標準ウェブ・ブラウザ内でボクセル環境を生成およびレンダリングすることを可能にし、いかなるカスタム・ソフトウェアのインストールも必要としない。ボクセル環境は、標準ウェブ・サーバからハイパーテキスト転送プロトコル(HTTP)要求を介して配信され、ブラウザにおいてリアルタイムで対話式であり、好ましくは、プラグインまたは非標準ブラウザまたはサーバ特徴を必要としない。
【0035】
本ボクセル環境は、好ましくは、ブラウザ内でJavaScriptプログラミング言語を使用して容易に読み取られ、すべての最近のブラウザにおける同じく標準的プログラミング言語ウェブ・グラフィックス・ライブラリ(ウェブGL)を使用してレンダリングされるものなどの、高度に最適化されたファイル形式で記憶される。
【0036】
したがって、そのように作成された環境は、
図14に示されるデスクトップ・コンピュータおよびラップトップ・コンピュータなどの従来のコンピューティング・プラットフォーム、ならびにタブレットおよび携帯電話などのプラットフォーム上のすべての最近のウェブ・ブラウザにおいてウェブ上でアクセス可能および対話式であり、これらを通して、これらの機能は、
図14における例示的なコンピュータ・システム1400などの、より従来的なデスクトップ・パーソナル・システムまたはゲーム・システム上の代わりに、実行されてよい。
【0037】
ここで
図4の図面を参照すると、本発明のツールがダウンロードを容易にすることができる、参照番号400によって全体的に指定される前述のウェブ・アクセシビリティの表現が示されている。論じられたように、標準ウェブ・サーバ404上の参照番号402によって全体的に指定されるボクセル・グリッドは、参照番号406によって全体的に指定される、HTTPを介して、またはHTTPS(トランスポート層セキュリティを有するHTTP)を介して、ウェブ・ブラウザ408に配信され、ウェブ・ブラウザ408では、参照番号410によって全体的に指定される現在視認可能で対話式のボクセル・グリッドは、たとえば、レンダリングする際などに、先におよび以下で前述の
図14に関連して説明および図示されるように、ウェブ・ブラウザ408(または
図14におけるコンピュータ・ディスプレイ1405上のグラフィカル・ユーザ・インタフェースすなわちブラウザ1410)内で、ユーザによって使用される準備が整っている。
【0038】
3.ウェブ・ブラウザ内の高次元ボクセル環境
したがって、本発明における、複雑な高次元ボクセル環境を作成および記憶できることと、これらの環境を標準ウェブ通信プロトコル上で配信し、それらを最近のウェブ・ブラウザ内で標準プログラミング言語を使用してレンダリングできることを組み合わせて、本発明は、先に
図4に関連して図示および説明され、さらに以下で説明されるプロトコルを用いることなどによって、ウェブ・ブラウザ408内で複雑な高次元ボクセル環境を提供することができる。
【0039】
4.ウェブ・ベース・ボクセル・ワールド・ファイル形式
図示および説明されたボクセル使用の非常に多くの利点にもかかわらず、ウェブ・ブラウザ408などのウェブ・ブラウザに前述のボクセル環境を効率的に適時に配信しようとする際のいくつかの課題が提示されている。
【0040】
各ボクセルが変数の層とともに含まれる
図4に示されるものなどのボクセル・グリッドは、一般に非常に大きく、したがって、通常、環境のローディングの前の非常に長い待機および環境全体を記憶するためのワーキング・メモリの過度の使用を回避するために、サーバ404からブラウザ408に少しずつ配信されなければならない。これらのいわゆるボクセル環境の断片は、以下では「チャンク(chunk)」と呼ばれ、チャンク(またはその断片)の組み合わせは、本発明を容易にする。
【0041】
ボクセル環境のレンダリングのために必要とされるいかなる処理も、ブラウザ408などのブラウザ内で実行される場合は(ブラウザ・ベースのプログラミング言語のサンドボックス性(sandboxed nature)により)時間がかかり、したがって、そのような処理は、対話式環境をリアルタイムで配信するために最小限にされなければならないことを理解されたい。
【0042】
サーバ404などのサーバから多数のチャンクを要求することは、多数のHTTP要求を必要とする。今度は、これによって、要求の作成およびディスパッチにおいて大量の通信オーバヘッドが生成される。したがって、この通信オーバヘッドは、ウェブ・ベース・ボクセル環境の性能を制限する。
【0043】
これらのスループット制限を克服するために、本発明は、ボクセル環境ゾーン・ファイル形式(voxel environment zone file format)の開発を示す。
動作時、ボクセル環境ゾーン・ファイル形式は、前述のチャンクの多くを互いに結合して、より少数のゾーン・ファイルを生成する。ゾーン・ファイルの各々は、全体環境の一部を含む。例を挙げると、出願人は、本明細書において、ゾーン・ファイルにつき32×32のチャンクの標準2Dグリッドを使用する。これは例示的な作業標準であるが、当業者には理解されるように、グリッドのサイズおよび形状は、もちろん、任意のゾーン・ファイル・サイズに変化してよい。
【0044】
各チャンクは、バイトのシーケンスとして記憶される。多数のチャンクは単一のゾーン・ファイル内に一緒に記憶され、このゾーン・ファイルは、単一のHTTP406要求を用いてブラウザ408に配信され、したがって、通信オーバヘッドの制限要因をなくす(または、少なくとも著しく最小限にする)。
【0045】
ゾーン・ファイル内のデータ・セグメントは、チャンクごとに、可読ボクセル・メッシュ(readable voxel mesh)と、チャンクのためのボクセル・データのグリッドと、問題のチャンクに関連する任意の追加のデータとを含む。各データ要素は、以下でより詳細に論じられる。
【0046】
ここで図面の
図5を参照すると、参照番号500によって全体的に指定される、前述のボクセル・ゾーン・ファイルおよびその中の部分の表現が示されている。
図5に示されるように、参照番号502によって全体的に指定される例示的なボクセル環境ゾーン・ファイルは、各々が参照番号504によって全体的に指定されるいくつかの個別のチャンクをその中に含む。論じられたように、チャンク504の各々は、メッシュと、ボクセル・データと、メタデータとをその中に含む。
【0047】
論じられたように、および
図5に示されるように、各チャンク504は、参照番号506によって全体的に指定される、ウェブGLを使用したウェブ・ブラウザ408上でのレンダリングの準備が整っている可読ボクセル・メッシュを含む。「メッシュ」という用語は、視認可能なオブジェクトが作成される三角形または四角形の集合を表すために使用される数値データのリストのセットを意味することを理解されたい。メッシュを構成するために必要とされる最小データは、頂点(3次元空間内の点)とインデックス(三角形、四角形、または他の形状を構成するために使用される頂点間の接続)のセットである。しかしながら、先に説明された、本明細書におけるファイル形式は、頂点につき複数の属性の包含を提供し、したがって、高次元ボクセル・グリッドのレンダリングを提供する。
【0048】
また、論じられたように、および
図5に示されるように、各チャンク504は、参照番号508によって全体的に指定されるボクセル・データを含む。このデータ508は、環境との対話、たとえば、前述のブラウザ408または衝突系(collision systems)および規則に基づくセルラー・オートマタ(cellular automata)(一般的には、たとえば、人工知能またはAI挙動の計画のために、または液体および気体シミュレーション・システム内で使用される)などの、環境の構造についての情報に依存するシステム内のチャンク504の編集を容易にするために使用される。
【0049】
最後に、論じられたように、および
図5に示されるように、各チャンク504は、参照番号510によって全体的に指定される、非ボクセル・エンティティまたはメタデータの記憶のためにチャンクごとに必要とされる任意の追加のまたは余分なデータを含む。たとえば、アニメーションのキャラクタまたは粒子放射体の位置決めが、そのようなメタデータ510を構成する。
【0050】
ここで図面の
図6を参照すると、参照番号600によって全体的に指定される、
図4などにおいてウェブ・アクセシビリティを簡単にするための先に示された構造および方法論にまさる改良点である、前述のアクセシビリティの容易さの表現が示されている。
【0051】
図6に示されるように、参照番号602および同じく先の502によって全体的に指定されるボクセル・ゾーン・ファイルは、いくつかのチャンクをその中に含み、たとえば、参照番号604によって全体的に指定される、例示的なゾーン・ファイル構造化における9つが、標準ウェブ・サーバ上にある。動作時、次いで、ボクセル・ゾーン・ファイル602が、参照番号606によって全体的に指定される、HTTPを介して、またはHTTPSを介して、ウェブ・ブラウザ608に配信され、ウェブ・ブラウザ608では、参照番号610によって全体的に指定される現在視認可能な高性能ボクセル環境が表示され、レンダリングなどにおいて使用される準備が整っている。
【0052】
また、
図5に関連して図示および説明されたように、参照番号612によって全体的に指定される(チャンク504からの)ボクセル・メッシュは、説明されたように、レンダリングのためにウェブGLに直接的に送られる。それぞれ参照番号614および616によって全体的に指定される、先に説明されたようにJavaScriptシステムが対話機能に使用するボクセル・データおよびメタデータも示されている。ゾーン・ファイル502/602内のチャンク504ごとの前述のボクセル・メッシュ612、ボクセル・データ614、およびメタデータ616は、以下でさらに説明されるように、レンダリングのために収集され、個別にまたは組み合わされて送られることを理解されたい。
【0053】
ボクセル・データは、好ましくは、以下の形式を使用してアドレス指定可能なバイトのシーケンスとして記憶されることを理解されたい。
インデックス=x+(チャンク深さ*z)+((チャンク幅*チャンク幅)*y)
このようにして、チャンクは、任意の幅および深さとすることができ、ボクセル・データのインデックスを計算するときチャンクの高さは必要でないので、同じボクセル環境内で可変の高さとすることもできる。また、多次元データのインデックスは単に以下のように計算されるので、任意の数の次元が、この形式で記憶可能である。
【0054】
次元0=x+(モデル幅*z)+((モデル幅*モデル幅)*y)
次元1=次元0+1
次元2=次元0+2
次元3=次元0+3
...
次元N=次元0+N
5.ウェブ・ベース・ボクセル・モデル・ファイル形式
図1に関連したものなどの、先に図示および説明された2値ボクセル・チャンク・ファイル形式に加えて、本明細書における本発明は、ボクセル・モデルのためのバイナリ・ファイル形式の開発も対象とし、モデルは、家、家具、武器、身体の一部(頭部、腕、手など)、ならびに他のタイプのようなオブジェクトである。
【0055】
この形式は、ブラウザ内でウェブGLを使用してレンダリングされる準備の整った符号化されたメッシュと、モデルが構成されるボクセル・データとを含む。
ウェブGLは、先のボクセル・メッシュ506などの、レンダリングされるであろうメッシュのサイズに上限を課すので、このサイズを上回るモデルは、好ましくは、ファイル内で複数のメッシュに分解され、これらのメッシュ内の頂点のオフセットは、モデルの中心に対する値から構成される。
【0056】
このようにして、モデルのためのメッシュのセットがレンダリングされると、モデルは単一のメッシュであるように見えるが、実際には、正確に位置合わせされた複数のメッシュから構成される。
【0057】
ここで図面の
図7を参照すると、参照番号700によって全体的に指定される、いくつかの前述のボクセル・メッシュおよびボクセル・モデル・ファイルに形成されたデータの表現が示されている。
図5および
図6に関連して論じられ図示されたように、ボクセル・メッシュ506および612はそれぞれ、転送のためにモデル700内で分解され、次いで、再構成されると、参照番号702によって全体的に指定される個別のメッシュ要素として見え、モデル700のための複数のメッシュ702は、レンダリングのためにウェブGLに直接的に送られる。参照番号704によって全体的に指定される、モデル700のためのデータ(ならびにメタデータ)を表すボクセル・データも、
図7に示されており、ボクセル・データは、先に論じられたように、対話機能に用いられる。
【0058】
動作時、バイナリ・モデル・ファイル700のヘッダは、メッシュ702セグメントの数およびサイズのリスト、ならびにボクセル・データ704のオフセットを含む。ボクセル・データ704は高次元であり、ファイル・ヘッダは、各ボクセルに割り当てられたバイトの数を示す。モデリングのためのボクセル・データは、モデルの外接長方形に等しい次元のグリッド(モデルの幅、高さ、および深さ)内に記憶される。このデータは、上記で説明された、ボクセル・グリッド・データのための方式を使用してアドレス指定されたバイトのシーケンス内に記憶される。したがって、高次元ボクセル・データのモデルは、記憶およびレンダリングが可能である。
【0059】
6.JavaScriptウェブ・ベース・ボクセル・ワールド・ファイル・インタプリタ(JavaScript web-based voxel world file interpreter)
特に、ファイル602などのボクセル・チャンクのゾーン・ファイル802が、
図6内のブラウザ608などのブラウザにダウンロードされると、ゾーン・ファイル602は、論じられたように、JavaScriptプログラミング言語を使用して開かれ、読み取られることを必要とする。この工程は、好ましくは、3つのステップから構成される。
【0060】
(1)ボクセル・メッシュ612などのメッシュ・バイト・シーケンスの、使用可能なウェブGLバッファへの変換
(2)ボクセル・データ614などの高次元ボクセル・データの、使用可能なJavaScript単一次元配列への抽出
(3)メタデータ616などのチャンク・メタデータの、使用可能なJavaScriptデータ構造への抽出
当業者によって理解されるように、ゾーン・ファイル・データはすでに、ターゲット・プログラミング言語で使用される準備の整った形式およびシーケンスで準備されているので、この工程は、定義によって高度に最適化される。
【0061】
しかしながら、ウェブGLバッファは、複数の数字形式、つまり、低アルファベット・サイズのデータのためのシングル・バイト、より大きな自然数形式におけるデータのための整数、および実数精度を必要とするデータのための浮動小数点値のデータを必要とすることがある。バイト・シーケンスの、可変サイズの数値バッファへの再パッキング(repacking)のこの工程は、バイト・シーケンスが、JavaScript Arrayバッファによって用いられ得るものなどの、byte、integer、およびfloatに再フォーマットされることを必要する。
【0062】
このパッキング活動(packing activity)が実行される間のスムーズな機能を可能にするブラウザ608のユーザ・インタフェースのために、出願人は、ウェブ・ワーカ、つまり、以下で
図14に関連して図示および説明される構成要素および機器などのデスクトップ・マシンおよびモバイル・デバイスで見られる最近の中央処理装置の多重処理能力を利用できるセカンダリ処理スレッドを使用してボクセル・データのこのセグメンテーションを実行するシステムを開発した。
【0063】
ここで図面の
図8を参照すると、参照番号800によって全体的に指定される、上記で説明された、必要な形式へのボクセル・モデル・ファイル内のデータの変換のための簡素化された手順の表現が示されている。図示のように、いくつかのチャンクをその中に含む参照番号802によって全体的に指定される高次元ボクセル・グリッド(ボクセル・ゾーン・ファイル)は、参照番号804によって全体的に指定される標準ウェブ・サーバ上にある。動作時、次いで、ボクセル・グリッド802が、参照番号806によって全体的に指定される、HTTPを介して、またはHTTPSを介して、標準ウェブ・ブラウザ808に配信され、標準ウェブ・ブラウザ808では、参照番号810によって全体的に指定される現在視認可能な高性能ボクセル環境が、説明されたように、レンダリングまたは他の用途に使用可能にされる。また、先に
図5~
図7に関連して図示および説明されたように、参照番号811によって全体的に指定されるチャンクなどのチャンクごとに、その環境から、それからデータを抽出し、抽出工程は、参照番号813によって全体的に指定される。
【0064】
先におよび本明細書において
図8に関して図示されたように、(チャンクからの)ボクセル・メッシュは、それによって生成され、参照番号812によって全体的に指定され、参照番号814によって全体的に指定されるボクセル・データおよび参照番号816によって全体的に指定されるボクセル・メタデータと同様に、抽出される。メッシュ・データ812は、次いで、参照番号815によって全体的に指定される形式メッシュ・バッファを通して、ウェブGL動作において使用されるために、参照番号818によって全体的に指定されるByte形式、参照番号820によって全体的に指定される整数(Int)形式、および参照番号822によって全体的に指定される浮動小数点(Float)形式を含む前述の複数の数値形式に処理される。
【0065】
図8をさらに参照すると、前述の環境810のそれぞれの個別のチャンク811の、それぞれのデータ形式への上記の処理のすべては、参照番号809によって全体的に指定される、ブラウザ808内の工程またはサブルーチンである、いわゆるセカンダリ・ウェブ・ワーカ処理スレッド内で行われる。参照番号813によって全体的に指定される、より高次またはより重要な工程またはルーチンであるプライマリ処理スレッドも示されている。プライマリ処理スレッドでは、説明されたように、現在Byte818構成要素、Int820構成要素、およびFloat822構成要素へと抽出されたメッシュ・データ812が、レンダリングのためにウェブGLに送られる。同じく説明されたように、ボクセル・データ814およびメタデータ816は、プライマリ処理スレッド813内で上記の対話機能に用いられることを理解されたい。
【0066】
7.ウェブ・ベース・ボクセル・ワールド・メッシュ・ジェネレータ
論じられたように、前述のボクセル環境ゾーン・ファイル602およびボクセル・モデル・ファイル702を生成するために、レンダリング可能なメッシュ812にボクセル・データを変換するシステムを作成することが必要である。これらのメッシュ812は、高次元ボクセル・データのすべての態様をレンダリングするのに十分なデータを含まなければならず、ウェブGLプログラミング言語において頂点バッファとして使用するためにフォーマットされなければならないことを理解されたい。
【0067】
複数のバイトのデータ(すなわち、整数値および浮動小数点値)によって表される頂点データは、
図8に関連して図示および説明されるように、ウェブ・ブラウザ808のセカンダリ・ウェブ・ワーカ・スレッド809内での急速な解凍のための準備が整ったバイトのシーケンスとして生成されなければならない。
【0068】
ボクセル・メッシュ812は、大量のメッシュ・フラグメント(頂点、インデックス、および高次元ボクセル・データ・バッファから構成される三角形または四角形)を含むことができるので、メッシュが高度に最適化されることが必要である。最適化されていないメッシュは、過度に大きなゾーン・ファイル602を生じさせ、ウェブGLを介したレンダリングのためにクライアント・グラフィックス・チップ上のバッファにロードされたとき、サーバ604からブラウザ608への転送速度の遅さと、頂点数の多さを招く。頂点数が多いことが、
図14に示されるグラフィックス・カードまたはチップ1430などのグラフィックス・カード上で大量のシステム・メモリが消費されることにつながり、それが、クライアント・マシン1400上のメイン・メモリ1425と比較的制限されたグラフィックス・メモリ1435との間のデータの頻繁なページングをもたらす。これは、性能が著しく低下する原因となる。
【0069】
また、頂点数が多いことは、グラフィックス・チップ1430上の大量の処理能力がフラグメント・シェーディング(メッシュ・フラグメントを表すピクセルのための適切な色を決定する工程)専用であることを招く。この結果、フレーム・レート(3Dシーン内の各フレームをレンダリングするために必要とされるミリ秒の数)の著しい低下を招き、ユーザの、遅く、反応の鈍い体験をもたらす。
【0070】
最後に、このデータは、バイナリ・ゾーン・ファイル内での記憶およびそれからの読み取りのためにフォーマットされなければならない。
ユーザのためのスムーズで効率的な体験を提供するために、本発明によるメッシュ・ジェネレータは、3次元で、つまり、上から下、左から右、および前面から背面に各チャンクまたはモデルを最初に走査することによって動作する。各ボクセルの各面が調べられる。ボクセル面が、中実である別のボクセル面に隣接する(すなわち、ブラウザ内でレンダリングされるとき、透けて見えることはできない)場合、見る人に面が見えないので、両方のボクセル面はメッシュから除去される。
【0071】
ここで図面の
図9を参照すると、参照番号900によって全体的に指定される、上記で説明されたボクセル面の合併手順の表現が示されている。図示のように、参照番号902および904、によって全体的に指定される、適切に配置されたボクセルのペアは、参照番号903によって全体的に指定される共通の面をそれらの間で共有する。この実施形態におけるボクセル902と904の両方は不透明であるので、次いで、それらの間の面903は、見る人によって見られることはできず、したがって、無関係である。前述のボクセル面の走査では、面903が除去され、結合されたボクセル906をもたらす。ボクセル906では、見えないボクセル面が除去されている。
【0072】
さらに、隣接するボクセル面が、すべての次元で同一のデータを含むボクセルに関連付けられると考えられるとき、これらのボクセル面を表す三角形が、メッシュのより大きなセグメントを生じさせるために合併される。このセグメントは、より少ない頂点を含み、したがって、記憶するために必要とするメモリおよびレンダリングするために必要とされる処理能力は少なくなる。
【0073】
高次元の最適化されたメッシュの、ブラウザ内のメッシュ・バッファの効率的なマルチコア抽出および配信と結合されたこの生成は、インストールまたは余分なダウンロードをサポートせずにリアルタイム配信を達成し、サーバからクライアントへのボクセル・メッシュの実行をレンダリングするために重要であり、それによって、本発明の前述の問題を克服することを満たす。
【0074】
8.JavaScriptウェブ・ベース・ボクセル・ワールド・メッシュ・ジェネレータ
ゾーン・ファイル602/802などのゾーン・ファイルが、ブラウザ608/808に配信され、解凍され、メッシュがグラフィックス・カードに配信されると、ユーザがこれらのメッシュをリアルタイムで修正することを可能にすることも可能である。この機能を提供するために、出願人は、JavaScriptプログラミング言語で実施され、したがって、どの最近のウェブ・ブラウザでも実行可能な、上記で説明されたメッシュ生成システムの高度に最適化されたバージョンを開発した。メッシュがサーバ上で再生成されてブラウザに再ダウンロードされる場合に必要とされるであろうタイプのネットワーク遅延がないので、ブラウザ内でメッシュを再生成するこの工程は、メッシュのリアルタイム編集を可能にする。
【0075】
このクライアント側メッシュ生成システムは、
図14においてディスプレイ1405上に示されるグラフィカル・ユーザ・インタフェースまたはブラウザ1410などのブラウザ808のユーザ・インタフェースの不均一な実行をもたらすであろうスレッド813などのプライマリ処理スレッドのスムーズな実行の中断を防止するために、セカンダリ・スレッド809などのブラウザ内の別のセカンダリ処理スレッドにおいて実行される。
【0076】
さらに、メッシュ生成システムのこのバージョンにおけるすべてのセマンティクス(semantics)および可変表現は、JavaScriptプログラミング言語のプログラミング・フレームワークに適合するように修正され、本発明を、非常に互換性を有するようにする。
【0077】
ビルディング・ブロックのいくつかの上記の説明および図示が本発明のデータ構造および処理を構築する際に用いられる状態で、それらのツールからのいくつかの特定の構築物について次に説明する。
【0078】
9.ウェブ・ベースのアニメーション化されたボクセル・キャラクタ・ビルダー
ボクセル環境および静的モデル(建物、家具など)だけではない、リアルタイムのブラウザ内編集を提供するために、出願人は、先に説明し、以下でも説明するさまざまなツールにさらに基づいて、アニメーションの骨組みに取り付けられることになる人間および生物の身体の一部分を表すボクセル・モデルを可能にするシステムも開発した。
【0079】
次いで、この骨組み内の関節の回転、変形、およびスケールは、キャラクタおよび生物が歩いている、走っている、泳いでいる、しゃべっている、身振りをしている、または動きの他の任意の形という視覚効果をもたらすように、同期された動きで身体部分の視認可能なアニメーションを生じさせるために、各フレームの実行時に修正される。
【0080】
ここで図面の
図10を参照すると、参照番号1000によって全体的に指定される、上記で説明された骨組みまたは身体フレームワークの表現が示されている。示されている特定の骨組み1000は、実際には、上から下に、頭部部分1010、上半身部分1012、右上部分1014、右手部分1016、左腕部分1018、左手部分1020、下半身部分1022、右脚部分1024、右足部分1026、左脚部分1028、および左足部分1030を用いるヒューマノイドである。論じられたように、骨組み1000の部分のさまざまな動きを同期させることを通して、アニメーションは、非常に効果的に達成可能である。
【0081】
もちろん、骨組み1000の詳細の程度すなわち粒度は変化してよく、たとえば、いずれも所望の特定の骨組みおよび詳細の程度に応じて、指、つま先、顔立ち、髪、傷跡、毛穴、指輪、および他の身体装飾品、衣服などを含んでよいことを理解されたい。実際、このようにして骨組み1000に取り付けられた身体パーツ・モデルは、高次元ボクセル・データから構成可能であり、したがって、複合材料および複雑なアクションから作製されたモデルは、多種多様な文脈で組み立てられ、アニメーション化可能である。先に説明されたボクセル・モデル・ファイル形式は、前述のアニメーション骨組み1000に取り付けるためのボクセル身体パーツを記憶および転送するために使用される。
【0082】
出願人は、詳細または特性をアニメーション骨組み1000に取り付け、したがって、身体パーツのカタログからそれら自体のアニメーション化されたキャラクタおよび生物を構築するためにボクセル・モデルをユーザが選ぶことを可能にするグラフィカル・ユーザ・インタフェースも開発した。本発明の原理が好ましくはその上またはその中で実施されるグラフィカル・ユーザ・インタフェースならびに他の構成要素および機器が、
図14により詳細に示されている。もちろん、本明細書において論じられた詳細は例にすぎず、本発明の教示により、多種多様な文脈、感情、アクション、およびイベントが容易にモデル化可能であることを理解されたい。
【0083】
10.ウェブ・ベース・ボクセル・ワールド体積照明システム(Web-based voxel world volumetric lighting system)
もちろん、本発明の高次元ボクセル・モデルおよびチャンク内の次元のうちの1つは、光の次元、すなわちソフト・ライトを単純にシェーディングすることによってコンテキストを与えることができる鋭敏な(subtle)変数であることを理解されたい。
【0084】
体積光生成システムは、好ましくは、別の変数または特性を構成するチャンク内のボクセルまたはモデルごとに垂直(太陽)光およびローカル(人工)光値を計算するために使用される。これらの値は、次いで、生成されたメッシュ内のボクセル面の頂点における照明データを生成するために使用される。この照明データは、他のメッシュおよびボクセル・データのすべてとともに、ウェブ・ブラウザ808内のウェブGLバッファに渡され、クライアント・グラフィックス・カード上で実行される頂点およびフラグメント・シェーディング・プログラム(fragment shading program)に利用可能にされる。
【0085】
照明値を記憶するために使用されるメモリの量を最適化するために、本発明の出願人は、太陽およびローカル光値の数をボクセルごとに0から15の間に制限する。次いで、これらの値は、好ましくは、バイトの半分を太陽の値に、バイトのもう半分をローカル光値に構成する各ボクセルに関連付けられたシングル・バイトの上位4ビットおよび下位4ビット内に記憶される。
【0086】
日光の変化する度合いをシミュレートするために、本発明の1実施形態では、出願人は、これらの2つの値をウェブGLフラグメント・シェーダ(fragment shader)内で抽出し、第1の(日光)値にグローバル日光色を掛ける。この色は、シミュレートされた昼/夜周期に基づいた日光の色(たとえば、全日は白色、夜間は青色、など)を決定する、JavaScriptプログラミング言語で記述されたカスタム・コードを使用して変化させられる。このグローバル日光色は、1次元テクスチャとして記憶され、好ましくは同じく前述のプライマリ処理スレッド813内で実行される別のウェブGLプログラムであるウェブGLフラグメント・シェーダ内でアクセス可能にされる。次いで、このテクスチャは、グローバル日光色を修正するために周期的に更新される。
【0087】
第2の(ローカル)光値は、グローバル光レベルに関係なく、変更されないままである。この結果、照明値のランタイム計算を必要とすることのない、ボクセル・チャンクおよびモデルの効率的なシミュレーション上でのグローバル日光およびローカル人工照明がもたらされる。
【0088】
11.ウェブ・ベース・ボクセル・ワールド体積光色システム
基本的な太陽値およびローカル証明値だけでなく、出願人は、ローカル光のための色も高次元ボクセル・データ内に含める。これらのローカル光色値は、変化する色のローカル照明を生じさせるために、前述のウェブGLフラグメント・シェーダ内のローカル光値が掛けられる。
【0089】
色値は一般的に、赤色成分、緑色成分、および青色(RGB)成分からなるので、これらの色値は、サーバおよびクライアント上で大量のメモリを消費し、データ転送速度の著しい低下を引き起こす可能性を有する。したがって、本発明の好ましい1実施形態における出願人は、減少された未加工RGB値を、216色の限られたパレットに導入し、これによって、元の色が近似されるが可能な光色値の総数が、シングル・バイトの表し得る範囲に減少される。したがって、光色値は、ボクセルにつき1バイトに記憶することができ、データ・サイズおよび転送速度は、リアルタイム対話式ボクセル環境を生じさせるのに十分に効率的なままであり、さまざまな色属性または特性が表される。
【0090】
12.ウェブ・ベース・ボクセル・ワールド・シェーディング・システム
ボクセル・メッシュの各フラグメント内の各ピクセルに適用するために適切な色値を決定する工程は、複雑である。複数の変数は、ボクセル・レンダリング・システムの一貫した機能を保証するために、ウェブGLプログラム内で計算され、適切に重みを付与されなければならない。
【0091】
出願人は、この機能を提供するために、カスタム・ウェブGLプログラムを開発した。これらのプログラムは、基本ボクセル・メッシュ、それらのローカル照明およびグローバル照明、ローカル光色、および距離フォグ(distance fog)のレンダリングを提供する。距離フォグの排除とともに、複雑なボクセル・データのレンダリングを生成しようとする任意のボクセル・レンダリング環境は、この機能を提供することを必要とする。このプログラムの核心(距離フォグを除く)は、このように機能する。
【0092】
vec4 final_color=texture2D(diffuseMap,texCoord0.xy+mod(texCoord0,zw,TILE_SIZE))
floatのlightCoord=light.y/2.0
final_color.xyz*=texture2D(lightingMap,vec2(light.x,0.0)).xyz+(lightColor*lightCoord)
gl_FragColor=final_color
このプログラムを実施する際に、考えるべきいくつかの要因がある。最初に、diffuseMapは、ボクセル面画像のテクスチャ・アトラス(texture atlas)である。第2に、照明マップは、1次元グローバル光色テクスチャである。第3に、texCoordOは、diffuseMap内のボクセル面のテクスチャ座標と、TILE_SIZEのうちの複数として測定されるメッシュ・フラグメントの幅および高さとを順に含む4成分ベクトルである。第4に、TILE_SIZEは1/Nであり、ここで、アトラスは、X軸とY軸の両方上にNボクセル面画像を含む矩形画像であり、第5に、光は、0から1の間に拡大縮小される太陽値とローカル光値とを含む2成分ベクトルである。最後に、lightColorは、ローカル光の色のための解凍されたRGB値を含む3成分ベクトルである。
【0093】
13.ウェブ・ベース対話式ボクセル・ワールド埋め込みシステム
本発明は、最近の標準ウェブ・ブラウザ内でボクセル環境およびモデルをロードおよびレンダリングする能力を有するので、出願人は、これらの環境を、以下の形式でiframeを使用して任意のウェブ・ページに埋め込むことを可能にするシステムを開発した。
【0094】
<iframe src=”[URL]” frameBorder=”0”></iframe>
ここで、[URL]は、特定のボクセル環境を識別する一意のユニバーサル・リソース・ロケータ(ウェブ・アドレス)である。この結果、YouTubeまたはVimeoビデオのスタイルで埋め込まれたボクセル環境が生じ、さまざまな手段で、ユーザはこれと対話することができ、その内部で、ユーザは探索することができる。
【0095】
14.ウェブ・ベース・ボクセル・ワールド・ポータル・システム
本明細書において詳細に論じられたように、本発明は、環境を出るまたは重ね合わされたもしくは他のユーザ・インタフェース制御機構を使用する必要なしにユーザがあるボクセル環境から別のボクセル環境に移動することができるシステムの開発を対象とする。このシステムは、ユーザに探索体験を提供するボクセル・ワールドのネットワークを作成することを可能にする。
【0096】
ポータル座標は、ゾーン・ファイル内のチャンク内にメタデータとして記憶される。ウェブ・ブラウザ内にロードされると、ポータルは、ポータル座標と交差する位置にユーザがキャラクタをナビゲートすることによって作動され、ゾーン・ファイルをターゲット環境のためにロードさせ、次いで、視認可能なシーンに挿入され、現在の環境を交換する。
【0097】
ここで図面の
図11を参照すると、メッシュ1106とボクセル・データ1108とメタデータ1110とを含む参照番号1100によって全体的に指定される、ブラウザに運ばれたさまざまなボクセル情報の例示的な使用がその中に示されている。メタデータ1110を特に参照すると、参照番号1112によって全体的に指定されるその一部分は、ナビゲーションユーザのための前述のポータル座標を記憶することを目的とする。
【0098】
15.ウェブ・ベース・ボクセル・ワールド分散イベント・システム
先に詳細に説明されたように、ボクセル環境は複雑であり、データのローディング、アンローディング、およびレンダリング、ならびにさまざまな対話および制御システムを制御する大量のデータおよびシステムから構成される。そのうえ、イベントは、ユーザによって作成されたボクセル構造とのユーザの対話によってボクセル環境内でトリガ可能であることを理解されたい。問題のイベントは、ブラウザ808などのクライアント・ブラウザの両方におけるシステム内での、およびサーバ804などの1つまたは複数のサーバ上での、活動を引き起こし得る。この複雑なフレームワーク内でのカスタム・イベントの作成および扱いを容易にするために、出願人は、ボクセル環境のための分散イベント・システムを開発した。
【0099】
この改良では、イベントは、中央イベント・ディスパッチング・システム、およびイベントをリッスンするソフトウェア構成要素レジスタ自身によって扱われる。イベントは、「ローカル」または「分散」とマーク可能であり、当業者に理解されるように、分散イベントは、イベント・ストリーム(たとえば、HTML5ウェブ・ソケットを使用して実施される)に沿ってクライアントとサーバとの間で、またはサーバとクライアントとの間で伝播される。
【0100】
ここで図面の
図12を参照すると、参照番号1200によって全体的に指定される例示的な分散イベント・システムがその中に示されており、参照番号1202によって全体的に指定されるいくつかのボクセル・グリッド制御システムが標準ウェブ・サーバ1204上に常駐する。ボクセル・グリッド制御システム1202Aを含む前述のイベント、たとえば、MMORG内の別のキャラクタとの衝突が発生したときには、イベントがトリガされ、参照番号1206によって全体的に指定されるイベント・ストリームに沿って、参照番号1210Aによって全体的に指定される特定の対応するイベントを作動させるために、参照番号1210によって全体的に指定されるロードされたボクセル・グリッド制御システムに伝播または渡される。当技術分野で理解されるように、変化するトリガを有する複数のそのようなイベントが、そのように伝播され、異なるイベントを反映するために実施されてよいことを理解されたい。
【0101】
この分散イベント・システムは、任意の数のカスタム・イベントの作成と、伝播されるイベントの数および性質または特定のイベントをリッスンする構成要素の数に対する全体的なシステムの複雑さを増加させずにそれらのイベントを分散環境およびローカル・ボクセル環境の周囲に伝播させることを可能にする。
【0102】
16.ウェブ・ベース・ボクセル・モデル・カタログ・システム
ユーザがボクセル環境への挿入のためにボクセル・モデルを選択することを可能にするために、出願人は、ウェブ・ベース・ボクセル・モデル・カタログ・システムも開発した。これは、3次元ボクセル・モデル・メッシュを3次元ボクセル環境の上の2次元平面上に投影されることを可能にするJavascriptおよびウェブGLベースのシステムである。
【0103】
このシステムは、ボクセル・モデルを表示し、他の場合は透明である、カメラの前に置かれたフラット方形メッシュ(flat rectangular mesh)を利用し、ボクセル環境を後ろで視認可能であることを可能にする。
【0104】
ここで図面の
図13を参照すると、カメラ1310がユーザ視点を提供する参照番号1300によって全体的に指定されるモデルを作成するための例示的な技法がその中に示されている。参照番号1330によって全体的に指定される3D投影されたボクセル・モデルの透明な2D投影平面である参照番号1320によって全体的に指定されるフラット方形メッシュまたは平面も示されている。同じく図示されるように、メッシュ1320の後ろに、参照番号1340によって全体的に指定される3Dボクセル環境がある。したがって、カメラ1310は、所望のボクセル環境1340内で投影されたボクセル・モデル1320を見る。
【0105】
17.Javascriptウェブ・ベース・ボクセル・モデル・スケーリング・システム
いくつかのボクセル・モデルは、ボクセル環境に入るために、拡大縮小されることを必要とする。たとえば、標準ボクセルが(ユーザの観点から)1立法メートルであるボクセル環境では、認識可能な形状およびサイズをモデルに付与するのに十分な詳細を作成するために、より小さなボクセルから作成された家具を構築することが必要であることがある。
【0106】
本発明では、出願人は、変化するサイズのボクセルから構成されるモデルを提供するために、ボクセル環境への挿入中にボクセル・モデルを自動的に拡大縮小するシステムを作成した。
【0107】
チャンク・メタデータは、チャンク内のローカル座標に位置決めされ、固定数のフル・サイズ・ボクセル(モデル外接長方形にボクセル・スケールを掛けることによって計算される)を占有する、ボクセル・モデル固有識別子への参照を含む。モデル・スケールは、常に、1/2^Ν(1を2で割ったものをNの累乗に掛ける)として計算され、ここで、Nは整数値である。したがって、ボクセル・モデルは、フル・ボクセル・サイズ(1)に対して1/2、1/4、1/8、1/16などのサイズの小型ボクセルから構成可能である。
【0108】
18.ウェブGLベースのボクセル・モデル・レイ・ベースのレンダリング・システム
上記に加えて、出願人は、本発明において、複雑なモデルをモデルの外接長方形を表すメッシュ内でレンダリングすることを可能にするシステムも作成した。この手法は、ウェブGLプログラム内でランタイム時により多くの仕事を実行することを犠牲にして、モデルをレンダリングするために必要とされる頂点の数を最小限にすることを可能にする。
【0109】
この実施形態では、システムは、ボクセル・モデルを3次元テクスチャ(すなわち2次元テクスチャの配列)にロードし、ボクセル外接長方形のサイズのメッシュを作成し、ウェブGLフラグメント・シェーダを使用して、ボックスを通過してテクスチャが不透明なピクセルを含むモデルと交差する光線をシミュレートする。各ピクセルは単一ボクセルを表し、そのため、モデルはボックス内で拡大縮小可能である。
【0110】
19.ウェブ・ベースのMinecraftワールド・インポート・システム
論じられたように、本発明の主な目標の1つは、コンピュータ・ゲーム体験のさまざまな態様、特にMMORGの態様を改善することである。その目的のために、本発明のさまざまなツールが、現在のそのようなゲームにおいて用いられてよい。たとえば、本発明のシステムは、Minecraftワールドを(ウェブ・インタフェースを介して)エンジンにインポートし、上述のゾーン・ファイル・システム(含まれたメッシュを有する)に変換し、その後、ユーザがブラウザ内でこれらのワールドを見て対話するウェブ・ブラウザに配信される。すべては、先に詳細に説明および図示されている。
【0111】
特に、このシステムは、Minecraft.MCRファイルおよび.MCAファイル、ならびにlevel.datファイルおよび設定ファイルを読み取り、このデータをカスタム・チャンク・データ構造にロードして、次いでゾーン・ファイル形式に出力する能力を有する。このようにして、Minecraftワールドは、本発明の進歩を用いて、最近の標準ウェブ・ブラウザにおいて視認可能であり、対話型にされる。
【0112】
20.デュアル・モード・ウェブ・ベース・ボクセル・ワールド・カメラ・システム
ユーザがボクセル環境を編集し、終了時にこれらの環境が他のユーザにどのように見えるかも体験することを可能にするために、出願人は、本明細書において説明されるように、本発明のウェブ・ベース・ボクセル環境内で機能するデュアル・カメラ・システムも開発した。ユーザは、重力および衝突系が使用不能にされる「マーカ・モード(Maker Mode)」で動くことができ、ユーザは、モデルを選んで環境に追加するために複数のボクセルを同時に編集し、モデル・カタログにアクセスすることができ、重力および衝突系が起動され、プレイヤが一人称の非飛行モードで環境を動き回る「プレーヤ・モード」でも動くことができる。ユーザは、キーボード・ボタンを押すだけでマーカ・モード・カメラとプレーヤ・モード・カメラを切り換えることができる。
【0113】
21.ウェブ・ベース・ボクセル・ワールド天空システム
さらに、出願人は、ゲーム世界などのウェブ・ベース・ボクセル環境において昼/夜周期および天候影響を提供するために、複雑な天空システムを開発した。
【0114】
1実施形態では、ドーム形メッシュがボクセル環境の上に置かれる。次いで、ウェブGL頂点およびフラグメント・シェーダは、大気変数のセットに基づいて、このメッシュを着色する。天空および太陽の基本色は、大気を通過する光をシミュレートすることによって計算される。フラグメント・シェーダ・プログラムにおいて実行されるパーリン・ノイズ(perlin noise)機能は、クラウドをシミュレートするために使用される。遠くの山は、ドームの下部からの距離を計算し、2Dパーリン・ノイズ機能を使用して、起伏する山の形状を作成することによって、ドームに追加される。夜間の星のテクスチャは、立方体地図としてドーム状に投影され、星テクスチャの透明さは、星を夜間に見えるようにし、日中は見えなくするために、ブラウザ内で実行されるJavascriptプログラムによって決定される。ドームは、(任意の色が使用可能であるが)赤色の日の入りおよび黄色の夜明けを提供するために、日の出および日の入りのときに太陽の周りで色がつけられる。
【0115】
ここで図面の
図14を参照すると、本明細書において詳細に説明される本発明のさまざまな態様が実施および図示され得る、参照番号1400によって全体的に指定される例示的なコンピュータ・システムがその中に示されている。もちろん、図示のシステムがさまざまな例において異なってよい、たとえば、ハードコア・ゲーマは、ゲームプレーを案内する高度な手および足制御システムなどの追加の機器と、視覚化強化のためのヘッド・マウント機器とを有することをよく理解されたい。
【0116】
コンピュータ・システム1400は、さまざまなグラフィカル・ユーザ・インタフェースまたはブラウザが表示および動作される、参照番号1410によって全体的に指定されるディスプレイ105を含む。システム1400は、プロセッサ1415と、参照番号1420によって全体的に指定されるRAMまたは短期メモリと、参照番号1425によって全体的に指定されるハード・ディスクまたは長期メモリとを含む。論じられたように、グラフィックス・ハードウェアまたはチップ1430は、参照番号1435によって全体的に指定されるそれ自体の内部メモリを有してよい。有線によって接続された外部メモリ140と、ワイヤレスで接続された外部メモリ145も示されている。
【0117】
電子メールのためであろうと、MMORGをするためであろうと、接続性が重要であるので、システム1400は、参照番号1450によって全体的に指定されるインターネットを通して、外部ノード1455または交換局1460に接続して、世界と接続する。データおよびコマンド入力のためのキーボード165およびマウス170も示されている。
【0118】
先の説明は、本発明を実施するための好ましい実施形態のものであり、本発明の範囲は、必ずしもこれらの記述によって制限されない。本明細書において記載されるすべての論文、参考文献、および引用は、その全体が参照によって明確に組み込まれることを理解されたい。本発明の範囲は、以下の特許請求の範囲によって定義される。