JP6480606B2 - リアルタイムの仮想シーン内の円柱コライダと凸体との間の衝突を検出するための方法および端末およびストレージ媒体 - Google Patents

リアルタイムの仮想シーン内の円柱コライダと凸体との間の衝突を検出するための方法および端末およびストレージ媒体 Download PDF

Info

Publication number
JP6480606B2
JP6480606B2 JP2017558551A JP2017558551A JP6480606B2 JP 6480606 B2 JP6480606 B2 JP 6480606B2 JP 2017558551 A JP2017558551 A JP 2017558551A JP 2017558551 A JP2017558551 A JP 2017558551A JP 6480606 B2 JP6480606 B2 JP 6480606B2
Authority
JP
Japan
Prior art keywords
convex body
axis
coordinate system
preset
local coordinate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017558551A
Other languages
English (en)
Other versions
JP2018524664A (ja
Inventor
西尼 匡
西尼 匡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Publication of JP2018524664A publication Critical patent/JP2018524664A/ja
Application granted granted Critical
Publication of JP6480606B2 publication Critical patent/JP6480606B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/20Linear translation of whole images or parts thereof, e.g. panning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/13Edge detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1664Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
    • B25J9/1666Avoiding collision or forbidden zones
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1674Programme controls characterised by safety, monitoring, diagnostic
    • B25J9/1676Avoiding collision or forbidden zones
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/802D [Two Dimensional] animation, e.g. using sprites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20112Image segmentation details
    • G06T2207/20164Salient point detection; Corner detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Geometry (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Processing Or Creating Images (AREA)
  • Architecture (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)

Description

本出願は、2015年11月30日に中国専利局に出願した「METHOD AND SYSTEM FOR DETECTING COLLISION BETWEEN CYLINDRICAL COLLIDER AND CONVEX BODY IN REAL-TIME VIRTUAL SCENARIO」と題した中国特許出願第201510864339.0号の優先権を主張するものであり、この特許出願は、参照によりその全体が組み込まれる。
本開示は、コンピュータアプリケーションの分野に関し、特に、リアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための方法、端末、および不揮発性コンピュータ可読ストレージ媒体に関する。
仮想的なシナリオは、コンピュータを使用することによってシミュレーションされるゲームのシナリオまたはアニメーションのシナリオなどのシナリオである。ゲームのシナリオを例として使用すると、仮想オブジェクトが障害物に出くわすとき、仮想オブジェクトは、障害物、つまりは、仮想オブジェクトと障害物との間の衝突を回避する必要がある。通常の処理の手法は、仮想オブジェクトと障害物との両方を軸平行境界ボックス(AABB: Axis Aligned Bounding Box)のコライダとして単純化することである。図1に示されるように、仮想オブジェクトから単純化されたコライダ110は、壁の角120を回避する必要があり、図に示される運動変化プロセスによれば、コライダ110は、角全体を完全に回避した後にのみ、壁の下の辺に沿って前に進み続けることができる。
しかし、そのようなコライダ110が壁の角と衝突するかまたは壁の角の側を通り過ぎるとき、操作者の操作はスムーズではなく、操作者は、角を回避するために全体を動かすようにコライダを制御する必要があり、運動の効率が低い。
以上に基づいて、操作のスムーズさを改善し、移動の効率を改善するために、仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための方法を提供することが必要である。
さらに、操作のスムーズさを改善し、移動の効率を改善するために、端末および不揮発性コンピュータ可読ストレージ媒体を提供することも必要である。
リアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための方法が、以下のステップ、すなわち、
仮想的なシナリオにおける仮想オブジェクトに対応する円柱コライダを円柱コライダと同心の予め設定された多角柱にコンバートするステップと、
凸体のローカル座標系内の予め設定された多角柱の位置を取得するために予め設定された多角柱を凸体のローカル座標系に変換するステップと、
凸体のローカル座標系内の予め設定された多角柱の位置に従って、予め設定された多角柱の各面の法線方向、予め設定された多角形の辺方向、および多角柱の側面の辺の辺方向を取得するステップと、
凸体の各面の法線方向および各辺方向を取得するステップと、
凸体の各辺方向と予め設定された多角形の辺方向とのベクトル積、および凸体の各辺方向と多角柱の側面の辺の辺方向とのベクトル積を別に取得するステップと、
予め設定された多角柱の各面の法線方向、凸体の各面の法線方向、およびベクトル積のうちの1つまたは複数を1つまたは複数の試験軸(testing axis)として使用するステップと、
各試験軸および凸体のローカル座標系内の予め設定された多角柱の位置に従って試験軸上の円柱コライダの射影の長さおよび射影の位置を取得し、各試験軸上の凸体の射影を取得するステップと、
円柱コライダおよび凸体の射影が各試験軸上で互いに交わる場合、円柱コライダと凸体との間の衝突が存在すると判定するステップとを含む。
端末が、メモリおよびプロセッサを含み、メモリが、プロセッサによって実行されるときにプロセッサに以下のステップ、すなわち、
仮想的なシナリオにおける仮想オブジェクトに対応する円柱コライダを円柱コライダと同心の予め設定された多角柱にコンバートするステップと、
凸体のローカル座標系内の予め設定された多角柱の位置を取得するために予め設定された多角柱を凸体のローカル座標系に変換するステップと、
凸体のローカル座標系内の予め設定された多角柱の位置に従って、予め設定された多角柱の各面の法線方向、予め設定された多角形の辺方向、および多角柱の側面の辺の辺方向を取得するステップと、
凸体の各面の法線方向および各辺方向を取得するステップと、
凸体の各辺方向と予め設定された多角形の辺方向とのベクトル積、および凸体の各辺方向と多角柱の側面の辺の辺方向とのベクトル積を別に取得するステップと、
予め設定された多角柱の各面の法線方向、凸体の各面の法線方向、およびベクトル積のうちの1つまたは複数を1つまたは複数の試験軸として使用するステップと、
各試験軸および凸体のローカル座標系内の予め設定された多角柱の位置に従って試験軸上の円柱コライダの射影の長さおよび射影の位置を取得し、各試験軸上の凸体の射影を取得するステップと、
円柱コライダおよび凸体の射影が各試験軸上で互いに交わる場合、円柱コライダと凸体との間の衝突が存在すると判定するステップとを実行させる命令を記憶する。
1つまたは複数の不揮発性コンピュータ可読ストレージ媒体が、1つまたは複数のプロセッサによって実行されるときに1つのプロセッサまたは複数のプロセッサに以下のステップ、すなわち、
仮想的なシナリオにおける仮想オブジェクトに対応する円柱コライダを円柱コライダと同心の予め設定された多角柱にコンバートするステップと、
凸体のローカル座標系内の予め設定された多角柱の位置を取得するために予め設定された多角柱を凸体のローカル座標系に変換するステップと、
凸体のローカル座標系内の予め設定された多角柱の位置に従って、予め設定された多角柱の各面の法線方向、予め設定された多角形の辺方向、および多角柱の側面の辺の辺方向を取得するステップと、
凸体の各面の法線方向および各辺方向を取得するステップと、
凸体の各辺方向と予め設定された多角形の辺方向とのベクトル積、および凸体の各辺方向と多角柱の側面の辺の辺方向とのベクトル積を別に取得するステップと、
予め設定された多角柱の各面の法線方向、凸体の各面の法線方向、およびベクトル積のうちの1つまたは複数を1つまたは複数の試験軸として使用するステップと、
各試験軸および凸体のローカル座標系内の予め設定された多角柱の位置に従って試験軸上の円柱コライダの射影の長さおよび射影の位置を取得し、各試験軸上の凸体の射影を取得するステップと、
円柱コライダおよび凸体の射影が各試験軸上で互いに交わる場合、円柱コライダと凸体との間の衝突が存在すると判定するステップとを実行させるコンピュータ可読命令を記憶する。
本発明の1つまたは複数の実施形態の詳細が、添付の図面および説明において下に与えられる。本開示のその他の特徴、目的、および利点は、本明細書、添付の図面、および請求項を参照すると明らかになる。
通常のリアルタイムの仮想的なシナリオにおけるコライダの間の衝突のプロセスの概略図である。 実施形態におけるリアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための方法および装置の応用環境の概略図である。 実施形態における端末の内部構造の概略図である。 実施形態におけるサーバの内部構造の概略図である。 Componentクラスに含まれるシナリオオブジェクト(scenario object)の概略図である。 2つの凸体の射影が同じ軸上で互いに交わらない概略図である。 円柱コライダの概略図である。 実施形態におけるリアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための方法の流れ図である。 正八角柱の上面図である。 実施形態における凸体のローカル座標系内の予め設定された多角柱の位置を取得するために予め設定された多角柱を凸体のローカル座標系に変換するステップの特定の流れ図である。 八角柱の頂点を取得する概略図である。 八角柱の法線方向を取得する概略図である。 円柱コライダを使用する衝突検出において通常のアルゴリズムを使用した効果および理論上の結果の概略図である。 実施形態におけるリアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための装置の構造のブロック図である。
本開示の目的、技術的な解決策、および利点をより理解しやすくするために、本開示が、添付の図面および実施形態を参照して以下でさらに詳細に説明される。それら図面および実施形態の中で説明される特定の実施形態は、本開示を限定するのではなく本開示を説明するために使用されるに過ぎないことを理解されたい。
図2は、実施形態におけるリアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための方法および装置の応用環境の概略図である。図2に示されるように、応用環境は端末210およびサーバ220を含み、複数の端末210が存在する可能性がある。複数の端末210が、サーバ220と通信する。リアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための方法は、端末210上で実行される可能性があり、端末210は、サーバ220から仮想的なシナリオのデータを取得し、端末210は、仮想的なシナリオにおける凸体と仮想オブジェクトに対応する円柱コライダとを取得し、凸体と円柱コライダとの間の衝突を検出する。リアルタイムの仮想的なシナリオは、リアルタイムゲームのシナリオ、リアルタイムアニメーションのシナリオなどである可能性があり、仮想オブジェクトは、キャラクターまたは物体である可能性がある。凸体は、キャラクターまたはオブジェクトである可能性がある。
図3Aは、実施形態における端末210の内部構造の概略図である。図3Aに示されるように、端末210は、システムバスを通じて接続されるプロセッサ、ストレージ媒体、メモリ、およびネットワークインターフェース、集音装置、ディスプレイスクリーン、ラウドスピーカ、および入力装置を含む。端末のストレージ媒体は、オペレーティングシステムを記憶し、リアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための装置をさらに含み、リアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための装置は、リアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための方法を実施するように構成される。プロセッサは、端末全体の実行をサポートするための計算および制御能力を提供するように構成される。端末のメモリは、リアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための装置の実行のための環境を提供する。ネットワークインターフェースは、たとえば、サーバにデータ要求を送信し、サーバによって返された対応するデータを受信するなど、サーバとのネットワーク通信を実行するように構成される。端末のディスプレイスクリーンは、液晶ディスプレイスクリーンまたは電子インクディスプレイスクリーンである可能性がある。入力装置は、ディスプレイスクリーンを覆うタッチレイヤである可能性があり、または端末の筐体に配置されたキー、トラックボール、もしくはトラックパッドである可能性があり、または外部キーボード、トラックパッド、マウスなどである可能性がある。端末は、モバイル電話、デスクトップコンピュータ、タブレットコンピュータ、携帯情報端末などである可能性がある。当業者は、図3Aに示される構造が、本出願の解決策に関連する部分的な構造のブロック図であるに過ぎず、本出願の解決策が適用される端末に対する限定を定めず、特に、端末が、図に示される構成要素より多くの構成要素もしくはより少ない構成要素を含む可能性があり、または一部の構成要素が組み合わされる可能性があり、または異なる構成要素の配置が使用される可能性があることを理解するであろう。
図3Bは、実施形態におけるサーバ220の内部構造の概略図である。図3Bに示されるように、サーバは、システムバスを通じて接続されるプロセッサ、ストレージ媒体、メモリ、ネットワークインターフェース、ディスプレイスクリーン、および入力装置を含む。サーバのストレージ媒体は、オペレーティングシステム、データベース、およびリアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための装置を収容し、データベースは、リアルタイムの仮想的なシナリオのデータなどを記憶し、リアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための装置は、リアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための、サーバに適用され得る方法を実施するように構成される。サーバのプロセッサは、サーバ全体の実行をサポートするための計算および制御能力を提供するように構成される。サーバのメモリは、ストレージ媒体内のリアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための装置の実行のための環境を提供する。サーバのディスプレイスクリーンは、液晶ディスプレイスクリーンまたは電子インクディスプレイスクリーンである可能性がある。入力装置は、ディスプレイスクリーンを覆うタッチレイヤである可能性があり、または端末の筐体に配置されたキー、トラックボール、もしくはトラックパッドである可能性があり、または外部キーボード、トラックパッド、マウスなどである可能性がある。サーバのネットワークインターフェースは、たとえば、サーバによって送信されたデータインタラクション要求を受信し、端末にデータを返すなど、ネットワーク接続を使用することによって外部端末と通信するように構成される。サーバは、独立したサーバ、または複数のサーバによって構成されるサーバクラスタを使用することによって実装され得る。当業者は、図3Bに示される構造が、本出願の解決策に関連する部分的な構造のブロック図であるに過ぎず、本出願の解決策が適用されるサーバに対する限定を定めず、特に、サーバが、図に示される構成要素より多くの構成要素もしくはより少ない構成要素を含む可能性があり、または一部の構成要素が組み合わされる可能性があり、または異なる構成要素の配置が使用される可能性があることを理解するであろう。
別の応用環境においては、端末210またはサーバ220のみが含まれる可能性がある。リアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための方法は、たとえば、ゲームのシナリオまたはアニメーションのシナリオにおける仮想オブジェクトの運動などに関して端末またはサーバ上で実行されさえすればよい。ユーザが、ダウンロードされたコンソールゲームを端末上で実行し、または試験者が、コンソールゲームをサーバ上で試験する等々である。
コライダの間の衝突を検出することを容易にするために、リアルタイムの仮想的なシナリオにおいて、プレイヤーの制御を表す仮想的なキャラクターおよび(手榴弾またはカメラなどの)その他の移動するオブジェクトは、すべてActorクラスまたはそのサブクラスのオブジェクトであり、したがって、衝突の検出が、軸に並行に(in an axis aligned manner)実行される。仮想的なキャラクターのコライダを変えるためには、円柱コライダを仮想的なキャラクターとして使用し、AABBをキャラクターではないActorとして使用することによって衝突検出が実行されるようにActorクラスが修正される。リアルタイムの仮想的なシナリオにおいては、BSPシナリオオブジェクトおよびComponentシナリオオブジェクトを含む主に2種類のシナリオオブジェクトが存在する。分類されたストレージが、異なるシナリオオブジェクトに応じて実行される。つまり、オブジェクトは、BSPまたはComponentとして分類される。衝突検出中に、クラスのどのオブジェクトが入ってくるActorオブジェクトのコライダと衝突する可能性があるのかを判定するために、シナリオオブジェクトの分類に従って衝突検出のエントリ関数(entry function) Uworld::MoveActor()を使用することによって荒削り(rough cutting)が実行され、それから、厳密な衝突検出が実行され、結果が返される。荒削りは、粗い衝突を実行することを示す。厳密な衝突は、下で説明されるリアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための方法に従って円柱コライダと凸体(すなわち、Componentシナリオオブジェクト)との間の厳密な衝突検出を実施することを示し、衝突検出が終わった後、衝突検出の結果が、一連のCheck関数を使用することによってUworld::MoveActor()に収集され、さらなる収集が、状態変化およびダメージ計算などのさらなる計算のためにUworld::MoveActor()を使用することによって実行される。Componentシナリオオブジェクトにおいては、入ってくるMoveActor()のコライダとして、AABBが円柱によって置き換えられる。リアルタイムの仮想的なシナリオは、ゲームのシナリオおよびアニメーションのシナリオを含む可能性があり、リアルタイムゲームのシナリオに適用される可能性があり、それらに限定されない。
各Componentシナリオオブジェクトは、Elementクラスのいくつかのオブジェクトを含み、Elementは、図4に示されるように、Componentクラスに含まれるElementクラスのオブジェクトである、配向された箱形、球、スフィル体(sphyl body)、および凸多面体をそれぞれ示すFKBoxElem、FKSphereElem、FKSphylElem、およびFKConvexElemを含む。Elementは、Componentオブジェクトの中ですべてが凸体であるコライダを示す。円柱コライダと凸体との間の衝突検出のステータスが、分離軸(separating axis)試験アルゴリズムを使用することによって計算される。分離軸試験アルゴリズムの理論的な基礎は、2つの凸体が互いに交わらない場合、2つの凸体の射影がやはり互いに交わらない軸が確かに見つかり得る。図5に示されるように、2つの凸体の射影は、同軸上にあり、互いに交わらない。
Actorクラスが、円柱コライダのメンバー変数を記憶するために追加される。この場合、Actorの円柱コライダはワールド座標系の垂直な円柱であり、Cylinderクラスを使用することによって表されると仮定される。図6は、実施形態における円柱コライダの概略図である。図6に示されるように、垂直な円柱は、Cylinderクラスを使用することによって表され、Cylinderクラスにおいて、水平な線62は、半径を表すために使用され、垂直な線64は、高さを表すために使用され、その値は、半分の高さである(すなわち、円柱コライダの高さの値の半分である)。
図7は、実施形態におけるリアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための方法の流れ図である。図7に示されるように、リアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための方法は、図2の応用環境内で実行され、以下のステップを含む。
ステップ702: 仮想的なシナリオにおける仮想オブジェクトに対応する円柱コライダを円柱コライダと同心の予め設定された多角柱にコンバートする。
特に、仮想オブジェクトは、リアルタイムの仮想的なシナリオにおいて動的に実行される可能性があるキャラクターまたは物体である可能性がある。仮想オブジェクトは、円柱コライダとして構成される。コライダは、オブジェクト間の衝突が存在するかどうかを計算するように構成されたオブジェクト、つまり、衝突アルゴリズムの計算に実際に参加するオブジェクトである。
円柱コライダは、予め設定された多角柱にコンバートされ、予め設定された多角柱の垂直方向の中心軸は、円柱コライダの中心軸と同じである。予め設定された多角柱の中心は、円柱コライダの中央の点と同じであり、予め設定された多角柱の上面および下面の中心は、円柱コライダの上面および下面の中心と同じである。
予め設定された多角形は、正多角形である可能性がある。正多角形の辺の量は、5、6、7、8、9、16、32などである可能性があり、これらの数に限定されない。正多角形の辺の量が2のべき乗であるとき、たとえば、正多角形が八角形、十六角形、三十二角形、六十四角形などであるとき、コンピュータの処理は容易にされる。
リアルタイムの仮想的なシナリオは、リアルタイムゲームのシナリオ、リアルタイムアニメーションのシナリオなどである。リアルタイムゲームのシナリオは、実行されているゲームのシナリオである。リアルタイムアニメーションのシナリオは、実行されているアニメーションのシナリオである。衝突検出は、コライダの間で衝突が起こるかどうかを検出することである。衝突が起こった後、衝突応答が生成され、つまり、コライダが別のコライダと衝突した後、コライダは、元の移動方向に沿って移動し続けることができず、コライダの移動方向が、別のコライダを回避するように調整されるか、またはコライダが、別のコライダに当たって当たり応答(hit response)などを生成する。この実施形態において、衝突検出は、コライダが別のコライダと衝突することを防ぐために、コライダの移動方向が別のコライダを回避するように調整されることを主に示す。
コライダのサイズは、仮想的なシナリオにおける仮想オブジェクトのサイズに従って設定され得る。たとえば、仮想オブジェクトが球である場合、仮想オブジェクトに対応する円柱コライダの高さが球の直径に設定される可能性があり、円柱の半径が球の半径よりもわずかに大きく設定される可能性がある。
図8は、正八角柱の上面図である。図8は、円柱コライダの円柱が八角柱にコンバートされた後の八角柱の上面図を示す。外側の長方形は、円柱コライダのAABBである。
ステップ704: 凸体のローカル座標系内の予め設定された多角柱の位置を取得するために予め設定された多角柱を凸体のローカル座標系に変換する。
この実施形態において、円柱は、凸体Elementのローカル座標系に変換され、それは、中央の点を凸体のローカル座標系に変換しながら、元の3つの軸、すなわち、X軸、Y軸、およびZ軸を凸体のローカル座標系に実際に変換し、さらに、3つの軸、すなわち、X軸、Y軸、およびZ軸の変換結果に従って凸体のローカル座標系内に円柱コライダの位置を再構築すること、つまり、凸体のローカル座標系内の予め設定された多角柱の位置を得るために予め設定された多角柱を凸体のローカル座標系に変換することである。十六角柱である予め設定された多角柱が例として使用される場合、十六角柱に対応する32個の頂点の座標が、3つの軸、すなわち、X軸、Y軸、およびZ軸ならびに凸体のローカル座標系内の中央の点に対応するベクトルに従って計算され、18個の面および48個の辺が、32個の頂点に従って構成される。
座標系の変換は、ArbitraryAxisCylinderクラスを使用することによって処理され、ArbitraryAxisCylinderクラスは、凸体Elementのローカル座標系に変換されるように構成された変換行列メンバー変数を追加し、凸体のローカル座標系内の変換された円柱コライダの元のX軸単位ベクトル、Y軸単位ベクトル、およびZ軸単位ベクトルのベクトルが、回転、平行移動、または拡大もしくは縮小などの変換が円柱コライダに対して実行されたかどうかを迅速に判定するために使用される。ArbitraryAxisCylinderクラス内には、半径、高さ、新しいX軸、Y軸、およびZ軸、ならびに中央の点の変位が記録される。円柱コライダがどのように変換されるかは、射影の計算を早くするために3つの軸の変換結果に従って決定され得る。中央の点の変位は、射影の位置を計算するために使用され得る。
図9は、実施形態における凸体のローカル座標系内の予め設定された多角柱の位置を取得するために予め設定された多角柱を凸体のローカル座標系に変換するステップの特定の流れ図である。図9に示されるように、凸体のローカル座標系内の予め設定された多角柱の位置を取得するために予め設定された多角柱を凸体のローカル座標系に変換することは、以下を含む。
ステップ902: 凸体のローカル座標系内の予め設定された多角柱のX軸、Y軸、およびZ軸の単位ベクトルに対応するベクトルを取得するために予め設定された多角柱のX軸、Y軸、Z軸、および中央の点を凸体のローカル座標系に変換し、多角柱の2つの面、すなわち、上面および下面上の中央の点の座標を取得するために凸体のローカル座標系内のZ軸のベクトルに円柱コライダの正の半分の高さの値および負の半分の高さの値を乗算する。
特に、円柱コライダの半分の高さは、Heightによって表される。
ステップ904: 円柱コライダの半径を取得し、半径に対応するベクトル、凸体のローカル座標系内の円柱コライダのX軸、Y軸に従って、予め設定された多角柱の頂点が置かれる面の中央の点に対するそれらの頂点のオフセットを取得し、対応する頂点の座標を得るためにオフセットおよび中央の点の座標の和を取得する。
特に、円柱コライダの半径は、Rによって表される。三角関数によって、対応する中央の点の座標に対する十六角柱の上面および下面上の十六角形の頂点のオフセット、すなわち、上面の中央の点の座標に対する上面の16個の頂点のオフセット、および下面の中央の点の座標に対する下面の16個の頂点のオフセットを取得するために、凸体のローカル座標系内の円柱コライダの半径R、X軸、およびY軸のベクトルが互いに乗算される。対応する頂点の座標は、対応する中央の点の座標にオフセットを加算することによって取得され得る。
図10は、八角柱の頂点を取得する概略図である。図10に示されるように、1002は、底面の中央の点であり、1004は、底面の頂点のうちの1つである。
ステップ906: 各頂点の座標に従って凸体のローカル座標系内に予め設定された多角柱を再構築する。
特に、各頂点の座標が取得された後、上面を形成するために上面の頂点が順に接続され、下面を形成するために下面の頂点が順に接続され、多角柱の側面の辺を形成するために上面および底面の対応する頂点が互いに接続される。このようにして、32個の頂点が、18個の面および48個の辺を形成する。
円柱コライダのX軸、Y軸、およびZ軸を凸体のローカル座標系に変換し、円柱コライダの中央の点を凸体のローカル座標系に変換することによって、凸体のローカル座標系内の円柱コライダからコンバートされた予め設定された多角柱の位置が、凸体のローカル座標系内の円柱コライダのX軸、Y軸、およびZ軸に対応するベクトル、中央の点の座標、円柱コライダの半径および半分の高さなどに従って計算され、したがって、計算は単純であり、計算量は少なく、性能は高い。
せん断変換が円柱コライダに対して実行される場合、予め設定された多角柱のすべての頂点が円柱コライダのローカル座標系において計算された後、頂点が、行列演算を使用することによって凸体のローカル座標系に変換されることに留意されたい。せん断変換は、パターンに歪みを生じさせることを示す。
ステップ706: 凸体のローカル座標系内の予め設定された多角柱の位置に従って、予め設定された多角柱の各面の法線方向、予め設定された多角形の辺方向、および多角柱の側面の辺の辺方向を取得する。
特に、面の法線方向は、面に垂直な法線ベクトルである。辺方向は、辺の2つの末端の延びる方向を示し、方向は、同じである可能性がある。対応する面の法線方向は、予め設定された多角形の辺方向と多角柱の側面の辺の辺方向とのベクトル積を取得することによって取得される。
図11は、八角柱の法線方向を取得する概略図である。図11に示されるように、対応する辺1106が、頂点1102および頂点1104の取得された座標に従って計算される可能性があり、さらに、辺1106の辺方向が、取得され、辺方向は、辺の2つの末端が延びるとき、ランダムに延びる方向が辺の辺方向であることを示す。
ステップ708: 凸体の各面の法線方向および各辺方向を取得する。
特に、凸体は、配向された箱形または凸多面体である可能性がある。配向された箱形は、直方体、立方体などである。凸多面体は、多角柱などである可能性がある。
ステップ710: 凸体の各辺方向と予め設定された多角形の辺方向とのベクトル積、および凸体の各辺方向と多角柱の側面の辺の辺方向とのベクトル積を別に取得する。
特に、凸体の各辺方向と予め設定された多角形の辺方向とのベクトル積が、別に取得され、凸体の各辺方向と多角柱の側面の辺の辺方向とのベクトル積が、別に取得される。
ステップ712: 予め設定された多角柱の各面の法線方向、凸体の各面の法線方向、およびベクトル積のうちの1つまたは複数を1つまたは複数の試験軸として使用する。
特に、試験軸は、予め設定された多角柱の各面の法線方向、凸体の各面の法線方向、凸体の各辺方向と予め設定された多角柱の辺方向とのベクトル積、および凸体の各辺方向と予め設定された多角柱の側面の辺の辺方向とのベクトル積のうちの1つまたは複数を含む可能性がある。つまり、試験軸は、予め設定された多角柱の各面の法線方向、凸体の各面の法線方向、凸体の各辺方向と予め設定された多角柱の辺方向とのベクトル積、凸体の各辺方向と予め設定された多角柱の側面の辺の辺方向とのベクトル積、およびこれらのいくつかの組合せから選択される可能性がある。選択される試験軸が少なすぎる場合、交わりでないものが誤って交わりとして特定される可能性があり、選択される試験軸が多すぎる場合、性能が影響を受ける可能性がある。
ステップ714: 各試験軸および凸体のローカル座標系内の予め設定された多角柱の位置に従って試験軸上の円柱コライダの射影の長さおよび射影の位置を取得し、各試験軸上の凸体の射影を取得する。
この実施形態において、凸体のローカル座標系に変換された後、円柱コライダからコンバートされる予め設定された多角柱が円柱コライダではない場合、凸体のローカル座標系内の予め設定された多角柱の各頂点が射影され、円柱コライダの射影の長さを得るために、差を得るために極値(extreme value)が設定される。
特に、十六角柱を例として使用すると、凸体のローカル座標系内の十六角柱の32個の頂点が射影され、極大の頂点(maximum extreme vertex)および極小の頂点(minimum extreme vertex)を取得するために極値が設定され、射影の後の極大の頂点と極小の頂点との間の差の絶対値が円柱コライダの射影の長さとして取得される。
凸体のローカル座標系に変換された後、円柱コライダからコンバートされる予め設定された多角柱が引き続き円柱コライダである場合、円柱コライダの半径および半分の高さ、凸体のローカル座標系に変換された円柱コライダの3つの軸、すなわち、X軸、Y軸、およびZ軸の基底ベクトルに対応する座標基底ベクトル(coordinate base vector)、ならびに凸体のローカル座標系内の試験軸の試験軸方向が、円柱コライダの射影の長さを計算するために取得される。
特に、円柱コライダに対して一様でない拡大縮小もせん断変換も実行されなかった場合、つまり、変換された後、円柱コライダが引き続き円柱コライダである場合、射影の長さは、GetExtentOnAxisForRealCylinder()関数を使用することによって計算される。
FArbitraryAxisCylinder::GetExtentOnAxis()関数においては、変換された後に引き続き円柱である円柱コライダに関して、GetExtentOnAxis()が、射影の長さを計算するためにGetExtentOnAxisForRealCylinder()を呼び出す。Mが円柱を円柱のローカル座標系から凸体Elementのローカル座標系に変換する行列を表す場合、M-1は、円柱を凸体Elementのローカル座標系から円柱のローカル座標系に変換する行列である。入ってくる試験軸InAxisが、凸体Elementのローカル座標系内にある。したがって、L=InAxis*M-1である場合、Lは、円柱のローカル座標系内の試験軸の試験軸方向である。円柱コライダの3つの基底ベクトルが凸体Elementのローカル座標系に変換された後の(3つのメンバーX、Y、およびZを含む)座標基底ベクトルを表すためにCTが使用され、アルゴリズムは式(1)のとおりである。
Figure 0006480606
式(1)において、Rは、円柱コライダの半径を表し、L.xは、Lのx成分を表し、L.yは、Lのy成分を表し、|Lz|は、Lのz成分の絶対値であり、
Figure 0006480606
は、CTのX基底ベクトルの長さを表し、
Figure 0006480606
は、CTのY基底ベクトルの長さを表し、
Figure 0006480606
は、CTのZ基底ベクトルの長さを表し、Hは、円柱コライダの半分の高さ(すなわち、高さの半分)を表す。
凸体のローカル座標系に変換された後、円柱コライダからコンバートされる予め設定された多角柱が引き続き円柱コライダである場合、円柱コライダの射影の長さは、以下のプロセス、つまり、円柱コライダの3つの基底ベクトルを凸体Elementのローカル座標系に変換することによって取得される座標基底ベクトルのX基底ベクトルの長さおよびY基底ベクトルの長さのうちの大きな方の値を取得し、さらに、大きな方の値に円柱コライダの半径を乗算し、さらに、積に、円柱のローカル座標系の軸方向の試験軸のx成分およびy成分の平方根を乗算して第1の積を取得し、円柱コライダの3つの基底ベクトルを凸体Elementのローカル座標系に変換することによって取得される座標基底ベクトルのZ基底ベクトルの長さに円柱コライダの半分の高さを乗算し、さらに、積に、円柱のローカル座標系内の試験軸の試験軸方向のz成分の絶対値を乗算して第2の積の値を取得し、第1の積の値と第2の積の値との和を円柱コライダの射影の長さとして取得するプロセスにおいて計算によって取得され得る。
さらに、試験軸が円柱コライダの垂直軸と並行である場合、凸体のローカル座標系に変換される円柱コライダの3つの軸、すなわち、X軸、Y軸、およびZ軸の基底ベクトルに対応する座標基底ベクトルのZ基底ベクトルの長さと半分の高さとの積が、円柱コライダの射影の長さとして取得される。
特に、
Figure 0006480606
が、円柱コライダの射影の長さとして使用される。
さらに、試験軸が円柱コライダの垂直軸に垂直である場合、凸体のローカル座標系に変換される円柱コライダの3つの軸、すなわち、X軸、Y軸、およびZ軸の基底ベクトルに対応する座標基底ベクトルのX基底ベクトルの長さおよびY基底ベクトルの長さのうちの大きな方の値が取得され、さらに、大きな方の値と円柱コライダの半径との積が、円柱コライダの射影の長さとして使用される。
特に、
Figure 0006480606
が、円柱コライダの射影の長さとして使用される。理論上、
Figure 0006480606
Figure 0006480606
と等しいが、実際の計算においては、行列演算の精度の誤差が存在する可能性がある。衝突検出の結果に検出漏れがないことを保証するために、通常、2つのうちの大きな方の値が選択される。
ステップ716: 円柱コライダおよび凸体の射影が各試験軸上で互いに交わる場合、円柱コライダと凸体との間の衝突が存在すると判定する。
特に、円柱コライダおよび凸体の射影が各試験軸上で互いに交わる場合、円柱コライダと凸体との間に衝突が存在すると判定され、円柱コライダおよび凸体の射影が互いに交わらない試験軸が存在する場合、円柱コライダと凸体との間に衝突がないと判定される可能性がある。
リアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための上述の方法では、リアルタイムの仮想的なシナリオにおいて、円柱コライダとしての仮想オブジェクトと凸体との間で衝突検出が実行され、衝突検出は、コライダの衝突を避けるために実行され、AABBと凸体との間で実行される元の衝突検出を置き換える。凸体において、円柱コライダは、比較的短い距離だけ移動すれば十分である。移動距離が短くされるので、移動の効率が改善され、操作のスムーズさも改善される。円柱コライダを予め設定された多角柱にコンバートすることによって、円柱コライダの面の法線方向および辺方向が、試験軸の選択を容易にするために取得され得る。試験軸の適切な選択、ならびに試験軸上の円柱コライダおよび凸体の射影の交差ステータスによって、円柱コライダと凸体との間の衝突ステータスが決定され、したがって、決定の精度が改善される。
実施形態において、予め設定された多角形は、円柱コライダの底面に内接する正多角形である。
特に、正多角形の辺の量は、5、6、7、8、9、16、32等である可能性があり、これらの数に限定されない。正多角形の辺の量が2のべき乗であるとき、たとえば、正多角形が八角形、十六角形、三十二角形、六十四角形などであるとき、コンピュータの処理は容易にされる。正多角形は、計算を簡素化し、計算リソースを節約することができる。
さらに、多角形が偶数個の辺を有する正多角形である場合、予め設定された多角形の辺方向が取得されるとき、中心に基づいて非対称である辺方向が、予め設定された多角柱の上面および下面上の2つの予め設定された多角形のうちの予め設定された多角形から選択され、多角柱の側面の辺の横方向を取得するとき、1つの側面の辺の横方向が選択される。
たとえば、正十六角柱である予め設定された多角柱を例として使用すると、正十六角柱の側面の辺はすべて互いに平行であり、側面の辺の辺方向を取得するために1つの側面の辺を選択することのみが必要とされる。正十六角柱の上面および下面は、互いに平行であり、したがって、1つの底面の辺方向を選択することのみが必要とされる。各底面に関して、十六角形は中心対称でもあり、したがって、8つの辺の辺方向を取得することのみが必要とされる。
図12は、円柱コライダを使用する衝突検出において通常のアルゴリズムを使用した効果および理論上の結果の概略図である。図12に示されるように、左の図は、通常のアルゴリズムに従って円柱コライダを使用することによって衝突検出を実行することを示す。円柱コライダが黒いコライダの底辺に沿って移動することができるように円柱コライダ全体を移動させることも必要とされ、右の図は、リアルタイムの仮想的なシナリオにおいてコライダの間の衝突を検出するための上述の方法を使用した後、円柱コライダを使用することによって実現され得る理論上の結果を示す。円柱コライダの移動プロセスにおいて、移動方向は比較的短く、移動の効率は高く、操作はスムーズである。
リアルタイムの仮想的なシナリオにおいてコライダの間の衝突を検出するための方法の実施プロセスが、特定の応用のシナリオを参照して下で説明される。リアルタイムゲームのシナリオを例として使用すると、円柱コライダが仮想的なキャラクターであり、凸体が壁体であり、図12を参照すると、円が円柱の2次元射影であり、ブロック体(block body)が凸体の2次元射影である。衝突検出プロセスは、
(1)仮想的なシナリオにおける仮想オブジェクトに対応する円柱コライダを円柱コライダと同心の予め設定された多角柱にコンバートすることと、
(2)凸体のローカル座標系内の予め設定された多角柱の位置を取得するために予め設定された多角柱を凸体のローカル座標系に変換することと、
(3)凸体のローカル座標系内の予め設定された多角柱の位置に従って、予め設定された多角柱の各面の法線方向、予め設定された多角形の辺方向、および多角柱の側面の辺の辺方向を取得することと、
(4)凸体の各面の法線方向および各辺方向を取得することと、
(5)凸体の各辺方向と予め設定された多角形の辺方向とのベクトル積、および凸体の各辺方向と多角柱の側面の辺の辺方向とのベクトル積を別に取得することと、
(6)予め設定された多角柱の各面の法線方向、凸体の各面の法線方向、およびベクトル積のうちの1つまたは複数を1つまたは複数の試験軸として使用することと、
(7)各試験軸および凸体のローカル座標系内の予め設定された多角柱の位置に従って試験軸上の円柱コライダの射影の長さおよび射影の位置を取得し、各試験軸上の凸体の射影を取得することと、
(8)円柱コライダおよび凸体の射影が各試験軸上で互いに交わる場合、円柱コライダと凸体との間の衝突が存在すると判定することとを含む。
衝突検出が円柱コライダによって射影された円と凸体との間で実行される場合、図12に示されるように、円柱コライダの移動経路が取得される。
図13は、実施形態におけるリアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための装置の構造のブロック図である。図13に示されるように、リアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための装置は、コンバートモジュール1302、変換モジュール1304、第1の取得モジュール1306、第2の取得モジュール1308、ベクトル積取得モジュール1310、試験軸取得モジュール1312、射影モジュール1314、および判定モジュール1316を含む。
コンバートモジュール1302は、仮想的なシナリオにおける仮想オブジェクトに対応する円柱コライダを円柱コライダと同心の予め設定された多角柱にコンバートするように構成される。
特に、仮想オブジェクトは、リアルタイムの仮想的なシナリオにおいて動的に実行される可能性があるキャラクターまたは物体である可能性がある。仮想オブジェクトは、円柱コライダとして構成される。コライダは、オブジェクト間の衝突が存在するかどうかを計算するように構成されたオブジェクト、つまり、衝突アルゴリズムの計算に実際に参加するオブジェクトである。
円柱コライダは、予め設定された多角柱にコンバートされ、予め設定された多角柱の垂直方向の中心軸は、円柱コライダの中心軸と同じである。予め設定された多角柱の中心は、円柱コライダの中央の点と同じであり、予め設定された多角柱の上面および下面の中心は、円柱コライダの上面および下面の中心と同じである。
予め設定された多角形は、正多角形である可能性がある。正多角形の辺の量は、5、6、7、8、9、16、32などである可能性があり、これらの数に限定されない。正多角形の辺の量が2のべき乗であるとき、たとえば、正多角形が八角形、十六角形、三十二角形、六十四角形などであるとき、コンピュータの処理は容易にされる。
変換モジュール1304は、凸体のローカル座標系内の予め設定された多角柱の位置を取得するために予め設定された多角柱を凸体のローカル座標系に変換するように構成される。
この実施形態において、円柱は、凸体Elementのローカル座標系に変換され、それは、中央の点を凸体のローカル座標系に変換しながら、元の3つの軸、すなわち、X軸、Y軸、およびZ軸を凸体のローカル座標系に実際に変換し、さらに、3つの軸、すなわち、X軸、Y軸、およびZ軸の変換結果に従って凸体のローカル座標系内に円柱コライダの位置を再構築すること、つまり、凸体のローカル座標系内の予め設定された多角柱の位置を得るために予め設定された多角柱を凸体のローカル座標系に変換することである。十六角柱である予め設定された多角柱が例として使用される場合、十六柱に対応する32個の頂点の座標が、3つの軸、すなわち、X軸、Y軸、およびZ軸ならびに凸体のローカル座標系内の中央の点に対応するベクトルに従って計算され、18個の面および48個の辺が、32個の頂点に従って構成される。
この実施形態において、変換モジュール1304は、凸体のローカル座標系内の予め設定された多角柱のX軸、Y軸、およびZ軸の単位ベクトルに対応するベクトルを取得するために予め設定された多角柱のX軸、Y軸、Z軸、および中央の点を凸体のローカル座標系に変換し、多角柱の2つの面、すなわち、上面および下面上の中央の点の座標を取得するために凸体のローカル座標系内のZ軸のベクトルに円柱コライダの正の半分の高さの値および負の半分の高さの値を乗算し、円柱コライダの半径を取得し、半径に対応するベクトル、凸体のローカル座標系内の円柱コライダのX軸、Y軸に従って、予め設定された多角柱の頂点が置かれる面の中央の点に対するそれらの頂点のオフセットを取得し、対応する頂点の座標を得るためにオフセットおよび中央の点の座標の和を取得し、各頂点の座標に従って凸体のローカル座標系内に予め設定された多角柱を再構築するようにさらに構成される。
特に、円柱コライダの半径は、Rによって表される。三角関数によって、対応する中央の点の座標に対する十六角柱の上面および下面上の十六角形の頂点のオフセット、すなわち、上面の中央の点の座標に対する上面の16個の頂点のオフセット、および下面の中央の点の座標に対する下面の16個の頂点のオフセットを取得するために、凸体のローカル座標系内の円柱コライダの半径R、X軸、およびY軸のベクトルが互いに乗算される。対応する頂点の座標は、対応する中央の点の座標にオフセットを加算することによって取得され得る。特に、各頂点の座標が取得された後、上面を形成するために上面の頂点が順に接続され、下面を形成するために下面の頂点が順に接続され、多角柱の側面の辺を形成するために上面および底面の対応する頂点が互いに接続される。このようにして、32個の頂点が、18個の面および48個の辺を形成する。
円柱コライダのX軸、Y軸、およびZ軸を凸体のローカル座標系に変換し、円柱コライダの中央の点を凸体のローカル座標系に変換することによって、凸体のローカル座標系内の円柱コライダからコンバートされた予め設定された多角柱の位置が、凸体のローカル座標系内の円柱コライダのX軸、Y軸、およびZ軸に対応するベクトル、中央の点の座標、円柱コライダの半径および半分の高さなどに従って計算され、したがって、計算は単純であり、計算量は少なく、性能は高い。
第1の取得モジュール1306は、凸体のローカル座標系内の予め設定された多角柱の位置に従って、予め設定された多角柱の各面の法線方向、予め設定された多角形の辺方向、および多角柱の側面の辺の辺方向を取得するように構成される。
特に、面の法線方向は、面に垂直な法線ベクトルである。辺方向は、辺の2つの末端の延びる方向を示し、方向は、同じである可能性がある。対応する面の法線方向は、予め設定された多角形の辺方向と多角柱の側面の辺の辺方向とのベクトル積を取得することによって取得される。
第2の取得モジュール1308は、凸体の各面の法線方向および各辺方向を取得するように構成される。
特に、凸体は、配向された箱形または凸多面体である可能性がある。配向された箱形は、直方体、立方体などである。凸多面体は、多角柱などである可能性がある。
ベクトル積取得モジュール1310は、凸体の各辺方向と予め設定された多角形の辺方向とのベクトル積、および凸体の各辺方向と多角柱の側面の辺の辺方向とのベクトル積を別に取得するように構成される。
特に、凸体の各辺方向と予め設定された多角形の辺方向とのベクトル積が、別に取得され、凸体の各辺方向と多角柱の側面の辺の辺方向とのベクトル積が、別に取得される。
試験軸取得モジュール1312は、予め設定された多角柱の各面の法線方向、凸体の各面の法線方向、およびベクトル積を試験軸として使用するように構成される。
特に、試験軸は、予め設定された多角柱の各面の法線方向、凸体の各面の法線方向、凸体の各辺方向と予め設定された多角柱の辺方向とのベクトル積、および凸体の各辺向と予め設定された多角柱の側面の辺の辺方向とのベクトル積のうちの1つまたは複数を含む可能性がある。
射影モジュール1314は、各試験軸および凸体のローカル座標系内の予め設定された多角柱の位置に従って試験軸上の円柱コライダの射影の長さおよび射影の位置を取得し、各試験軸上の凸体の射影を取得するように構成される。
この実施形態において、射影モジュール1314は、凸体のローカル座標系に変換された後、円柱コライダからコンバートされる予め設定された多角柱が円柱コライダではない場合、凸体のローカル座標系内の予め設定された多角柱の各頂点を射影し、円柱コライダの射影の長さを得るために、差を得るために極値を設定するようにさらに構成される。
特に、十六角柱を例として使用すると、凸体のローカル座標系内の十六角柱の32個の頂点が射影され、極大の頂点および極小の頂点を取得するために極値が設定され、射影の後の極大の頂点と極小の頂点との間の差の絶対値が円柱コライダの射影の長さとして取得される。
射影モジュール1314は、凸体のローカル座標系に変換された後、円柱コライダからコンバートされる予め設定された多角柱が引き続き円柱コライダである場合、円柱コライダの半径および半分の高さ、凸体のローカル座標系に変換された円柱コライダの3つの軸、すなわち、X軸、Y軸、およびZ軸の基底ベクトルに対応する座標基底ベクトル、ならびに凸体のローカル座標系内の試験軸の試験軸方向を、円柱コライダの射影の長さを計算するために取得するようにさらに構成される。
特に、円柱コライダに対して一様でない拡大縮小もせん断変換も実行されなかった場合、つまり、変換された後、円柱コライダが引き続き円柱コライダである場合、射影の長さは、GetExtentOnAxisForRealCylinder()関数を使用することによって計算される。
FArbitraryAxisCylinder::GetExtentOnAxis()関数においては、変換された後に引き続き円柱である円柱コライダに関して、GetExtentOnAxis()が、射影の長さを計算するためにGetExtentOnAxisForRealCylinder()を呼び出す。Mが円柱を円柱のローカル座標系から凸体Elementのローカル座標系に変換する行列を表す場合、M-1は、円柱を凸体Elementのローカル座標系から円柱のローカル座標系に変換する行列である。入ってくる試験軸InAxisが、凸体Elementのローカル座標系内にある。したがって、L=InAxis*M-1である場合、Lは、円柱のローカル座標系内の試験軸の試験軸方向である。円柱コライダの3つの基底ベクトルが凸体Elementのローカル座標系に変換された後の(3つのメンバーX、Y、およびZを含む)座標基底ベクトルを表すためにCTが使用され、アルゴリズムは式(1)のとおりである。
Figure 0006480606
式(1)において、Rは、円柱コライダの半径を表し、L.xは、Lのx成分を表し、L.yは、Lのy成分を表し、|Lz|は、Lのz成分の絶対値であり、
Figure 0006480606
は、CTのX基底ベクトルの長さを表し、
Figure 0006480606
は、CTのY基底ベクトルの長さを表し、
Figure 0006480606
は、CTのZ基底ベクトルの長さを表し、Hは、円柱コライダの半分の高さ(すなわち、高さの半分)を表す。
凸体のローカル座標系に変換された後、円柱コライダからコンバートされる予め設定された多角柱が引き続き円柱コライダである場合、円柱コライダの射影の長さは、以下のプロセス、つまり、円柱コライダの3つの基底ベクトルを凸体Elementのローカル座標系に変換することによって取得される座標基底ベクトルのX基底ベクトルの長さおよびY基底ベクトルの長さのうちの大きな方の値を取得し、さらに、大きな方の値に円柱コライダの半径を乗算し、さらに、積に、円柱のローカル座標系の軸方向の試験軸のx成分およびy成分の平方根を乗算して第1の積を取得し、円柱コライダの3つの基底ベクトルを凸体Elementのローカル座標系に変換することによって取得される座標基底ベクトルのZ基底ベクトルの長さに円柱コライダの半分の高さを乗算し、さらに、積に、円柱のローカル座標系内の試験軸の試験軸方向のz成分の絶対値を乗算して第2の積の値を取得し、第1の積の値と第2の積の値との和を円柱コライダの射影の長さとして取得するプロセスにおいて計算によって取得され得る。
さらに、試験軸が円柱コライダの垂直軸と並行である場合、凸体のローカル座標系に変換される円柱コライダの3つの軸、すなわち、X軸、Y軸、およびZ軸の基底ベクトルに対応する座標基底ベクトルのZ基底ベクトルの長さと半分の高さとの積が、円柱コライダの射影の長さとして取得される。
特に、
Figure 0006480606
が、円柱コライダの射影の長さとして使用される。
さらに、試験軸が円柱コライダの垂直軸に垂直である場合、凸体のローカル座標系に変換される円柱コライダの3つの軸、すなわち、X軸、Y軸、およびZ軸の基底ベクトルに対応する座標基底ベクトルのX基底ベクトルの長さおよびY基底ベクトルの長さのうちの大きな方の値が取得され、さらに、大きな方の値と円柱コライダの半径との積が、円柱コライダの射影の長さとして使用される。
特に、
Figure 0006480606
が、円柱コライダの射影の長さとして使用される。理論上、
Figure 0006480606
Figure 0006480606
と等しいが、実際の計算においては、行列演算の精度の誤差が存在する可能性がある。衝突検出の結果に検出漏れがないことを保証するために、通常、2つのうちの大きな方の値が選択される。
判定モジュール1316は、円柱コライダおよび凸体の射影が各試験軸上で互いに交わる場合、円柱コライダと凸体との間の衝突が存在すると判定するように構成される。
特に、円柱コライダおよび凸体の射影が各試験軸上で互いに交わる場合、円柱コライダと凸体との間に衝突が存在すると判定され、円柱コライダおよび凸体の射影が互いに交わらない試験軸が存在する場合、円柱コライダと凸体との間に衝突がないと判定される可能性がある。
リアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための上述の装置では、リアルタイムの仮想的なシナリオにおいて、円柱コライダとしての仮想オブジェクトと凸体との間で衝突検出が実行され、衝突検出は、コライダの衝突を避けるために実行され、AABBと凸体との間で実行される元の衝突検出を置き換える。凸体において、円柱コライダは、比較的短い距離だけ移動すれば十分である。移動距離が短くされるので、移動の効率が改善され、操作のスムーズさも改善される。円柱コライダを予め設定された多角柱にコンバートすることによって、円柱コライダの面の法線方向および辺方向が、試験軸の選択を容易にするために取得され得る。試験軸の適切な選択、ならびに試験軸上の円柱コライダおよび凸体の射影の交差ステータスによって、円柱コライダと凸体との間の衝突ステータスが決定され、したがって、決定の精度が改善される。
実施形態において、予め設定された多角形は、円柱コライダの底面に内接する正多角形である。多角形が偶数個の辺を有する正多角形である場合、予め設定された多角形の辺方向が取得されるとき、中心に基づいて非対称である辺方向が、予め設定された多角柱の上面および下面上の2つの予め設定された多角形のうちの予め設定された多角形から選択され、多角柱の側面の辺の横方向を取得するとき、1つの側面の辺の横方向が選択される。
たとえば、正十六角柱である予め設定された多角柱を例として使用すると、正十六角柱の側面の辺はすべて互いに平行であり、側面の辺の辺方向を取得するために1つの側面の辺を選択することのみが必要とされる。正十六角柱の上面および下面は、互いに平行であり、したがって、1つの底面の辺方向を選択することのみが必要とされる。各底面に関して、十六角形は中心対称でもあり、したがって、8つの辺の辺方向を取得することのみが必要とされる。
当業者は、上述の方法の実施形態のプロセスのすべてまたは一部が、関連するハードウェアに命令するコンピュータプログラムによって実装され得ることを理解するであろう。上述のプログラムは、不揮発性コンピュータ可読ストレージ媒体に記憶され得る。プログラムが実行されるとき、上述の方法の実施形態のステップが実行される。ストレージ媒体は、磁気ディスク、光ディスク、読み出し専用メモリ(ROM)などである可能性がある。
上の実施形態は、本発明のいくつかの実装を表すに過ぎず、特に詳細に説明されているが、本開示の範囲に対する限定と解釈されるべきでない。当業者が本開示の概念を逸脱することなく変更および改善をさらに行い得ること、およびこれらがすべて本開示の保護範囲内に入ることに留意されたい。したがって、本開示の特許の保護範囲は、添付の請求項に従うべきである。
62 水平な線
64 垂直な線
110 コライダ
120 角
210 端末
220 サーバ
1002 底面の中央の点
1004 底面の頂点
1102 頂点
1104 頂点
1106 辺
1302 コンバートモジュール
1304 変換モジュール
1306 第1の取得モジュール
1308 第2の取得モジュール
1310 ベクトル積取得モジュール
1312 試験軸取得モジュール
1314 射影モジュール
1316 判定モジュール

Claims (21)

  1. リアルタイムの仮想的なシナリオにおいて円柱コライダと凸体との間の衝突を検出するための方法であって、
    仮想的なシナリオにおける仮想オブジェクトに対応する円柱コライダを前記円柱コライダと同心の予め設定された多角柱にコンバートするステップと、
    凸体のローカル座標系内の前記予め設定された多角柱の位置を取得するために前記予め設定された多角柱を前記凸体の前記ローカル座標系に変換するステップと、
    前記凸体の前記ローカル座標系内の前記予め設定された多角柱の前記位置に従って、前記予め設定された多角柱の各面の法線方向、予め設定された多角形の辺方向、および前記多角柱の側面の辺の辺方向を取得するステップと、
    前記凸体の各面の法線方向および各辺方向を取得するステップと、
    前記凸体の各辺方向と前記予め設定された多角形の前記辺方向とのベクトル積、および前記凸体の各辺方向と前記多角柱の前記側面の辺の前記辺方向とのベクトル積を別に取得するステップと、
    前記予め設定された多角柱の各面の法線方向、前記凸体の各面の法線方向、および前記ベクトル積のうちの1つまたは複数を1つまたは複数の試験軸として使用するステップと、
    各試験軸および前記凸体の前記ローカル座標系内の前記予め設定された多角柱の前記位置に従って前記試験軸上の前記円柱コライダの射影の長さおよび射影の位置を取得し、各試験軸上の前記凸体の射影を取得するステップと、
    前記円柱コライダおよび前記凸体の射影が各試験軸上で互いに交わる場合、前記円柱コライダと前記凸体との間の衝突が存在すると判定するステップとを含む、方法。
  2. 凸体のローカル座標系内の前記予め設定された多角柱の位置を取得するために前記予め設定された多角柱を前記凸体の前記ローカル座標系に変換する前記ステップが、
    前記凸体の前記ローカル座標系内の前記予め設定された多角柱のX軸、Y軸、およびZ軸の単位ベクトルに対応するベクトルを取得するために前記予め設定された多角柱の前記X軸、前記Y軸、前記Z軸、および中央の点を前記凸体の前記ローカル座標系に変換し、前記多角柱の2つの面、すなわち、上面および下面上の中央の点の座標を取得するために前記凸体の前記ローカル座標系内の前記Z軸の前記ベクトルに前記円柱コライダの正の半分の高さの値および負の半分の高さの値を乗算するステップと、
    前記円柱コライダの半径を取得し、前記半径に対応する前記ベクトル、前記凸体の前記ローカル座標系内の前記円柱コライダの前記X軸、前記Y軸に従って、前記予め設定された多角柱の頂点が置かれる前記面の前記中央の点に対する前記頂点のオフセットを取得し、対応する頂点の座標を得るために前記オフセットおよび前記中央の点の座標の和を取得するステップと、
    各頂点の座標に従って前記凸体の前記ローカル座標系内に前記予め設定された多角柱を再構築するステップとを含む請求項1に記載の方法。
  3. 前記凸体の前記ローカル座標系に変換された後、前記円柱コライダからコンバートされる前記予め設定された多角柱が円柱コライダではない場合、前記凸体の前記ローカル座標系内の前記予め設定された多角柱の各頂点を射影し、前記円柱コライダの射影の長さを得るために、差を得るために極値を設定するステップをさらに含む請求項2に記載の方法。
  4. 前記凸体の前記ローカル座標系に変換された後、前記円柱コライダからコンバートされる前記予め設定された多角柱が引き続き円柱コライダである場合、前記円柱コライダの半径および半分の高さ、前記凸体の前記ローカル座標系に変換された前記円柱コライダの3つの軸、すなわち、X軸、Y軸、およびZ軸の基底ベクトルに対応する座標基底ベクトル、ならびに前記凸体の前記ローカル座標系内の前記試験軸の試験軸方向を、前記円柱コライダの前記射影の長さを計算するために取得するステップをさらに含む請求項2に記載の方法。
  5. 前記試験軸が前記円柱コライダの垂直軸と並行である場合、前記凸体の前記ローカル座標系に変換される前記円柱コライダの3つの軸、すなわち、X軸、Y軸、およびZ軸の基底ベクトルに対応する座標基底ベクトルのZ基底ベクトルの長さと半分の高さとの積を、前記円柱コライダの前記射影の長さとして取得するステップと、
    前記試験軸が前記円柱コライダの前記垂直軸に垂直である場合、前記凸体の前記ローカル座標系に変換される前記円柱コライダの3つの軸、すなわち、前記X軸、前記Y軸、および前記Z軸の前記基底ベクトルに対応する前記座標基底ベクトルのX基底ベクトルの長さおよびY基底ベクトルの長さのうちの大きな方の値を取得し、さらに、前記大きな方の値と前記円柱コライダの半径との積を、前記円柱コライダの前記射影の長さとして使用するステップとをさらに含む請求項1から4のいずれか一項に記載の方法。
  6. 前記予め設定された多角形が、前記円柱コライダの底面に内接する正多角形である請求項1から4のいずれか一項に記載の方法。
  7. 前記多角形が偶数個の辺を有する正多角形である場合、前記予め設定された多角形の辺方向が取得されるとき、中心に基づいて非対称である辺方向が、前記予め設定された多角柱の上面および下面上の2つの予め設定された多角形のうちの予め設定された多角形から選択され、前記多角柱の側面の辺の横方向を取得するとき、1つの側面の辺の横方向が選択される請求項6に記載の方法。
  8. メモリおよびプロセッサを含む端末であって、前記メモリが、前記プロセッサによって実行されるときに前記プロセッサに以下のステップ、すなわち、
    仮想的なシナリオにおける仮想オブジェクトに対応する円柱コライダを前記円柱コライダと同心の予め設定された多角柱にコンバートするステップと、
    凸体のローカル座標系内の前記予め設定された多角柱の位置を取得するために前記予め設定された多角柱を前記凸体の前記ローカル座標系に変換するステップと、
    前記凸体の前記ローカル座標系内の前記予め設定された多角柱の前記位置に従って、前記予め設定された多角柱の各面の法線方向、予め設定された多角形の辺方向、および前記多角柱の側面の辺の辺方向を取得するステップと、
    前記凸体の各面の法線方向および各辺方向を取得するステップと、
    前記凸体の各辺方向と前記予め設定された多角形の前記辺方向とのベクトル積、および前記凸体の各辺方向と前記多角柱の前記側面の辺の前記辺方向とのベクトル積を別に取得するステップと、
    前記予め設定された多角柱の各面の法線方向、前記凸体の各面の法線方向、および前記ベクトル積のうちの1つまたは複数を1つまたは複数の試験軸として使用するステップと、
    各試験軸および前記凸体の前記ローカル座標系内の前記予め設定された多角柱の前記位置に従って前記試験軸上の前記円柱コライダの射影の長さおよび射影の位置を取得し、各試験軸上の前記凸体の射影を取得するステップと、
    前記円柱コライダおよび前記凸体の射影が各試験軸上で互いに交わる場合、前記円柱コライダと前記凸体との間の衝突が存在すると判定するステップとを実行させる命令を記憶する、端末。
  9. 凸体のローカル座標系内の前記予め設定された多角柱の位置を取得するために前記予め設定された多角柱を前記凸体の前記ローカル座標系に変換する前記ステップが、
    前記凸体の前記ローカル座標系内の前記予め設定された多角柱のX軸、Y軸、およびZ軸の単位ベクトルに対応するベクトルを取得するために前記予め設定された多角柱の前記X軸、前記Y軸、前記Z軸、および中央の点を前記凸体の前記ローカル座標系に変換し、前記多角柱の2つの面、すなわち、上面および下面上の中央の点の座標を取得するために前記凸体の前記ローカル座標系内の前記Z軸の前記ベクトルに前記円柱コライダの正の半分の高さの値および負の半分の高さの値を乗算することと、
    前記円柱コライダの半径を取得し、前記半径に対応する前記ベクトル、前記凸体の前記ローカル座標系内の前記円柱コライダの前記X軸、前記Y軸に従って、前記予め設定された多角柱の頂点が置かれる前記面の前記中央の点に対する前記頂点のオフセットを取得し、対応する頂点の座標を得るために前記オフセットおよび前記中央の点の座標の和を取得することと、
    各頂点の座標に従って前記凸体の前記ローカル座標系内に前記予め設定された多角柱を再構築することとを含む請求項8に記載の端末。
  10. 前記プロセッサが、
    前記凸体の前記ローカル座標系に変換された後、前記円柱コライダからコンバートされる前記予め設定された多角柱が円柱コライダではない場合、前記凸体の前記ローカル座標系内の前記予め設定された多角柱の各頂点を射影し、前記円柱コライダの射影の長さを得るために、差を得るために極値を設定するステップをさらに実行する請求項9に記載の端末。
  11. 前記プロセッサが、
    前記凸体の前記ローカル座標系に変換された後、前記円柱コライダからコンバートされる前記予め設定された多角柱が引き続き円柱コライダである場合、前記円柱コライダの半径および半分の高さ、前記凸体の前記ローカル座標系に変換された前記円柱コライダの3つの軸、すなわち、X軸、Y軸、およびZ軸の基底ベクトルに対応する座標基底ベクトル、ならびに前記凸体の前記ローカル座標系内の前記試験軸の試験軸方向を、前記円柱コライダの前記射影の長さを計算するために取得するステップをさらに実行する請求項9に記載の端末。
  12. 前記プロセッサが、
    前記試験軸が前記円柱コライダの垂直軸と並行である場合、前記凸体の前記ローカル座標系に変換される前記円柱コライダの3つの軸、すなわち、X軸、Y軸、およびZ軸の基底ベクトルに対応する座標基底ベクトルのZ基底ベクトルの長さと半分の高さとの積を、前記円柱コライダの前記射影の長さとして取得するステップと、
    前記試験軸が前記円柱コライダの前記垂直軸に垂直である場合、前記凸体の前記ローカル座標系に変換される前記円柱コライダの3つの軸、すなわち、前記X軸、前記Y軸、および前記Z軸の前記基底ベクトルに対応する前記座標基底ベクトルのX基底ベクトルの長さおよびY基底ベクトルの長さのうちの大きな方の値を取得し、さらに、前記大きな方の値と前記円柱コライダの半径との積を、前記円柱コライダの前記射影の長さとして使用するステップとをさらに実行する請求項8から11のいずれか一項に記載の端末。
  13. 前記予め設定された多角形が、前記円柱コライダの底面に内接する正多角形である請求項8から11のいずれか一項に記載の端末。
  14. 前記多角形が偶数個の辺を有する正多角形である場合、前記予め設定された多角形の辺方向が取得されるとき、中心に基づいて非対称である辺方向が、前記予め設定された多角柱の上面および下面上の2つの予め設定された多角形のうちの予め設定された多角形から選択され、前記多角柱の側面の辺の横方向を取得するとき、1つの側面の辺の横方向が選択される請求項13に記載の端末。
  15. 1つまたは複数のプロセッサによって実行されるときに前記1つのプロセッサまたは前記複数のプロセッサに以下のステップ、すなわち、
    仮想的なシナリオにおける仮想オブジェクトに対応する円柱コライダを前記円柱コライダと同心の予め設定された多角柱にコンバートするステップと、
    凸体のローカル座標系内の前記予め設定された多角柱の位置を取得するために前記予め設定された多角柱を前記凸体の前記ローカル座標系に変換するステップと、
    前記凸体の前記ローカル座標系内の前記予め設定された多角柱の前記位置に従って、前記予め設定された多角柱の各面の法線方向、予め設定された多角形の辺方向、および前記多角柱の側面の辺の辺方向を取得するステップと、
    前記凸体の各面の法線方向および各辺方向を取得するステップと、
    前記凸体の各辺方向と前記予め設定された多角形の前記辺方向とのベクトル積、および前記凸体の各辺方向と前記多角柱の前記側面の辺の前記辺方向とのベクトル積を別に取得するステップと、
    前記予め設定された多角柱の各面の法線方向、前記凸体の各面の法線方向、および前記ベクトル積のうちの1つまたは複数を1つまたは複数の試験軸として使用するステップと、
    各試験軸および前記凸体の前記ローカル座標系内の前記予め設定された多角柱の前記位置に従って前記試験軸上の前記円柱コライダの射影の長さおよび射影の位置を取得し、各試験軸上の前記凸体の射影を取得するステップと、
    前記円柱コライダおよび前記凸体の射影が各試験軸上で互いに交わる場合、前記円柱コライダと前記凸体との間の衝突が存在すると判定するステップとを実行させるコンピュータ可読命令を記憶する1つまたは複数の不揮発性コンピュータ可読ストレージ媒体。
  16. 凸体のローカル座標系内の前記予め設定された多角柱の位置を取得するために前記予め設定された多角柱を前記凸体の前記ローカル座標系に変換する前記ステップが、
    前記凸体の前記ローカル座標系内の前記予め設定された多角柱のX軸、Y軸、およびZ軸の単位ベクトルに対応するベクトルを取得するために前記予め設定された多角柱の前記X軸、前記Y軸、前記Z軸、および中央の点を前記凸体の前記ローカル座標系に変換し、前記多角柱の2つの面、すなわち、上面および下面上の中央の点の座標を取得するために前記凸体の前記ローカル座標系内の前記Z軸の前記ベクトルに前記円柱コライダの正の半分の高さの値および負の半分の高さの値を乗算することと、
    前記円柱コライダの半径を取得し、前記半径に対応する前記ベクトル、前記凸体の前記ローカル座標系内の前記円柱コライダの前記X軸、前記Y軸に従って、前記予め設定された多角柱の頂点が置かれる前記面の前記中央の点に対する前記頂点のオフセットを取得し、対応する頂点の座標を得るために前記オフセットおよび前記中央の点の座標の和を取得することと、
    各頂点の座標に従って前記凸体の前記ローカル座標系内に前記予め設定された多角柱を再構築することとを含む請求項15に記載の不揮発性コンピュータ可読ストレージ媒体。
  17. 前記凸体の前記ローカル座標系に変換された後、前記円柱コライダからコンバートされる前記予め設定された多角柱が円柱コライダではない場合、前記凸体の前記ローカル座標系内の前記予め設定された多角柱の各頂点を射影し、前記円柱コライダの射影の長さを得るために、差を得るために極値を設定するステップをさらに含む請求項16に記載の不揮発性コンピュータ可読ストレージ媒体。
  18. 前記凸体の前記ローカル座標系に変換された後、前記円柱コライダからコンバートされる前記予め設定された多角柱が引き続き円柱コライダである場合、前記円柱コライダの半径および半分の高さ、前記凸体の前記ローカル座標系に変換された前記円柱コライダの3つの軸、すなわち、X軸、Y軸、およびZ軸の基底ベクトルに対応する座標基底ベクトル、ならびに前記凸体の前記ローカル座標系内の前記試験軸の試験軸方向を、前記円柱コライダの前記射影の長さを計算するために取得するステップをさらに含む請求項16に記載の不揮発性コンピュータ可読ストレージ媒体。
  19. 前記試験軸が前記円柱コライダの垂直軸と並行である場合、前記凸体の前記ローカル座標系に変換される前記円柱コライダの3つの軸、すなわち、X軸、Y軸、およびZ軸の基底ベクトルに対応する座標基底ベクトルのZ基底ベクトルの長さと半分の高さとの積を、前記円柱コライダの前記射影の長さとして取得するステップと、
    前記試験軸が前記円柱コライダの前記垂直軸に垂直である場合、前記凸体の前記ローカル座標系に変換される前記円柱コライダの3つの軸、すなわち、前記X軸、前記Y軸、および前記Z軸の前記基底ベクトルに対応する前記座標基底ベクトルのX基底ベクトルの長さおよびY基底ベクトルの長さのうちの大きな方の値を取得し、さらに、前記大きな方の値と前記円柱コライダの半径との積を、前記円柱コライダの前記射影の長さとして使用するステップとをさらに含む請求項15から18のいずれか一項に記載の不揮発性コンピュータ可読ストレージ媒体。
  20. 前記予め設定された多角形が、前記円柱コライダの底面に内接する正多角形である請求項15から18のいずれか一項に記載の不揮発性コンピュータ可読ストレージ媒体。
  21. 前記多角形が偶数個の辺を有する正多角形である場合、前記予め設定された多角形の辺方向が取得されるとき、中心に基づいて非対称である辺方向が、前記予め設定された多角柱の上面および下面上の2つの予め設定された多角形のうちの予め設定された多角形から選択され、前記多角柱の側面の辺の横方向を取得するとき、1つの側面の辺の横方向が選択される請求項20に記載の不揮発性コンピュータ可読ストレージ媒体。
JP2017558551A 2015-11-30 2016-05-20 リアルタイムの仮想シーン内の円柱コライダと凸体との間の衝突を検出するための方法および端末およびストレージ媒体 Active JP6480606B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201510864339.0 2015-11-30
CN201510864339.0A CN105512377B (zh) 2015-11-30 2015-11-30 实时虚拟场景中圆柱碰撞体与凸体碰撞探测的方法和系统
PCT/CN2016/082930 WO2017092251A1 (zh) 2015-11-30 2016-05-20 实时虚拟场景中圆柱碰撞体与凸体碰撞探测的方法、终端和存储介质

Publications (2)

Publication Number Publication Date
JP2018524664A JP2018524664A (ja) 2018-08-30
JP6480606B2 true JP6480606B2 (ja) 2019-03-13

Family

ID=55720357

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017558551A Active JP6480606B2 (ja) 2015-11-30 2016-05-20 リアルタイムの仮想シーン内の円柱コライダと凸体との間の衝突を検出するための方法および端末およびストレージ媒体

Country Status (5)

Country Link
US (2) US10311544B2 (ja)
JP (1) JP6480606B2 (ja)
KR (1) KR101986037B1 (ja)
CN (1) CN105512377B (ja)
WO (1) WO2017092251A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105512377B (zh) 2015-11-30 2017-12-12 腾讯科技(深圳)有限公司 实时虚拟场景中圆柱碰撞体与凸体碰撞探测的方法和系统
CN108733065B (zh) * 2017-09-29 2021-06-04 北京猎户星空科技有限公司 一种机器人的避障方法、装置及机器人
CN107553497B (zh) * 2017-10-20 2023-12-22 苏州瑞得恩光能科技有限公司 太阳能面板清扫机器人的边缘定位装置及其定位方法
CN107907593B (zh) * 2017-11-22 2020-09-22 中南大学 一种超声检测中机械手防碰撞方法
CN108364542A (zh) * 2018-01-12 2018-08-03 重庆韦娜软件有限公司 叉车场地考试位置检测与判定装置及其方法
CN110174951B (zh) * 2019-05-30 2022-06-21 郑州爱普锐科技有限公司 基于vr实训设备的人物动作识别方法
CN110221574B (zh) * 2019-06-10 2021-05-11 中国神华能源股份有限公司 单机防碰撞的方法和系统
CN112200890B (zh) * 2019-07-08 2023-09-29 福建天泉教育科技有限公司 基于Unity的碰撞器设置方法及存储介质
CN111199571A (zh) * 2019-12-20 2020-05-26 江苏原力动画制作股份有限公司 一种基于连接关系的控制物体变形方法
CN111346379B (zh) * 2020-03-12 2023-05-12 竞技世界(北京)网络技术有限公司 一种实现碰撞处理的方法及装置
CN111546376A (zh) * 2020-04-22 2020-08-18 哈尔滨工业大学 一种空间组合机械臂的快速自碰撞检测方法
CN111773723A (zh) * 2020-07-29 2020-10-16 网易(杭州)网络有限公司 碰撞检测方法和装置
US11794107B2 (en) * 2020-12-30 2023-10-24 Activision Publishing, Inc. Systems and methods for improved collision detection in video games
CN113450400A (zh) * 2021-06-28 2021-09-28 思享智汇(海南)科技有限责任公司 基于可变对象的碰撞检测方法、游戏交互方法及直播系统
CN114211498B (zh) * 2021-12-30 2023-09-08 中国煤炭科工集团太原研究院有限公司 基于方向包围盒的锚杆支护机器人碰撞检测方法及系统
CN114872043B (zh) * 2022-05-09 2023-11-17 苏州艾利特机器人有限公司 一种机器人碰撞检测方法、存储介质及电子设备
CN115861500B (zh) * 2022-12-09 2023-08-18 上海哔哩哔哩科技有限公司 2d模型碰撞体生成方法及装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6407748B1 (en) * 1998-04-17 2002-06-18 Sandia Corporation Method and apparatus for modeling interactions
US6266064B1 (en) * 1998-05-29 2001-07-24 Microsoft Corporation Coherent visibility sorting and occlusion cycle detection for dynamic aggregate geometry
US6708142B1 (en) * 1999-01-14 2004-03-16 University Of Central Florida Automatic motion modeling of rigid bodies using collision detection
US7353149B2 (en) * 2001-04-25 2008-04-01 Telekinesys Research Limited Method and apparatus for simulating dynamic contact of objects
US7694224B2 (en) * 2001-05-31 2010-04-06 International Business Machines Corporation Location predicative restoration of compressed images stored on a hard disk drive with soft and hard errors
JP2003346186A (ja) * 2002-03-19 2003-12-05 Sony Corp 画像処理装置および方法、並びにプログラム
WO2007054755A2 (en) * 2004-12-03 2007-05-18 Telekinesys Research Limited Physics simulation apparatus and method
WO2006102623A2 (en) * 2005-03-23 2006-09-28 Electronic Arts Inc. Computer simulation of body dynamics including a solver that solves in linear time for a set of constraints using vector processing
JP4192976B2 (ja) * 2006-08-02 2008-12-10 ソニー株式会社 接触形状算出装置及び接触形状算出方法、並びにコンピュータ・プログラム
JP5073065B2 (ja) * 2009-01-15 2012-11-14 三菱電機株式会社 衝突判定装置および衝突判定プログラム
JP5434651B2 (ja) * 2010-02-12 2014-03-05 富士通株式会社 干渉判定装置、干渉判定方法および干渉判定プログラム
CN102194248A (zh) * 2011-05-05 2011-09-21 上海大学 基于增强现实的虚实碰撞检测及响应方法
JP5498437B2 (ja) * 2011-05-25 2014-05-21 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、情報処理方法、情報処理プログラム、情報処理プログラムを記憶したコンピュータ読み取り可能な記録媒体、厚み領域設定装置、厚み領域設定方法、厚み領域設定プログラム、厚み領域設定プログラムを記憶したコンピュータ読み取り可能な記録媒体、仮想空間における面に関するデータ構造
CN102368280A (zh) * 2011-10-21 2012-03-07 北京航空航天大学 一种面向虚拟装配的基于aabb-obb混合包围盒的碰撞检测方法
JP6069923B2 (ja) * 2012-07-20 2017-02-01 セイコーエプソン株式会社 ロボットシステム、ロボット、ロボット制御装置
CN103679271B (zh) * 2013-12-03 2016-08-17 大连大学 基于Bloch球面坐标及量子计算的碰撞检测方法
CN104156520B (zh) * 2014-07-31 2017-04-12 哈尔滨工程大学 一种基于直线投影的凸多面体碰撞检测方法
CN105512377B (zh) * 2015-11-30 2017-12-12 腾讯科技(深圳)有限公司 实时虚拟场景中圆柱碰撞体与凸体碰撞探测的方法和系统

Also Published As

Publication number Publication date
JP2018524664A (ja) 2018-08-30
US10311544B2 (en) 2019-06-04
WO2017092251A1 (zh) 2017-06-08
CN105512377A (zh) 2016-04-20
US20180040101A1 (en) 2018-02-08
KR101986037B1 (ko) 2019-06-04
CN105512377B (zh) 2017-12-12
US20190251657A1 (en) 2019-08-15
US11301954B2 (en) 2022-04-12
KR20180012792A (ko) 2018-02-06

Similar Documents

Publication Publication Date Title
JP6480606B2 (ja) リアルタイムの仮想シーン内の円柱コライダと凸体との間の衝突を検出するための方法および端末およびストレージ媒体
JP6480607B2 (ja) リアルタイム仮想シーンにおけるコライダ間の衝突を検出するための方法、端末および記憶媒体
CN112150551A (zh) 物体位姿的获取方法、装置和电子设备
CN107808388B (zh) 包含运动目标的图像处理方法、装置及电子设备
CN103914876A (zh) 用于在3d地图上显示视频的方法和设备
JP2024519323A (ja) 衝突データ処理方法、衝突データ処理装置、コンピュータプログラム、及び電子機器
CN115439607A (zh) 一种三维重建方法、装置、电子设备及存储介质
CN111415420B (zh) 空间信息确定方法、装置及电子设备
WO2023093739A1 (zh) 一种多视图三维重建的方法
JP2023525535A (ja) 3次元画像内の表面特徴を識別する方法及び装置
CN115115773A (zh) 碰撞检测方法、装置、设备及存储介质
US20220375164A1 (en) Method and apparatus for three dimensional reconstruction, electronic device and storage medium
WO2021231265A1 (en) Methods and apparatus for generating point cloud histograms
CN115346020A (zh) 点云处理方法、避障方法、装置、机器人和存储介质
CN112484678B (zh) 一种基于虚拟三维空间的精准测量方法及装置
JP6564259B2 (ja) 画像処理装置、画像処理方法
CN113935425A (zh) 物体识别方法、装置、终端和存储介质
KR20230050269A (ko) 3d 이미지의 볼륨을 결정하기 위한 방법 및 장치
CN114119846A (zh) 分层层次细节模型生成方法及装置
CN109410304A (zh) 一种投影确定方法、装置及设备
CN113384890B (zh) 一种凸多边形碰撞的检测方法
CN116824105A (zh) 建筑信息模型的显示调整方法、装置、设备及存储介质
CN116563477A (zh) 道路标识点云的生成方法及装置
An et al. Collision Detection Technology based on bounding box of Virtual Reality
CN117095013A (zh) 精灵抽稀处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190207

R150 Certificate of patent or registration of utility model

Ref document number: 6480606

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250