IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ ▲騰▼▲訊▼科技(深▲セン▼)有限公司の特許一覧

特表2024-511796仮想銃の射撃表示方法及び装置、コンピュータ機器並びにコンピュータプログラム
<>
  • 特表-仮想銃の射撃表示方法及び装置、コンピュータ機器並びにコンピュータプログラム 図1
  • 特表-仮想銃の射撃表示方法及び装置、コンピュータ機器並びにコンピュータプログラム 図2
  • 特表-仮想銃の射撃表示方法及び装置、コンピュータ機器並びにコンピュータプログラム 図3
  • 特表-仮想銃の射撃表示方法及び装置、コンピュータ機器並びにコンピュータプログラム 図4
  • 特表-仮想銃の射撃表示方法及び装置、コンピュータ機器並びにコンピュータプログラム 図5
  • 特表-仮想銃の射撃表示方法及び装置、コンピュータ機器並びにコンピュータプログラム 図6
  • 特表-仮想銃の射撃表示方法及び装置、コンピュータ機器並びにコンピュータプログラム 図7
  • 特表-仮想銃の射撃表示方法及び装置、コンピュータ機器並びにコンピュータプログラム 図8
  • 特表-仮想銃の射撃表示方法及び装置、コンピュータ機器並びにコンピュータプログラム 図9
  • 特表-仮想銃の射撃表示方法及び装置、コンピュータ機器並びにコンピュータプログラム 図10
  • 特表-仮想銃の射撃表示方法及び装置、コンピュータ機器並びにコンピュータプログラム 図11
  • 特表-仮想銃の射撃表示方法及び装置、コンピュータ機器並びにコンピュータプログラム 図12
  • 特表-仮想銃の射撃表示方法及び装置、コンピュータ機器並びにコンピュータプログラム 図13
  • 特表-仮想銃の射撃表示方法及び装置、コンピュータ機器並びにコンピュータプログラム 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-15
(54)【発明の名称】仮想銃の射撃表示方法及び装置、コンピュータ機器並びにコンピュータプログラム
(51)【国際特許分類】
   G06T 13/20 20110101AFI20240308BHJP
   A63F 13/52 20140101ALI20240308BHJP
   A63F 13/55 20140101ALI20240308BHJP
   A63F 13/57 20140101ALI20240308BHJP
   A63F 13/837 20140101ALI20240308BHJP
【FI】
G06T13/20
A63F13/52
A63F13/55
A63F13/57
A63F13/837
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023558858
(86)(22)【出願日】2022-05-12
(85)【翻訳文提出日】2023-09-25
(86)【国際出願番号】 CN2022092416
(87)【国際公開番号】W WO2022262489
(87)【国際公開日】2022-12-22
(31)【優先権主張番号】202110679160.3
(32)【優先日】2021-06-18
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】517392436
【氏名又は名称】▲騰▼▲訊▼科技(深▲セン▼)有限公司
【氏名又は名称原語表記】TENCENT TECHNOLOGY (SHENZHEN) COMPANY LIMITED
【住所又は居所原語表記】35/F,Tencent Building,Kejizhongyi Road,Midwest District of Hi-tech Park,Nanshan District, Shenzhen,Guangdong 518057,CHINA
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【弁理士】
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】林 凌云
(72)【発明者】
【氏名】▲楊▼ 金昊
【テーマコード(参考)】
5B050
【Fターム(参考)】
5B050BA08
5B050BA09
5B050BA12
5B050BA13
5B050CA07
5B050CA08
5B050DA10
5B050EA07
5B050EA18
5B050EA27
5B050FA02
5B050FA09
5B050GA08
(57)【要約】
本願は、仮想シーンの技術分野に関する、仮想銃の射撃表示方法及び装置、コンピュータ機器並びに記憶媒体を開示する。前記方法は、仮想シーンにおける仮想銃を表示するステップ(320)と、仮想シーンで連続射撃を行うように仮想銃を制御するステップ(340)と、仮想銃が連続射撃中に1回射撃したことに応じて、仮想銃の銃身反動アニメーション及び銃口反動アニメーションのうちの少なくとも一方を表示するステップ(360)と、を含み、銃身反動アニメーションは、仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に変動曲線に従って変動するアニメーションであり、銃口反動アニメーションは、仮想銃の銃口が仮想銃のルートノードを中心として変動曲線に従って変動するアニメーションであり、X軸は、仮想銃の水平反動方向を示し、Y軸は、仮想銃の垂直反動方向を示す。本願によれば、仮想銃を用いて射撃を行う際の打撃感をより良く示すことができる。
【特許請求の範囲】
【請求項1】
端末が実行する仮想銃の射撃表示方法であって、
仮想シーンにおける前記仮想銃を表示するステップと、
前記仮想シーンで連続射撃を行うように前記仮想銃を制御するステップと、
前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃身反動アニメーション及び銃口反動アニメーションのうちの少なくとも一方を表示するステップと、を含み、
前記銃身反動アニメーションは、前記仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に変動曲線に従って変動するアニメーションであり、
前記銃口反動アニメーションは、前記仮想銃の銃口が前記仮想銃のルートノードを中心として変動曲線に従って変動するアニメーションであり、
前記X軸は、前記仮想銃の水平反動方向を示し、前記Y軸は、前記仮想銃の垂直反動方向を示す、方法。
【請求項2】
前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃身反動アニメーションを表示するステップは、
前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に正弦曲線に従って変動する前記銃身反動アニメーションを表示するステップを含む、請求項1に記載の方法。
【請求項3】
前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に正弦曲線に従って変動する前記銃身反動アニメーションを表示するステップは、
前記連続射撃における今回の射撃に対応する既射撃回数に基づいて、前記仮想銃の基本幅と、前記既射撃回数と正相関する前記仮想銃の反動ファクターとを決定し、前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第1の正弦曲線を決定し、前記仮想銃の銃身がX軸方向に前記第1の正弦曲線に従って変動する前記銃身反動アニメーションを表示するステップ、
又は、
前記連続射撃における今回の射撃に対応する既射撃回数に基づいて、前記仮想銃の基本幅と、前記既射撃回数と正相関する前記仮想銃の反動ファクターとを決定し、前記仮想銃の基本幅及び仮想銃の反動ファクターに基づいて、第2の正弦曲線を決定し、前記仮想銃の銃身がY軸方向に前記第2の正弦曲線に従って変動する前記銃身反動アニメーションを表示するステップ、
又は、
前記連続射撃における今回の射撃に対応する既射撃回数に基づいて、前記仮想銃の基本幅と、前記既射撃回数と正相関する前記仮想銃の反動ファクターとを決定し、前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第1の正弦曲線及び第2の正弦曲線をそれぞれ決定し、前記仮想銃の銃身がX軸方向に前記第1の正弦曲線に従って変動しながらY軸方向に前記第2の正弦曲線に従って変動する前記銃身反動アニメーションを表示するステップ、を含む、請求項2に記載の方法。
【請求項4】
前記方法は、
今回の射撃時に、前記仮想銃のX軸に沿った移動方向を決定するステップと、
前記仮想銃のX軸に沿った移動方向と前記第1の正弦曲線の変動方向とが一致しない場合、前記第1の正弦曲線のサインを変更するステップと、をさらに含む、請求項3に記載の方法。
【請求項5】
前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第1の正弦曲線を決定するステップは、
前記仮想銃の基本幅と前記反動ファクターとの第1の積を算出し、前記第1の積を前記第1の正弦曲線の最大変動幅とするステップ、
又は、
前記仮想銃の基本幅を前記第1の正弦曲線の最大変動幅とし、前記反動ファクターを前記第1の正弦曲線の角速度とするステップ、を含む、請求項3に記載の方法。
【請求項6】
前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第2の正弦曲線を決定するステップは、
前記仮想銃の基本幅と前記反動ファクターとの第2の積を算出し、前記第2の積を前記第2の正弦曲線の最大変動幅とするステップ、
又は、
前記仮想銃の基本幅を前記第2の正弦曲線の最大変動幅とし、前記反動ファクターを前記第2の正弦曲線の角速度とするステップ、を含む、請求項3に記載の方法。
【請求項7】
前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第1の正弦曲線及び第2の正弦曲線をそれぞれ決定するステップは、
前記仮想銃の基本幅と前記反動ファクターとの第1の積を算出し、前記第1の積を前記第1の正弦曲線の最大変動幅とし、前記仮想銃の基本幅と前記反動ファクターとの第2の積を算出し、前記第2の積を前記第2の正弦曲線の最大変動幅とするステップ、
又は、
前記仮想銃の基本幅を前記第1の正弦曲線の最大変動幅とし、前記反動ファクターを前記第1の正弦曲線の角速度とし、前記仮想銃の基本幅を前記第2の正弦曲線の最大変動幅とし、前記反動ファクターを前記第2の正弦曲線の角速度とするステップ、を含む、請求項3に記載の方法。
【請求項8】
前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃口反動アニメーションを表示するステップは、
前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃口が前記仮想銃のルートノードを中心として正弦曲線に従って変動する前記銃口反動アニメーションを表示するステップを含む、請求項1に記載の方法。
【請求項9】
前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃口が前記仮想銃のルートノードを中心として正弦曲線に従って変動する前記銃口反動アニメーションを表示するステップは、
前記連続射撃における今回の射撃に対応する既射撃回数に基づいて、前記仮想銃の基本幅と、前記既射撃回数と正相関する前記仮想銃の反動ファクターとを決定するステップと、
前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第3の正弦曲線を決定するステップと、
前記仮想銃の銃口が前記仮想銃のルートノードを中心として前記第3の正弦曲線に従って変動する前記銃口反動アニメーションを表示するステップと、を含む、請求項8に記載の方法。
【請求項10】
前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第3の正弦曲線を決定するステップは、
前記仮想銃の基本幅と前記反動ファクターとの第3の積を算出し、前記第3の積を前記第3の正弦曲線の最大変動幅とするステップ、
又は、
前記仮想銃の基本幅を前記第3の正弦曲線の最大変動幅とし、前記反動ファクターを前記第3の正弦曲線の角速度とするステップ、を含む、請求項9に記載の方法。
【請求項11】
前記方法は、
現在の時刻において前記仮想銃の銃口が位置する位置である前記仮想銃の第1の銃口位置と、次の時刻において前記仮想銃の銃口が位置する位置である前記仮想銃の第2の銃口位置とを、前記銃口反動アニメーションに基づいて決定し、前記仮想銃の銃身位置を取得するステップと、
前記銃身位置が前記第1の銃口位置を指す第1のベクトルと、前記銃身位置が前記第2の銃口位置を指す第2のベクトルとを作成するステップと、
前記第1のベクトルと前記第2のベクトルとの夾角を、前記仮想銃の銃身に対する前記仮想銃の銃口の回転量として決定するステップと、をさらに含む、請求項9に記載の方法。
【請求項12】
前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃身反動アニメーション及び銃口反動アニメーションのうちの少なくとも一方を表示するステップは、
前記連続射撃の既射撃回数が回数閾値を超えていない場合、前記仮想銃が連続射撃を行う基本アニメーションを表示するステップであって、前記基本アニメーションは、前記仮想銃が連続射撃を行う際に銃身が前後に移動するアニメーションである、ステップと、
前記連続射撃の既射撃回数が前記回数閾値を超えた場合、前記仮想銃が連続射撃を行う基本アニメーションに加えて、前記銃身反動アニメーション及び前記銃口反動アニメーションのうちの少なくとも一方を重畳し、重畳後のアニメーションを表示するステップと、を含む、請求項1に記載の方法。
【請求項13】
仮想銃の射撃表示装置であって、
仮想シーンにおける前記仮想銃を表示する表示モジュールと、
前記仮想シーンで連続射撃を行うように前記仮想銃を制御する制御モジュールと、を備え、
前記表示モジュールは、さらに、前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃身反動アニメーション及び銃口反動アニメーションのうちの少なくとも一方を表示し、
前記銃身反動アニメーションは、前記仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に変動曲線に従って変動するアニメーションであり、
前記銃口反動アニメーションは、前記仮想銃の銃口が前記仮想銃のルートノードを中心として変動曲線に従って変動するアニメーションであり、
前記X軸は、前記仮想銃の水平反動方向を示し、前記Y軸は、前記仮想銃の垂直反動方向を示す、装置。
【請求項14】
前記表示モジュールは、前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に正弦曲線に従って変動する前記銃身反動アニメーションを表示する、請求項13に記載の装置。
【請求項15】
前記表示モジュールは、決定サブモジュールと、表示サブモジュールと、を含み、
前記決定サブモジュールは、前記連続射撃における今回の射撃に対応する既射撃回数に基づいて、前記仮想銃の基本幅と、前記既射撃回数と正相関する前記仮想銃の反動ファクターとを決定し、前記決定サブモジュールは、さらに、前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第1の正弦曲線を決定し、前記表示サブモジュールは、前記仮想銃の銃身がX軸方向に前記第1の正弦曲線に従って変動する前記銃身反動アニメーションを表示するか、
又は、
前記決定サブモジュールは、前記連続射撃における今回の射撃に対応する既射撃回数に基づいて、前記仮想銃の基本幅と、前記既射撃回数と正相関する前記仮想銃の反動ファクターとを決定し、前記決定サブモジュールは、さらに、前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第2の正弦曲線を決定し、前記表示サブモジュールは、前記仮想銃の銃身がY軸方向に前記第2の正弦曲線に従って変動する前記銃身反動アニメーションを表示するか、
又は、
前記決定サブモジュールは、前記連続射撃における今回の射撃に対応する既射撃回数に基づいて、前記仮想銃の基本幅と、前記既射撃回数と正相関する前記仮想銃の反動ファクターとを決定し、前記決定サブモジュールは、さらに、前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第1の正弦曲線及び第2の正弦曲線をそれぞれ決定し、前記表示サブモジュールは、前記仮想銃の銃身がX軸方向に前記第1の正弦曲線に従って変動しながらY軸方向に前記第2の正弦曲線に従って変動する前記銃身反動アニメーションを表示する、請求項14に記載の装置。
【請求項16】
前記表示モジュールは、変更サブモジュールをさらに含み、
前記決定サブモジュールは、今回の射撃時に、前記仮想銃のX軸に沿った移動方向を決定し、
前記変更サブモジュールは、前記仮想銃のX軸に沿った移動方向と前記第1の正弦曲線の変動方向とが一致しない場合、前記第1の正弦曲線のサインを変更する、請求項15に記載の装置。
【請求項17】
前記表示モジュールは、前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃口が前記仮想銃のルートノードを中心として正弦曲線に従って変動する前記銃口反動アニメーションを表示する、請求項13に記載の装置。
【請求項18】
プロセッサと、前記プロセッサに接続されたメモリと、前記メモリに記憶されたプログラム命令とを備えるコンピュータ機器であって、
前記プログラム命令が前記プロセッサによって実行されると、請求項1~12のうちのいずれか一項に記載の仮想銃の射撃表示方法が実現される、コンピュータ機器。
【請求項19】
プロセッサによって実行されると、請求項1~12のうちのいずれか一項に記載の仮想銃の射撃表示方法が実現されるプログラム命令が記憶されている、コンピュータ読み取り可能な記憶媒体。
【請求項20】
プロセッサによって実行されると、請求項1~12のうちのいずれか一項に記載の仮想銃の射撃表示方法が実現されるコンピュータ命令を含む、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本願は2021年6月18日にて出願された、出願番号が202110679160.3、発明の名称が「仮想銃の射撃表示方法及び装置、コンピュータ機器並びに記憶媒体」である中国特許出願に基づく優先権を主張し、その内容の全ては参照により本願に組み込まれる。
【0002】
本願は、仮想シーンの技術分野に関し、特に、仮想銃の射撃表示方法及び装置、コンピュータ機器並びに記憶媒体に関する。
【背景技術】
【0003】
打撃感とは、仮想シーンにおいて、アニメーション、効果音、特殊効果などの次元のフィードバックにより、リアルな銃で撃っているような感覚をユーザに与えることを意味する。例えば、シューティングゲームでは、銃声、銃の振動アニメーション、射撃後に目標物に命中する特殊効果などで、リアルな射撃感覚を、撃ったユーザにフィードバックする。
関連技術では、仮想銃の前後変位により、仮想銃による射撃時に発生する反動をシミュレートすることで、ユーザに射撃時の打撃感を与える。
しかし、仮想銃の単純な前後変位は、仮想銃の反動を表す上で単調に見える。仮想シーンにおいて、どのようにして仮想銃による射撃時の打撃感をより良く示すかは、解决すべき問題である。
【発明の概要】
【0004】
本願の実施形態は、仮想銃による射撃時の打撃感をより良く示すことができる仮想銃の射撃表示方法及び装置、コンピュータ機器並びに記憶媒体を提供する。前記技術態様は、次の通りである。
【課題を解決するための手段】
【0005】
本願の一側面によれば、コンピュータ機器が実行する仮想銃の射撃表示方法であって、
仮想シーンにおける仮想銃を表示するステップと、
仮想シーンで連続射撃を行うように仮想銃を制御するステップと、
仮想銃が連続射撃中に1回射撃したことに応じて、仮想銃の銃身反動アニメーション及び銃口反動アニメーションのうちの少なくとも一方を表示するステップと、を含み、
銃身反動アニメーションは、仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に変動曲線に従って変動するアニメーションであり、銃口反動アニメーションは、仮想銃の銃口が仮想銃のルートノードを中心として変動曲線に従って変動するアニメーションであり、X軸は、仮想銃の水平反動方向を示し、Y軸は、仮想銃の垂直反動方向を示す、仮想銃の射撃表示方法が提供される。
【0006】
本願の別の側面によれば、仮想銃の射撃表示装置であって、
仮想シーンにおける仮想銃を表示する表示モジュールと、
仮想シーンで連続射撃を行うように仮想銃を制御する制御モジュールと、を備え、
前記表示モジュールは、さらに、仮想銃が連続射撃中に1回射撃したことに応じて、仮想銃の銃身反動アニメーション及び銃口反動アニメーションのうちの少なくとも一方を表示し、
銃身反動アニメーションは、仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に変動曲線に従って変動するアニメーションであり、銃口反動アニメーションは、仮想銃の銃口が仮想銃のルートノードを中心として変動曲線に従って変動するアニメーションであり、X軸は、仮想銃の水平反動方向を示し、Y軸は、仮想銃の垂直反動方向を示す、仮想銃の射撃表示装置が提供される。
【0007】
本願のさらなる側面によれば、プロセッサと、メモリとを備えるコンピュータ機器であって、メモリには、前記プロセッサによりロードされて実行されることで、本願の各側面による仮想銃の射撃表示方法を実現する少なくとも1つの命令が記憶されている、コンピュータ機器が提供される。
【0008】
本願のさらなる側面によれば、プロセッサによりロードされて実行されることで、本願の各側面による仮想銃の射撃表示方法を実現するコンピュータ命令が記憶されている、コンピュータ読み取り可能な記憶媒体が提供される。
【0009】
本願のさらなる側面によれば、コンピュータ読み取り可能な記憶媒体に記憶されたコンピュータ命令を含むコンピュータプログラム製品が提供される。コンピュータ機器のプロセッサは、コンピュータ読み取り可能な記憶媒体からこのコンピュータ命令を読み取り、プロセッサは、このコンピュータ命令を実行することで、このコンピュータ機器に上述した仮想銃の射撃表示方法を実行させる。
【発明の効果】
【0010】
本願の実施形態は、少なくとも以下の有益な効果を有する。
仮想シーンに仮想銃を表示するとともに、仮想銃を制御して連続射撃を行う際に、仮想銃の銃身反動アニメーション及び銃口反動アニメーションのうちの少なくとも一方を表示することにより、仮想銃による連続射撃のアニメーション表現がリアルな射撃の反動表現により即したものとなるようにし、ユーザが仮想銃を用いて模擬射撃を行う打撃感を向上させる。
【図面の簡単な説明】
【0011】
図1】本願の例示的な一実施形態に係るコンピュータシステムの構成ブロック図である。
図2】本願の例示的な一実施形態に係る仮想銃の射撃表示方法のインタフェース模式図である。
図3】本願の例示的な一実施形態に係る仮想銃の射撃表示方法のフローチャートである。
図4】本願の例示的な一実施形態に係る仮想銃の射撃表示方法のアニメーション表現フレームワークの模式図である。
図5】本願の例示的な一実施形態に係る、異なる状態における仮想銃の発砲反動アニメーションを設定するインタフェース模式図である。
図6】本願の例示的な一実施形態に係る仮想銃の射撃表示方法のフローチャートである。
図7】本願の例示的な一実施形態に係る、仮想銃の銃身がX軸方向に第1の正弦曲線に従って変動する銃身反動アニメーションを表示する方法のフローチャートである。
図8】本願の例示的な一実施形態に係る、仮想銃の銃身がY軸方向に第2の正弦曲線に従って変動する銃身反動アニメーションを表示する方法のフローチャートである。
図9】本願の例示的な一実施形態に係る、仮想銃の銃口が第3の正弦曲線に従って変動する銃口反動アニメーションを表示する方法のフローチャートである。
図10】本願の例示的な一実施形態に係る仮想銃の射撃表示方法のフローチャートである。
図11】本願の例示的な一実施形態に係る、仮想銃の銃身反動アニメーションを表示するフローチャートである。
図12】本願の例示的な一実施形態に係る、仮想銃の銃口反動アニメーションを表示するフローチャートである。
図13】本願の例示的な一実施形態に係る仮想銃の射撃表示装置の構成ブロック図である。
図14】本願の例示的な一実施形態に係るコンピュータ機器のブロック図である。
【発明を実施するための形態】
【0012】
以下、本願の実施形態に示す態様を理解しやすくするために、本願の実施形態で現れる用語について説明する。
【0013】
仮想シーンとは、アプリケーションプログラムが端末で実行されるときに表示される(又は提供される)仮想世界である。
【0014】
例示的には、この仮想世界は、実世界をシミュレートした世界であってもよいし、半シミュレーション半架空の3次元世界であってもよいし、純粋に架空の3次元世界であってもよい。
【0015】
例示的には、この仮想世界は、2次元仮想世界、2.5次元仮想世界、及び3次元仮想世界のいずれかであってもよい。
【0016】
任意選択で、この仮想世界は、少なくとも2つの仮想キャラクタ間の仮想世界での戦いにも使用されてもよく、この仮想世界には、少なくとも2つの仮想キャラクタが使用できる仮想リソースを有する。
【0017】
仮想キャラクタとは、仮想世界における可動オブジェクトを指す。この可動オブジェクトは、仮想人物、仮想動物、アニメ人物のうちの少なくとも一方であってもよい。任意選択で、仮想世界が3次元仮想世界である場合、仮想キャラクタは3次元立体モデルであってもよく、各仮想キャラクタは、3次元仮想世界における空間の一部を占めるように、3次元仮想世界で自身なりの形状及び体積を持つ。任意選択で、仮想キャラクタは、3次元人体スケルトン技術に基づいて作成された3次元キャラクタであってもよく、この仮想キャラクタは、異なる皮膚を着用することにより異なる外的イメージを実現する。いくつかの実現形態では、仮想キャラクタは、2.5次元又は2次元モデルを用いて実現されてもよいが、本願の実施形態ではこれに限定しない。
【0018】
関連技術における仮想銃の射撃表示方法は、仮想銃による連続射撃中に、仮想銃が前後に移動するアニメーションを表示することにより、仮想銃の反動を示す。しかしながら、このような方法で仮想銃の反動を示すのは、非常に単調であり、ユーザは、リアルに射撃しているような体験感を得ることができない。これに対して、本願で提案される方法では、仮想銃による連続射撃中の銃口反動アニメーション及び銃身反動アニメーションのうちの少なくとも一方を表示することにより、仮想銃による連続射撃過程をよりリアルなものにする。
【0019】
図1は、本願の例示的な一実施形態に係るコンピュータシステムの構成ブロック図を示している。このコンピュータシステム100は、端末110と、サーバ120とを備える。
【0020】
端末110には、仮想環境をサポートするクライアント111がインストールされ実行されており、このクライアント111は、マルチプレイヤーオンライン対戦プログラムであってもよい。端末110がクライアント111を実行すると、端末110の画面にクライアント111のユーザインタフェースが表示される。このクライアントは、バトルロイヤルシューティングゲーム、仮想現実(Virtual Reality、VR)アプリケーションプログラム、拡張現実(Augmented Reality、AR)プログラム、3次元地図プログラム、仮想現実ゲーム、拡張現実ゲーム、一人称シューティングゲーム(First-Person Shooting Game、FPS)、三人称シューティングゲーム(Third-Person Shooting Game、TPS)、マルチプレイヤーオンラインバトルアリーナゲーム(Multiplayer Online Battle Arena Games、MOBA)、シミュレーションゲーム(Simulation Game、SLG)のいずれかであってもよい。本実施形態では、このクライアントがロールプレイングゲームであることを例に挙げて説明する。端末110は、ユーザ112が使用する端末であり、ユーザ112は、端末110を使用して、仮想環境に位置する仮想キャラクタの活動を制御し、仮想キャラクタは、ユーザ112のマスター制御仮想キャラクタと呼ばれてもよい。仮想キャラクタの活動は、身体の姿勢を調整すること、ハイハイすること、歩行すること、走ること、ライディングすること、飛ぶこと、ジャンピングすること、運転すること、拾うこと、射撃すること、攻撃すること、投げることのうちの少なくとも1つを含むが、これらに限られない。概略的には、仮想キャラクタは、シミュレーション人物キャラクタ又はアニメ人物キャラクタのような仮想人物である。
【0021】
図1に1つの端末のみが示されているが、異なる実施形態では、サーバ120にアクセスできる他の端末140が複数存在する。任意選択で、開発者に対応する端末である1つ又は複数の端末140がさらに存在してもよく、端末140には、仮想環境をサポートするクライアントの開発及び編集プラットフォームがインストールされており、開発者は、端末140上でクライアントを編集し更新し、更新されたクライアントインストールパッケージを有線又は無線ネットワークを介してサーバ120に伝送することができ、端末110は、サーバ120からクライアントインストールパッケージをダウンロードしてクライアントの更新を実現することができる。
【0022】
端末110及び端末140は、無線ネットワーク又は有線ネットワークを介してサーバ120と接続されている。
【0023】
サーバ120は、1つのサーバ、複数のサーバ、クラウドコンピューティングプラットフォーム、及び仮想化センターのうちの少なくとも1つを含む。サーバ120は、3次元仮想環境をサポートするクライアントにバックグラウンドサービスを提供する。任意選択で、サーバ120は主要なコンピューティング作業を担い、端末は副次的なコンピューティング作業を担うか、又は、サーバ120は副次的なコンピューティング作業を担い、端末は主要なコンピューティング作業を担うか、又は、サーバ120及び端末は分散コンピューティングアーキテクチャによって協働コンピューティングを行うようにしてもよい。
【0024】
1つの概略的な例では、サーバ120は、プロセッサ122と、ユーザアカウントデータベース123と、対戦サービスモジュール124と、ユーザ向け入出力インタフェース(Input/Output Interface、I/Oインタフェース)125とを含む。プロセッサ122は、サーバ120に記憶された命令をロードし、ユーザアカウントデータベース123及び対戦サービスモジュール124におけるデータを処理する。ユーザアカウントデータベース123は、例えば、ユーザアカウントのアバタ、ユーザアカウントのニックネーム、ユーザアカウントの戦闘力指数、ユーザアカウントが存在するサービスエリアなど、端末110及び端末140が使用するユーザアカウントのデータを記憶する。対戦サービスモジュール124は、例えば、1V1の戦い、3V3の戦い、5V5の戦いなど、ユーザが戦うための複数の対戦ルームを提供する。ユーザ向けI/Oインタフェース125は、無線ネットワーク又は有線ネットワークを介して、端末110及び/又は端末140と通信を確立してデータを交換する。
【0025】
図2は、本願の例示的な一実施形態に係る仮想銃の射撃表示方法のインタフェース模式図を示している。
【0026】
図2に示すように、仮想シーンには、仮想銃と、この仮想銃を制御する仮想キャラクタの腕とが表示されている。仮想キャラクタの左手と仮想銃との接触点を仮想銃のルートノードとして選択し、仮想銃の座標系を確立する。仮想銃が前後に移動する方向をZ軸方向とし、仮想銃が鉛直反動の影響を受けて上下に移動する方向をY軸方向とし、仮想銃が水平反動の影響を受けて左右に移動する方向をX軸方向とする。
【0027】
なお、ルートノードは、仮想キャラクタの右手と仮想銃との接触点、仮想銃の中心点等であってもよく、座標系は、極座標系等であってもよいが、本願は、ルートノードの選択及び座標系の確立には制限をかけず、後文では、ルートノードが仮想キャラクタの左手と仮想銃との接触点であり、座標系が標準的なデカルト座標系であることのみを例に挙げて説明する。
【0028】
図3は、本願の例示的な一実施形態に係る仮想銃の射撃表示方法のフローチャートを示している。例示的には、この方法は、図1に示す端末110(又は端末110内のクライアント)によって実行されることを例に挙げて説明する。この方法は、以下のステップ320~ステップ360を含む。
【0029】
ステップ320では、仮想シーンにおける仮想銃を表示する。
【0030】
端末は、現在実行中のクライアントにおける仮想シーンと、仮想シーンにおける仮想銃とを表示する。
【0031】
例示的には、現在実行中のクライアントが一人称シューティングゲームであることを例にとる。端末は、ゲームにおける仮想シーンと、仮想シーンにおける仮想銃とを表示する。端末は、さらに、仮想シーンにおけるこの仮想銃を持つ仮想キャラクタの腕、又は、仮想銃を持つ仮想キャラクタなどを表示してもよい。また、端末によって表示されるユーザグラフィカルインタフェースには、射撃コントロールなどの操作コントロールがさらに含まれていてもよい。
【0032】
ステップ340では、仮想シーンで連続射撃を行うように仮想銃を制御する。
【0033】
仮想シーンで連続射撃を行うように仮想銃を制御する方法は、様々考えられ、例えば、ユーザは、クリック操作、押下操作、ダブルクリック操作、音声操作、視線制御、体感制御等により、仮想シーンで連続射撃を行うように仮想銃を制御することができる。又は、クライアントは、補助射撃モードにおいて、仮想シーンで連続射撃を行うように仮想銃を自動的に制御する。
【0034】
例示的には、ユーザは、ユーザグラフィカルインタフェースにおける射撃コントロールを押すことにより、仮想シーンで連続射撃を行うように仮想銃を制御する。又は、ユーザは、ユーザグラフィカルインタフェースにおける射撃コントロールを連続的にクリックすることにより、仮想シーンで連続射撃を行うように仮想銃を制御する。又は、ユーザは、補助射撃モードを選択し、クライアントは、仮想シーンで連続射撃を行うように銃を自動的に制御する。
【0035】
本願は、仮想シーンで連続射撃を行うように仮想銃を制御する方式には制限をかけない。
【0036】
ステップ360では、仮想銃が連続射撃中に1回射撃したことに応じて、仮想銃の銃身反動アニメーション及び銃口反動アニメーションのうちの少なくとも一方を表示する。
【0037】
銃身反動アニメーションは、仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に変動曲線に従って変動するアニメーションであり、X軸は、仮想銃の水平反動方向を示し、Y軸は、仮想銃の垂直反動方向を示す。
【0038】
銃口反動アニメーションは、仮想銃の銃口が仮想銃のルートノードを中心として変動曲線に従って変動するアニメーションであり、すなわち、仮想銃のルートノードを中心として回転することで、銃口の変動を実現し、かつ銃口の変動は変動曲線に従う。
【0039】
例示的には、銃身反動アニメーション及び銃口反動アニメーションにおける変動曲線は、正弦曲線であってもよく、正弦曲線の振幅、周波数、基本幅(base amplitude)及びサインは、実際の状況に合わせて設定されてもよい。例えば、異なる型番の仮想銃に対して異なる振幅及び周波数を設定する。また、例えば、同一型番の仮想銃に異なる付属品が配置されている場合、異なる基本幅を設定する。また、例えば、同一の仮想銃がX軸方向に変動する場合、すなわち、水平反動の影響を受けて変動する場合、正弦曲線のサインを調整する、などである。
【0040】
本願は、変動曲線の決定方式には制限をかけない。
【0041】
例示的には、銃身反動アニメーション及び銃口反動アニメーションにおける変動曲線が正弦曲線である場合、仮想銃が連続射撃中に1回射撃したことに応じて、仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に正弦曲線に従って変動する銃身反動アニメーションを表示する。このとき、仮想銃の銃身は正弦曲線に従って変動し、銃身の具体的な変動態様を提供し、正弦曲線の変動態様は、リアルな射撃の反動表現により即したものである。
【0042】
例示的には、連続射撃における今回の射撃に対応する既射撃回数に基づいて、仮想銃の基本幅と、既射撃回数と正相関する仮想銃の反動ファクターとを決定し、仮想銃の基本幅及び仮想銃の反動ファクターに基づいて、第1の正弦曲線を決定し、仮想銃の銃身がX軸方向に第1の正弦曲線に従って変動する銃身反動アニメーションを表示する。又は、連続射撃における今回の射撃に対応する既射撃回数に基づいて、仮想銃の基本幅と、既射撃回数と正相関する仮想銃の反動ファクターとを決定し、仮想銃の基本幅及び仮想銃の反動ファクターに基づいて、第2の正弦曲線を決定し、仮想銃の銃身がY軸方向に第2の正弦曲線に従って変動する銃身反動アニメーションを表示する。又は、連続射撃における今回の射撃に対応する既射撃回数に基づいて、仮想銃の基本幅と、既射撃回数と正相関する仮想銃の反動ファクターとを決定し、仮想銃の基本幅及び仮想銃の反動ファクターに基づいて、第1の正弦曲線及び第2の正弦曲線をそれぞれ決定し、仮想銃の銃身がX軸方向に第1の正弦曲線に従って変動しながらY軸方向に第2の正弦曲線に従って変動する銃身反動アニメーションを表示する。
【0043】
以上では、仮想銃の銃身がX軸及びY軸に変動する態様を詳細に例示したが、具体的に実現する際に、仮想銃の銃身は、少なくとも一方に従って変動することになる。
【0044】
任意選択で、今回の射撃時に、仮想銃のX軸に沿った移動方向を決定し、仮想銃のX軸に沿った移動方向と第1の正弦曲線の変動方向とが一致しない場合、第1の正弦曲線のサインを変更してもよい。このとき、仮想銃の銃身は、リアルな射撃時の反動表現により即したものとなる。リアルな射撃時の反動による激しい揺れは、非常に複雑な揺れ方を持っており、不規則な揺れが発生する可能性があり、第1の正弦曲線のサインを絶えず変更することは、不規則な揺れをシミュレートするために用いることができるからである。
【0045】
例示的には、仮想銃が連続射撃中に1回射撃したことに応じて、仮想銃の銃口が仮想銃のルートノードを中心として正弦曲線に従って変動する銃口反動アニメーションを表示する。
【0046】
例示的には、連続射撃における今回の射撃に対応する既射撃回数に基づいて、仮想銃の基本幅と、既射撃回数と正相関する仮想銃の反動ファクターとを決定し、仮想銃の基本幅及び仮想銃の反動ファクターに基づいて、第3の正弦曲線を決定し、仮想銃の銃口が仮想銃のルートノードを中心として第3の正弦曲線に従って変動する銃口反動アニメーションを表示する。
【0047】
任意選択で、現在の時刻において仮想銃の銃口が位置する位置である仮想銃の第1の銃口位置と、次の時刻において仮想銃の銃口が位置する位置である仮想銃の第2の銃口位置とを、銃口反動アニメーションに基づいて決定し、仮想銃の銃身位置を取得し、銃身位置が第1の銃口位置を指す第1のベクトルと、銃身位置が第2の銃口位置を指す第2のベクトルとを作成し、第1のベクトルと第2のベクトルとの夾角を、仮想銃の銃身に対する仮想銃の銃口の回転量として決定するようにしてもよい。
【0048】
任意選択で、仮想銃による連続射撃の回数閾値を予め設定してもよい。連続射撃の既射撃回数が回数閾値を超えていない場合、仮想銃が連続射撃を行う基本アニメーションを表示し、基本アニメーションは、仮想銃が連続射撃を行う際に銃身が前後に移動するアニメーションである。連続射撃の既射撃回数が回数閾値を超えた場合、仮想銃が連続射撃を行う基本アニメーションに加えて、銃身反動アニメーション及び銃口反動アニメーションのうちの少なくとも一方を重畳し、重畳後のアニメーションを表示する。以上では、反動アニメーションの表示タイミングの可能な形態を提供することにより、射撃過程が表現効果に富み、リアルな射撃時の反動表現により即したものとなるようにする。
【0049】
例示的には、仮想銃による連続射撃の回数閾値を5回に予め設定する。既射撃回数が5回以下である場合、仮想銃が連続射撃を行う基本アニメーションのみを表示し、すなわち、仮想銃が連続射撃を行う際に反動の作用によって銃身が前後に移動するアニメーションのみを表示する。既射撃回数が5回よりも大きい場合、仮想銃が連続射撃を行う基本アニメーションに加えて、銃身反動アニメーション及び銃口反動アニメーションのうちの少なくとも一方を重畳し、重畳後のアニメーションを表示する。例えば、基本アニメーションから仮想銃の連続射撃中に銃身が前後に移動する変位を決定し、次に、銃身反動アニメーションから仮想銃の水平反動方向及び垂直反動方向における変位を決定するとともに、銃口反動アニメーションから仮想銃のルートノードを中心とした仮想銃の回転角度を決定する。上記変位と回転角度とを重畳した後、仮想銃の位置及び姿勢を決定する。
【0050】
予め設定された仮想銃による連続射撃の回数閾値は、実際の状況に合わせて調整されてもよく、本願は、回数閾値の設定方法及び数値の大きさには制限をかけない。
【0051】
上述のように、本願の実施形態では、仮想シーンにおける仮想銃を表示し、仮想シーンで連続射撃を行うように仮想銃を制御し、連続射撃中に1回射撃したことに応じて、仮想銃の銃身反動アニメーション及び銃口反動アニメーションのうちの少なくとも一方を表示することにより、リアルな銃の反動表現をシミュレートした仮想銃の射撃表現方法を提供し、ユーザは、仮想銃を制御して連続射撃を行う際にリアルな射撃の感覚を得るようになり、連続射撃時の打撃感を向上させる。
【0052】
図4は、本願の例示的な一実施形態に係る仮想銃の射撃表示方法のアニメーション表現フレームワークの模式図を示している。主な武器がM2型仮想銃であることを例にとって、仮想銃の射撃中のアニメーション表現を示す。
【0053】
例示的には、仮想銃の射撃中のアニメーションは、異なるノードの運動曲線によって表現される。ここで、異なるノードは、仮想銃のボーンノードと、この仮想銃を使用して射撃を行う仮想キャラクタの身体ノードとを含み、運動曲線は、位置曲線、回転曲線及びスケール曲線を含む。
【0054】
概略的には、図4には、仮想銃の射撃表示アニメーションにおいて、この仮想銃を持って射撃を行う仮想キャラクタの3つの身体ノード(背骨、首、左腕)の位置、回転及びスケール曲線が示されている。この図から分かるように、曲線20~曲線22は、それぞれ仮想キャラクタの背骨位置曲線、背骨回転曲線及び背骨スケール曲線であり、曲線23~曲線25は、それぞれ仮想キャラクタの首位置曲線、首回転曲線及び首スケール曲線であり、曲線26~曲線28は、それぞれ仮想キャラクタの左腕位置曲線、左腕回転曲線及び左腕スケール曲線である。このようにして、仮想キャラクタの複数の身体ノード及び仮想銃の複数のボーンノードの運動曲線によって、仮想銃の射撃表示アニメーションを実現する。
【0055】
図4に示すのは、可能なアニメーション表現の1つにすぎない。これに類似して、仮想銃のボーンノードを選択することにより、仮想銃の動きを表現することができる。例えば、仮想銃のルートノード、銃口、引き金を選択し、それぞれの位置曲線、回転曲線、スケール曲線によって仮想銃の動きをアニメートする。
【0056】
選択した仮想キャラクタの身体ノード又は仮想銃のボーンノードの数が多いほど、アニメーション表現がよりリアルで繊細になる一方、計算リソース及びメモリリソースの消費量が大きくなる。
【0057】
図4から分かるように、仮想銃による射撃時に表示されるアニメーションは、異なるノードの運動曲線によって示される。そこで、異なる状態での運動曲線の振幅、オフセットなどのパラメータは、実際の銃の状況に合わせて設定されてもよい。
【0058】
図5は、本願の例示的な一実施形態に係る、異なる状態における仮想銃の発砲反動アニメーションを設定するインタフェース模式図を示している。
【0059】
概略的には、仮想銃の通常状態32(すなわち、射撃時にスコープを開かない)及び照準状態34(すなわち、照準射撃のためにスコープを開く)におけるパラメータを設定し、このパラメータは、基本オフセット比、曲線振幅比、起動時間、戻り時間などを含む。基本オフセット比とは、変動曲線の基本オフセット値を指し、曲線振幅比とは、変動曲線の振幅を指し、起動時間とは、仮想銃が起動状態から射撃するまでに要する時間を指し、戻り時間とは、仮想銃がオフセット位置から戻るまでに要する時間を指す。
【0060】
概略的には、図5には、通常状態32において射撃する際の仮想銃の基本オフセット比、曲線振幅比、起動時間及び戻り時間が、いずれも照準状態34よりも大きく設定される態様が示されており、すなわち、仮想銃が通常状態32において射撃する際の運動曲線の振幅及びオフセット等は、照準状態34における運動曲線の振幅及びオフセットよりも大きく、通常状態32における仮想銃の起動時間及び戻り時間は、いずれも照準状態34における起動時間及び戻り時間よりも大きい。
【0061】
概略的には、図5には、さらに、上記設定により得られた、仮想銃による射撃時の1つの可能な連続変動曲線36が示されている。連続変動曲線36から分かるように、仮想銃がX軸方向(すなわち、水平方向)に左右に変動し、すなわち、仮想銃の水平方向における反動が左右に交互に切り替わり、仮想銃は、Y軸方向(すなわち、垂直方向)において1方向にのみ変動し、すなわち、仮想銃の垂直方向における反動は常に鉛直上向きとなる。
【0062】
変動曲線38は、連続変動曲線36のある区間を拡大したものであり、変動曲線38から、この例で設定された仮想銃の変動曲線の大まかな形態が判明される。
【0063】
図6は、本願の例示的な一実施形態に係る仮想銃の射撃表示方法のフローチャートを示している。例示的には、この方法は、図1に示す端末110(又は端末110内のクライアント)によって実行されることを例に挙げて説明する。この方法は、以下のステップ620~ステップ664を含む。
【0064】
ステップ620では、仮想シーンにおける仮想銃を表示する。
【0065】
ステップ420を参照すればよいが、ここでは説明を省略する。
【0066】
ステップ640では、仮想シーンで連続射撃を行うように仮想銃を制御する。
【0067】
ステップ440を参照すればよいが、ここでは説明を省略する。
【0068】
ステップ662では、仮想銃が連続射撃中に1回射撃したことに応じて、仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に正弦曲線に従って変動する銃身反動アニメーションを表示する。
【0069】
以下、仮想銃の銃身がX軸方向及びY軸方向に正弦曲線に従って変動することについてそれぞれ説明する。
【0070】
(1)図7は、仮想銃が連続射撃中に1回射撃したことに応じて、仮想銃の銃身がX軸方向に第1の正弦曲線に従って変動する銃身反動アニメーションを表示するフローチャートを示している。
【0071】
ステップ6621では、連続射撃における今回の射撃に対応する既射撃回数に基づいて、仮想銃の基本幅と仮想銃の反動ファクターとを決定し、反動ファクターは、既射撃回数と正相関する。
【0072】
まず、仮想銃の基本幅の決定について説明する。
【0073】
一実施形態では、仮想銃の基本幅は、正弦曲線から算出された関数値であり、例示的には、正弦曲線は、式
【数1】
で表され、ここで、Aは、正弦曲線の幅を表し、ωは、正弦関数の周波数を表し、A及びωは、いずれも予め設定されておいた定数である。Δtは、今回の射撃と初回の射撃の時間差を示す。今回の射撃と初回の射撃の時間差Δtを正弦曲線の式に代入することにより、今回の射撃における仮想銃の基本幅A0を取得する。
【0074】
次に、仮想銃の反動ファクターの決定について説明する。
【0075】
一実施形態では、水平方向の反動ファクターRecoilFactorは、式RecoilFactor=RecoilLateralBase*RecoilLateralBaseScale+RecoilLateralModifier*(既射撃回数-1)によって決定され得る。ここで、RecoilLateralBaseは、水平方向の反動の基本値を表し、RecoilLateralBaseScaleは、水平方向の反動の基本値のスケールを表し、RecoilLateralModifierは、水平方向の反動の調整値を表す。反動ファクターの計算式から分かるように、反動ファクターは、既射撃回数と正の相関があり、すなわち、既射撃回数が多いほど、反動ファクターが大きくなる。
【0076】
上記3つのパラメータは、実際の状況に合わせて柔軟に設定されてもよい。1つの可能な実施形態では、図5の曲線振幅比の値をRecoilLateralBaseとし、図5の基本オフセット比の値をRecoilLateralBaseScaleとして、仮想銃における付属品の数及び種類に基づいて、RecoilLateralModifierの値を決定する。本願は、反動ファクターの計算式におけるパラメータの選択方式には制限をかけない。
【0077】
例示的には、連続するn回の射撃のうちの初回の射撃の時間を記録し、連続するn回の射撃のうちi回目の射撃については、i回目の射撃の時間から初回の射撃の時間を減算して、初回の射撃の時間との時間差Δtを得る。又は、予め設定された仮想銃による連続射撃における隣接する2回の射撃の時間間隔に、射撃間隔数、すなわちi-1を乗じて、i回目の射撃と初回の射撃の時間差Δtを得る。そして、Δtを式
【数2】
に代入し、その計算結果を今回の射撃における仮想銃の基本幅A0として決定する。
【0078】
例示的には、既射撃回数iを上記反動ファクターの計算式に代入することにより、i回目の射撃の反動ファクターRecoilFactorを決定する。
【0079】
ステップ6622では、仮想銃の基本幅及び仮想銃の反動ファクターに基づいて、第1の正弦曲線を決定する。
【0080】
一実施形態では、仮想銃の基本幅と反動ファクターとの第1の積を算出し、第1の積を第1の正弦曲線の最大変動幅とする。
【0081】
例示的には、仮想銃の銃身がX軸方向に変動する正弦曲線を、
【数3】
として作成し、ここで、A1は、i回目の射撃の実際の変動幅であり、A0は、i回目の射撃の基本幅であり、tは、現在の時間であり、t0は、i回目の射撃の時間である。
【0082】
例示的には、ステップ6621において、i回目の射撃の基本幅A0及び反動ファクターRecoilFactorを決定し、式A1=A0*RecoilFactorよりi回目の射撃の実際の変動幅A1を決定する。
【0083】
例示的には、i回目の射撃の時間t0及びi回目の射撃の実際の変動幅A1を、作成された正弦曲線に代入して、第1の正弦曲線を
【数4】
として決定する。
【0084】
別の実施形態では、仮想銃の基本幅を第1の正弦曲線の最大変動幅とし、反動ファクターを第1の正弦曲線の角速度とする。
【0085】
例示的には、仮想銃の銃身がX軸方向に変動する正弦曲線を、
【数5】
として作成し、ここで、A0は、i回目の射撃の実際の変動幅であり、tは、現在の時間であり、t0は、i回目の射撃の時間であり、ωは、反動ファクターRecoilFactorである。
【0086】
以上では、反動ファクターを、幅を変更するファクターとするか、又は、反動ファクターを、角速度を変更するファクターとするか、の第1の正弦曲線を決定するための2つの形態を提供し、また、変動曲線を変更するための2つの形態を提供することにより、最終的に生成される変動曲線が表現効果に富み、リアルな射撃時の反動表現により即したものとなるようにする。
【0087】
ステップ6623では、今回の射撃時に、仮想銃のX軸に沿った移動方向を決定する。
【0088】
仮想銃のX軸方向における反動、すなわち水平方向における反動は、方向が左向きか右向きか切り替わるため、仮想銃の今回の射撃時のX軸に沿った移動方向に応じて第1の正弦曲線を調整する必要がある。
【0089】
例示的には、i回目の射撃時に、現在の仮想銃の運動曲線に対して接線を作り、接線の傾きに基づいて現在の仮想銃のX軸に沿った移動方向を判断する。例えば、傾きが正の場合、仮想銃がX軸に沿って右へ移動すると判断する。傾きが負の場合、仮想銃がX軸に沿って左へ移動すると判断する。
【0090】
本願は、仮想銃のX軸に沿った移動方向を判断する方法には制限をかけない。
【0091】
ステップ6624では、今回の射撃時における仮想銃のX軸に沿った移動方向と第1の正弦曲線の変動方向とが一致しない場合、第1の正弦曲線のサインを変更する。
【0092】
ステップ6623により、今回の射撃時における仮想銃のX軸に沿った移動方向を決定し、この移動方向と第1の正弦曲線の変動方向とが一致しない場合、第1の正弦曲線のサインを変更し、すなわち、第1の正弦曲線の変動方向を調整する。
【0093】
例示的には、仮想銃のi回目の射撃時における運動曲線の接線の傾きが負であれば、この仮想銃がX軸に沿って左へ移動すると判断し、一方、第1の正弦曲線は右へ変動するため、このとき、第1の正弦曲線のサインを
【数6】
となるように変更する。
【0094】
ステップ6625では、仮想銃がX軸方向に第1の正弦曲線に従って変動する銃身反動アニメーションを表示する。
【0095】
上述したステップにより仮想銃の第1の正弦曲線を決定した後、仮想銃がX軸方向に第1の正弦曲線に従って変動する銃身反動アニメーションを表示する。
【0096】
(2)図8は、仮想銃が連続射撃中に1回射撃したことに応じて、仮想銃の銃身がY軸方向に第2の正弦曲線に従って変動する銃身反動アニメーションを表示するフローチャートを示している。
【0097】
第2の正弦曲線を決定するステップは、第1の正弦曲線に関するステップを参照すればよいが、異なるのは、設定されたパラメータだけである。実際の状況に合わせて異なるパラメータを選択することができ、例えば、正弦曲線m(t)に異なる幅の値Aを設定する、などを選択することができる。
【0098】
Y軸方向、すなわち垂直方向の反動は常に鉛直上向きとなるため、仮想銃がY軸方向に変動する第2の正弦曲線を決定する際に、仮想銃の運動方向に基づいて第2の正弦曲線を調整する必要がなく、すなわち、上記手順(1)のステップ6623及びステップ6624を省略することができる。
【0099】
ステップ6626では、連続射撃における今回の射撃に対応する既射撃回数に基づいて、仮想銃の基本幅と仮想銃の反動ファクターとを決定し、反動ファクターは既射撃回数と正相関する。
【0100】
ステップ6621を参照すればよいが、ここでは説明を省略する。
【0101】
ステップ6627では、仮想銃の基本幅及び仮想銃の反動ファクターに基づいて、第2の正弦曲線を決定する。
【0102】
一実施形態では、仮想銃の基本幅と反動ファクターとの第2の積を算出し、第2の積を第2の正弦曲線の最大変動幅とする。又は、仮想銃の基本幅を第2の正弦曲線の最大変動幅とし、反動ファクターを第2の正弦曲線の角速度とする。
【0103】
具体的にはステップ6622を参照すればよいが、ここでは説明を省略する。
【0104】
ステップ6628では、仮想銃がY軸方向に第2の正弦曲線に従って変動する銃身反動アニメーションを表示する。
【0105】
ステップ6625を参照すればよいが、ここでは説明を省略する。
【0106】
なお、ステップ6621~ステップ6625、及び、ステップ6626~ステップ6628は、いずれか一方を選択して実行してもよいし、両方の実行順序を限定せずに両方とも実行してもよいことに留意されたい。すなわち、第1の正弦曲線のみを決定し、仮想銃がX軸方向に第1の正弦曲線に従って変動する銃身反動アニメーションを表示するか、又は、第2の正弦曲線のみを決定し、仮想銃がY軸方向に第2の正弦曲線に従って変動する銃身反動アニメーションを表示するか、又は、第1の正弦曲線及び第2の正弦曲線をそれぞれ決定し、仮想銃の銃身がX軸方向に第1の正弦曲線に従って変動しながらY軸方向に第2の正弦曲線に従って変動する銃身反動アニメーションを表示することができる。
【0107】
本願は、上記ステップの選択及び実行順序には制限をかけない。
【0108】
なお、上述した第1の正弦曲線及び第2の正弦曲線をそれぞれ決定する態様は、
一実施形態では、仮想銃の基本幅と反動ファクターとの第1の積を算出し、第1の積を第1の正弦曲線の最大変動幅とし、仮想銃の基本幅と反動ファクターとの第2の積を算出し、第2の積を第2の正弦曲線の最大変動幅とするステップを含み、
別の実施形態では、仮想銃の基本幅を第1の正弦曲線の最大変動幅とし、反動ファクターを第1の正弦曲線の角速度とし、仮想銃の基本幅を第2の正弦曲線の最大変動幅とし、反動ファクターを第2の正弦曲線の角速度とするステップを含む。
【0109】
具体的にはステップ6622を参照すればよいが、ここでは説明を省略する。
【0110】
ステップ664では、仮想銃が連続射撃中に1回射撃したことに応じて、仮想銃の銃口が仮想銃のルートノードを中心として正弦曲線に従って変動する銃口反動アニメーションを表示する。
【0111】
図9は、仮想銃が連続射撃中に1回射撃したことに応じて、仮想銃の銃口が仮想銃のルートノードを中心として正弦曲線に従って変動する銃口反動アニメーションを表示するフローチャートを示している。このとき、仮想銃の銃口は正弦曲線に従って変動し、銃口の具体的な変動態様を提供し、正弦曲線の変動態様は、リアルな射撃の反動表現により即したものである。
【0112】
ステップ6641では、連続射撃における今回の射撃に対応する既射撃回数に基づいて、仮想銃の基本幅と仮想銃の反動ファクターとを決定し、反動ファクターは既射撃回数と正相関する。
【0113】
ステップ6621を参照すればよいが、ここでは説明を省略する。
【0114】
ステップ6642では、仮想銃の基本幅及び仮想銃の反動ファクターに基づいて、第3の正弦曲線を決定する。
【0115】
一実施形態では、仮想銃の基本幅と反動ファクターとの第3の積を算出し、第3の積を第3の正弦曲線の最大変動幅とするか、
又は、
別の実施形態では、仮想銃の基本幅を第3の正弦曲線の最大変動幅とし、反動ファクターを第3の正弦曲線の角速度とする。
【0116】
以上では、反動ファクターを、幅を変更するファクターとするか、又は、反動ファクターを、角速度を変更するファクターとするか、の第3の正弦曲線を決定するための2つの形態を提供し、また、変動曲線を変更するための2つの形態を提供することにより、最終的に生成される変動曲線が表現効果に富み、リアルな射撃時の反動表現により即したものとなるようにする。
【0117】
具体的にはステップ6622を参照すればよいが、ここでは説明を省略する。
【0118】
ステップ6643では、仮想銃の第1の銃口位置及び第2の銃口位置を、銃口反動アニメーションに基づいて決定し、仮想銃の銃身位置を取得する。
【0119】
第1の銃口位置は、現在の時刻において仮想銃の銃口が位置する位置であり、第2の銃口位置は、次の時刻において仮想銃の銃口が位置する位置、すなわち、仮想銃の銃口の目標運動位置である。
【0120】
現在の時刻において仮想銃の銃口が位置する第1の銃口位置と仮想銃の銃身位置とを取得する。仮想銃の銃身位置は、仮想銃のルートノードによって表すことができる。
【0121】
ステップ6642で取得した第3の正弦曲線に基づいて、仮想銃の銃口が次の時刻において位置する第2の銃口位置を決定する。ここで、次の時刻は、次のフレームであってもよく、又は、数フレームの間隔をおいた次の時刻であってもよい。
【0122】
ステップ6644では、銃身位置が第1の銃口位置を指す第1のベクトルと、銃身位置が第2の銃口位置を指す第2のベクトルとを作成する。
【0123】
例示的には、仮想銃のルートノードの位置を用いて仮想銃の銃身位置を表す。銃身位置が第1の銃口位置を指す第1のベクトルと、銃身位置が第2の銃口位置を指す第2のベクトルとを作成し、すなわち、仮想銃のルートノード位置が第1の銃口位置を指す第1のベクトルと、仮想銃のルートノード位置が第2の銃口位置を指す第2のベクトルとを作成する。
【0124】
ステップ6645では、第1のベクトルと第2のベクトルとの夾角を、仮想銃の銃身に対する仮想銃の銃口の回転量として決定する。
【0125】
ベクトル
【数7】
を用いて第1のベクトルを表し、
【数8】
ベクトルを用いて第2のベクトルを表し、次の式により第1のベクトルと第2のベクトルとの夾角θを決定する。
【0126】
【数9】
ここで、atan2は、アークタンジェント関数を表し、
【数10】
は、単位ベクトルを表し、*は、ベクトルのドット積を表し、その結果は1つの数である。×は、ベクトルのクロス積を表し、その結果は1つのベクトルである。norm()は、ベクトルに長さ及び大きさを与える関数である。
【0127】
上記式により算出された第1のベクトルと第2のベクトルとの夾角を、仮想銃の銃身に対する仮想銃の銃口の回転量として決定する。
【0128】
ステップ6646では、仮想銃の銃口が仮想銃のルートノードを中心として第3の正弦曲線に従って変動する銃口反動アニメーションを表示する。
【0129】
仮想銃の銃口が仮想銃のルートノードを中心として第3の正弦曲線に従って変動する銃口反動アニメーションを表示し、このような銃口反動アニメーションの実現は、ステップ6645で決定された仮想銃の銃身に対する仮想銃の銃口の回転量による。このとき、仮想銃の銃身に対する仮想銃の銃口の回転量を取得し、これを用いて銃口と銃身との間の角度関係を決定し、銃口の反動アニメーションを銃口と銃身との間の角度関係に従って再生する。銃口と銃身はいずれも仮想銃の部品であるため、反動アニメーションを再生する際に両者の間の厳格な位置関係を考慮しなければならず、そのうえ、両者の反動アニメーションの統一性及び協調性を確保する。
【0130】
なお、ステップ662及びステップ664は、いずれか一方を選択して実行してもよいし、両方とも実行してもよいことに留意されたい。すなわち、ステップ662のみを実行して仮想銃の銃身反動アニメーションを表示するか、又は、ステップ664のみを実行して仮想銃の銃口反動アニメーションを表示するか、又は、実行順序に関わらず、ステップ662及びステップ664の両方を実行して、銃身反動アニメーション及び銃口反動アニメーションを重畳して表示することができる。本願は、上記ステップの実行の選択及び実行順序には制限をかけない。
【0131】
上述のように、本願の実施形態では、仮想シーンにおける仮想銃を表示し、仮想シーンで連続射撃を行うように制御し、連続射撃のうちの1回の射撃後に、仮想銃がX軸方向に変動する第1の正弦曲線、Y軸方向に変動する第2の正弦曲線、及び銃口が変動する第3の正弦曲線のうちの少なくとも一方を算出し、算出された正弦曲線に対応するアニメーションを表示することにより、リアルな射撃に即した仮想銃の射撃表示方法を提供し、ユーザが仮想射撃中により強い打撃感を感じることができるようにする。
【0132】
図10図12は、本願の例示的な一実施形態に係る仮想銃の射撃表示方法のフローチャートを示している。本実施形態では、一人称シューティングゲームであって、射撃回数閾値が5回であることを例にとる。例示的には、この方法は、図1に示す端末110(又は端末110内のクライアント)によって実行されることを例に挙げて説明する。この方法は、以下のステップ700~ステップ750bを含む。
【0133】
図10は、本願の実施形態の全体的なフローチャートを示している。
【0134】
ステップ700:開始する。
【0135】
例示的には、仮想シーンにおける仮想銃を表示する。
【0136】
ステップ710:発砲する。
【0137】
例示的には、仮想シーンにおける仮想銃を制御して連続射撃を行う。
【0138】
ステップ720:基本アニメーション部分の反動を算出する。
【0139】
基本アニメーションは、仮想銃が連続射撃を行う際に銃身が前後に移動するアニメーションである。
【0140】
例示的には、基本アニメーションにおけるアニメーション曲線によって、仮想銃のZ軸における変位、すなわち、仮想銃が連続射撃を行う際に銃身が前後に移動する変位データを決定する。
【0141】
ステップ730:連発数を1だけ増やす。
【0142】
今回の射撃を経て、既射撃回数、すなわち連発数が1増した。
【0143】
例示的には、今回の射撃の前にi回連続して射撃したとすると、今回の射撃を経た後、既射撃回数が1増し、すなわち、i=i+1となる。
【0144】
ステップ740:連発数が5より大きいか否かを判断する。
【0145】
本実施形態では、回数閾値を5に設定しているため、既射撃回数が5よりも大きいか否かを判断する。
【0146】
例示的には、連発数、すなわち既射撃回数が5以下の場合、仮想銃が連続射撃を行う基本アニメーションのみを表示し、ステップ720に戻る。連発数、すなわち既射撃回数が5よりも大きい場合、仮想銃が連続射撃を行う基本アニメーションに加えて、銃身反動アニメーション及び銃口反動アニメーションのうちの少なくとも一方を重畳する。
【0147】
ステップ750a:銃身の変動を算出する。
【0148】
詳細は、以下の図11の説明を参照すればよい。
【0149】
ステップ750b:銃口の変動を算出する。
【0150】
詳細は、以下の図12の説明を参照すればよい。
【0151】
なお、ステップ750a及びステップ750bは、いずれか一方を選択して実行してもよいし、両方とも実行してもよく、ステップ750a及びステップ750bの両方を実行する場合、実行順序を限定しないことに留意されたい。本願は、銃身の変動及び銃口の変動の計算の実行の選択及び実行順序には制限をかけない。
【0152】
図11は、本願の実施形態における銃身の変動を算出するための詳細なステップを示している。
【0153】
ステップ850:開始する。
【0154】
ステップ851:発砲時間を記録する。
【0155】
例示的には、連続するn回の射撃のうちi回目の射撃については、その射撃時間である発砲時間をt0と記す。
【0156】
ステップ852:射撃データを取得し、現在の発砲曲線を作成する。
【0157】
既射撃回数、初回の射撃からの時間、現在の時間などを含む射撃データを取得する。
【0158】
現在の発砲曲線を
【数11】
として作成し、ここで、A1は、実際の変動幅であり、ωは、変動周波数であり、tは、現在の時間であり、t0は、今回の射撃の発砲時間であり、A0は、基本幅である。
【0159】
なお、ここでの現在の発砲曲線は、少なくとも、水平方向の現在の発砲曲線と、垂直方向の現在の発砲曲線とのうちのいずれか一方を含む。
【0160】
ステップ853:反動ファクターを算出する。
【0161】
例示的には、水平方向の反動ファクターを例にとると、式RecoilFactor = RecoilLateralBase * RecoilLateralBaseScale + RecoilLateralModifier * (i-1)によって反動ファクターを決定する。ここで、RecoilLateralBaseは、水平方向の反動の基本値を表し、RecoilLateralBaseScaleは、水平方向の反動の基本値のスケールを表し、RecoilLateralModifierは、水平方向の反動の調整値を表す。反動ファクターの計算式から分かるように、反動ファクターは、既射撃回数と正の相関があり、すなわち、既射撃回数が多いほど、反動ファクターが大きくなる。
【0162】
垂直方向の反動ファクターは、水平方向のものに類似しているため、ここでは説明を省略する。
【0163】
ステップ854:現在の実際の変動幅を算出する。
【0164】
正弦曲線の式
【数12】
によって基本幅A0を決定する。ここで、Aは、正弦曲線の幅を表し、ωは、正弦曲線の周波数を表し、A及びωは、いずれも予め設定されておいた定数である。Δtは、今回の射撃と初回の射撃の時間差を示す。今回の射撃と初回の射撃の時間差を正弦曲線の式に代入することにより、今回の射撃における仮想銃の基本幅A0を取得する。
【0165】
上記基本幅A0及び反動ファクターRecoilFactorに基づいて、実際の変動幅A1=A0 * RecoilFactorを決定し、A1は、今回の射撃後の変動曲線の実際の変動幅である。
【0166】
ステップ855:現在の発砲曲線を決定する。
【0167】
上記計算により得られたパラメータを、ステップ852で作成された現在の発砲曲線M(t)に代入して、現在の発砲曲線
【数13】
を得る。
【0168】
なお、発砲曲線M(t)は、少なくとも、水平方向の現在の発砲曲線と、垂直方向の現在の発砲曲線とのうちのいずれか一方を含む。
【0169】
ステップ856:水平方向の反動であるか否かを判断する。
【0170】
垂直方向の反動は常に上向きとなり、水平方向の反動は双方向である可能性があるため、水平方向の反動であるか否か、すなわち、ステップ855での現在の発砲曲線が水平方向の変動曲線に対応するか否かを判断する必要がある。
【0171】
水平方向の変動曲線であれば、ステップ857を実行する。垂直方向の変動曲線であれば、現在の発砲曲線を、直接、垂直方向の変動曲線、すなわち上述した実施形態で説明された第2の正弦曲線として決定する。
【0172】
ステップ857:仮想銃の移動方向に基づいて曲線を変更する。
【0173】
今回の射撃時に、現在の仮想銃の運動曲線に対して接線を作り、接線の傾きに基づいて現在の仮想銃の水平方向における移動方向を判断する。例えば、傾きが正の場合、仮想銃が水平方向に右へ移動すると判断する。傾きが負の場合、仮想銃が水平方向に左へ移動すると判断する。
【0174】
仮想銃が右へ移動する場合、曲線をそのまま保つ。仮想銃が左へ移動する場合、変動曲線の変動方向と仮想銃の移動方向とが一致することを確保するために、変動曲線のサインを変更し、すなわち、ステップ855で決定された現在の発砲曲線を
【数14】
となるように変更する。
【0175】
ステップ857により、水平方向の変動曲線、すなわち上述した実施形態で説明された第1の正弦曲線が得られる。
【0176】
図12は、本願の実施形態における銃口の変動を算出するための詳細なステップを示している。
【0177】
ステップ950:開始する。
【0178】
ステップ951:銃口の現在の発砲曲線を算出する。
【0179】
銃口の現在の発砲曲線を算出する方法は、図11に示したステップに類似しているため、ここでは説明を省略する。
【0180】
ステップ952:銃身位置を取得する。
【0181】
例示的には、基本アニメーションにより銃身位置を取得する。又は、基本アニメーションに銃身反動アニメーションを重畳することにより、重畳後のアニメーションから銃身位置を取得する。
【0182】
例示的には、仮想銃のルートノードの位置を用いて仮想銃の銃身位置を表す。
【0183】
ステップ953:銃口位置を取得する。
【0184】
例示的には、銃口の現在の発砲曲線により、銃口が現在位置する第1の銃口位置と、銃口が次の時刻において位置する第2の銃口位置、すなわち銃口の目標運動位置とを含む、銃口位置を取得する。
【0185】
ステップ954:銃身から銃口へのベクトルを作成する。
【0186】
例示的には、仮想銃のルートノードが仮想銃の第1の銃口位置を指す第1のベクトルを作成し、これをベクトル
【数15】
で表す。また、仮想銃のルートノードが仮想銃の第2の銃口位置を指す第2のベクトルを作成し、これをベクトル
【数16】
で表す。
【0187】
ステップ955:夾角の計算式に基づいて角度を取得する。
【0188】
銃口の現在の発砲曲線は、仮想銃のルートノードを中心とした回転で表現する必要があるため、仮想銃のルートノードを中心とした回転角度を算出する必要がある。
【0189】
次の式により、第1のベクトル及び第2のベクトルに基づいて角度を取得する。
【0190】
【数17】
ここで、atan2は、アークタンジェント関数を表し、
【数18】
は、単位ベクトルを表し、*は、ベクトルのドット積を表し、その結果は1つの数である。×は、ベクトルのクロス積を表し、その結果は1つのベクトルである。norm()は、ベクトルに長さ及びサイズを与える関数を表す。
【0191】
上述のように、本願の実施形態では、一人称シューティングゲームを例にとって、銃身反動アニメーション及び銃口反動アニメーションを決定して表示する手順を示し、仮想銃の射撃表示方法を提供することにより、仮想銃の射撃表示がリアルな射撃の場面により即したものとなるようにし、ユーザが模擬射撃を行う際に得られるリアルな射撃感覚を向上させる。
【0192】
以下は、本願の方法の実施形態を実行するために使用可能な、本願の装置の実施形態である。本願の装置の実施形態に開示されていない詳細については、本願の方法の実施形態を参照すればよい。
【0193】
図13は、本願の例示的な一実施形態に係る仮想銃の射撃表示装置の構成ブロック図である。この装置は、
仮想シーンにおける前記仮想銃を表示する表示モジュール1020と、
前記仮想シーンで連続射撃を行うように前記仮想銃を制御する制御モジュール1040と、を備え、
前記表示モジュール1020は、さらに、前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃身反動アニメーション及び銃口反動アニメーションのうちの少なくとも一方を表示し、
前記銃身反動アニメーションは、前記仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に変動曲線に従って変動するアニメーションであり、前記銃口反動アニメーションは、前記仮想銃の銃口が前記仮想銃のルートノードを中心として変動曲線に従って変動するアニメーションであり、前記X軸は、前記仮想銃の水平反動方向を示し、前記Y軸は、前記仮想銃の垂直反動方向を示す。
【0194】
1つの可能な設計では、前記表示モジュール1020は、前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に正弦曲線に従って変動する前記銃身反動アニメーションを表示する。
【0195】
1つの可能な設計では、前記表示モジュールは、決定サブモジュール1022と、表示サブモジュール1024と、を含む。前記決定サブモジュール1022は、前記連続射撃における今回の射撃に対応する既射撃回数に基づいて、前記仮想銃の基本幅と、前記既射撃回数と正相関する前記仮想銃の反動ファクターとを決定し、前記決定サブモジュール1022は、さらに、前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第1の正弦曲線を決定し、前記表示サブモジュール1024は、前記仮想銃の銃身がX軸方向に前記第1の正弦曲線に従って変動する前記銃身反動アニメーションを表示する。又は、前記決定サブモジュール1022は、前記連続射撃における今回の射撃に対応する既射撃回数に基づいて、前記仮想銃の基本幅と、前記既射撃回数と正相関する前記仮想銃の反動ファクターとを決定し、前記決定サブモジュール1022は、さらに、前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第2の正弦曲線を決定し、前記表示サブモジュール1024は、前記仮想銃の銃身がY軸方向に前記第2の正弦曲線に従って変動する前記銃身反動アニメーションを表示する。又は、前記決定サブモジュール1022は、前記連続射撃における今回の射撃に対応する既射撃回数に基づいて、前記仮想銃の基本幅と、前記既射撃回数と正相関する前記仮想銃の反動ファクターとを決定し、前記決定サブモジュール1022は、さらに、前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第1の正弦曲線及び第2の正弦曲線を決定し、前記表示サブモジュール1024は、前記仮想銃の銃身がX軸方向に前記第1の正弦曲線に従って変動しながらY軸方向に前記第2の正弦曲線に従って変動する前記銃身反動アニメーションを表示する。
【0196】
1つの可能な設計では、前記決定サブモジュール1022は、さらに、前記仮想銃の基本幅と前記反動ファクターとの第1の積を算出し、前記第1の積を前記第1の正弦曲線の最大変動幅とする。
【0197】
1つの可能な設計では、前記決定サブモジュール1022は、さらに、前記仮想銃の基本幅を前記第1の正弦曲線の最大変動幅とし、前記反動ファクターを前記第1の正弦曲線の角速度とする。
【0198】
1つの可能な設計では、前記決定サブモジュール1022は、さらに、前記仮想銃の基本幅と前記反動ファクターとの第2の積を算出し、前記第2の積を前記第2の正弦曲線の最大変動幅とする。
【0199】
1つの可能な設計では、前記決定サブモジュール1022は、さらに、前記仮想銃の基本幅を前記第2の正弦曲線の最大変動幅とし、前記反動ファクターを前記第2の正弦曲線の角速度とする。
【0200】
1つの可能な設計では、前記決定サブモジュール1022は、さらに、前記仮想銃の基本幅と前記反動ファクターとの第1の積を算出し、前記第1の積を前記第1の正弦曲線の最大変動幅とし、前記仮想銃の基本幅と前記反動ファクターとの第2の積を算出し、前記第2の積を前記第2の正弦曲線の最大変動幅とする。
【0201】
1つの可能な設計では、前記決定サブモジュール1022は、前記仮想銃の基本幅を前記第1の正弦曲線の最大変動幅とし、前記反動ファクターを前記第1の正弦曲線の角速度とし、前記仮想銃の基本幅を前記第2の正弦曲線の最大変動幅とし、前記反動ファクターを前記第2の正弦曲線の角速度とする。
【0202】
1つの可能な設計では、前記表示モジュールは、変更サブモジュール1026をさらに含み、前記決定サブモジュール1022は、今回の射撃時に、前記仮想銃のX軸に沿った移動方向を決定し、前記変更サブモジュール1026は、前記仮想銃のX軸に沿った移動方向と前記第1の正弦曲線の変動方向とが一致しない場合、前記第1の正弦曲線のサインを変更する。
【0203】
1つの可能な設計では、前記表示モジュール1020は、前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃口が前記仮想銃のルートノードを中心として正弦曲線に従って変動する前記銃口反動アニメーションを表示する。
【0204】
1つの可能な設計では、前記決定サブモジュール1022は、前記連続射撃における今回の射撃に対応する既射撃回数に基づいて、前記仮想銃の基本幅と、前記既射撃回数と正相関する前記仮想銃の反動ファクターとを決定し、前記決定サブモジュール1022は、さらに、前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第3の正弦曲線を決定し、前記表示サブモジュール1024は、前記仮想銃の銃口が前記仮想銃のルートノードを中心として前記第3の正弦曲線に従って変動する前記銃口反動アニメーションを表示する。
【0205】
1つの可能な設計では、前記表示モジュールは、取得サブモジュール1028と、作成サブモジュール1030と、をさらに含み、前記決定サブモジュール1022は、現在の時刻において前記仮想銃の銃口が位置する位置である前記仮想銃の第1の銃口位置と、次の時刻において前記仮想銃の銃口が位置する位置である前記仮想銃の第2の銃口位置とを、前記銃口反動アニメーションに基づいて決定し、前記取得サブモジュール1028は、前記仮想銃の銃身位置を取得し、前記作成サブモジュール1030は、前記銃身位置が前記第1の銃口位置を指す第1のベクトルと、前記銃身位置が前記第2の銃口位置を指す第2のベクトルとを作成し、前記決定サブモジュール1022は、前記第1のベクトルと前記第2のベクトルとの夾角を、前記仮想銃の銃身に対する前記仮想銃の銃口の回転量として決定する。
【0206】
1つの可能な設計では、前記表示モジュール1020は、前記連続射撃の既射撃回数が回数閾値を超えていない場合、前記仮想銃が連続射撃を行う際に銃身が前後に移動するアニメーションであって、前記仮想銃が連続射撃を行う基本アニメーションを表示し、前記表示モジュール1020は、さらに、前記連続射撃の既射撃回数が前記回数閾値を超えた場合、前記仮想銃が連続射撃を行う基本アニメーションに加えて、前記銃身反動アニメーション及び前記銃口反動アニメーションのうちの少なくとも一方を重畳し、重畳後のアニメーションを表示する。
【0207】
図14は、本願の例示的な一実施形態に示す端末の構成模式図である。前記端末1300は、中央処理装置(Central Processing Unit、CPU)1301と、ランダムアクセスメモリ(Random Access Memory、RAM)1302及びリードオンリーメモリ(Read-Only Memory、ROM)1303を含むシステムメモリ1304と、システムメモリ1304と中央処理装置1301とを接続するシステムバス1305と、を備える。前記端末1300は、コンピュータ機器内の各素子間での情報伝送を支援する基本入出力システム(Input/Output、I/Oシステム)1306と、オペレーティングシステム1313、アプリケーションプログラム1314及び他のプログラムモジュール1315を記憶するための大容量記憶デバイス1307と、をさらに備える。
【0208】
前記基本入出力システム1306は、情報を表示するためのディスプレイ1308と、ユーザが情報を入力するための、マウス、キーボードのような入力デバイス1309とを備える。前記ディスプレイ1308及び入力デバイス1309は、いずれも、システムバス1305に接続された入出力コントローラ1310を介して中央処理装置1301に接続されている。前記基本入出力システム1306は、キーボード、マウス、又は電子スタイラスなど、複数の他のデバイスからの入力を受信し処理するための入出力コントローラ1310をさらに備えてもよい。同様に、入出力コントローラ1310は、表示パネル、プリンタ、又は他のタイプの出力デバイスへの出力をさらに提供する。
【0209】
前記大容量記憶デバイス1307は、システムバス1305に接続された大容量記憶コントローラ(図示せず)を介して中央処理装置1301に接続されている。前記大容量記憶デバイス1307及びその関連するコンピュータ機器読み取り可能な媒体は、コンピュータ機器1300に不揮発性記憶を提供する。つまり、前記大容量記憶デバイス1307は、ハードディスク又はコンパクトディスクリードオンリーメモリ(Compact Disc Read-Only Memory、CD-ROM)ドライブのようなコンピュータ機器読み取り可能な媒体(図示せず)を備えてもよい。
【0210】
一般性を失うことなく、前記コンピュータ機器読み取り可能な媒体は、コンピュータ機器記憶媒体及び通信媒体を備えることができる。コンピュータ機器記憶媒体は、コンピュータ機器読み取り可能な命令、データ構造、プログラムモジュール、又は他のデータのような情報を記憶する如何なる方法又は技術で実現される、揮発性及び不揮発性、リムーバブル及びノンリムーバブルメディアを含む。コンピュータ機器記憶媒体は、RAM、ROM、消去可能プログラマブルリードオンリーメモリ(Erasable Programmable Read Only Memory、EPROM)、電気的消去可能プログラマブルリードオンリーメモリ(Electrically Erasable Programmable Read-Only Memory、EEPROM)、CD-ROM、デジタルビデオディスク(Digital Video Disc、DVD)、又は他の光学記憶装置、テープカセット、テープ、磁気ディスク記憶又は他の磁気記憶装置を含む。もちろん、前記コンピュータ機器記憶媒体は上述したいくつかに限られないと当業者が分かっている。上述したシステムメモリ1304及び大容量記憶デバイス1307はメモリと総称されることができる。
【0211】
本公開の様々な実施形態によれば、前記コンピュータ機器1300は、インターネットのようなネットワークを介してネットワーク上のリモートコンピュータ機器に接続されて稼働してもよい。つまり、コンピュータ機器1300は、前記システムバス1305に接続されたネットワークインタフェースユニット1312を介してネットワーク1311に接続されるか、又は、ネットワークインタフェースユニット1312を用いて他のタイプのネットワーク又はリモートコンピュータ機器システム(図示せず)に接続されてもよい。
【0212】
前記メモリは、メモリに記憶された1つ以上のプログラムをさらに含み、中央処理装置1301は、該1つ以上のプログラムを実行することで、上述した仮想銃の射撃表示方法におけるステップの全部又は一部を実現する。
【0213】
例示的な実施形態では、プロセッサによってロードされ実行されると、上述した各方法の実施形態による仮想銃の射撃表示方法を実現する少なくとも1つの命令、プログラムの少なくとも1つのセグメント、コードセット、又は命令セットが記憶されている、コンピュータ読み取り可能な記憶媒体がさらに提供される。
【0214】
例示的な実施形態では、コンピュータ読み取り可能な記憶媒体に記憶されたコンピュータ命令を含むコンピュータプログラム製品又はコンピュータプログラムがさらに提供される。コンピュータ機器のプロセッサは、コンピュータ読み取り可能な記憶媒体からこのコンピュータ命令を読み取り、プロセッサは、このコンピュータ機器が上述した側面で説明された仮想銃の射撃表示方法を実行するように、このコンピュータ命令を実行する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
【手続補正書】
【提出日】2023-09-25
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
端末が実行する仮想銃の射撃表示方法であって、
仮想シーンにおける前記仮想銃を表示するステップと、
前記仮想シーンで連続射撃を行うように前記仮想銃を制御するステップと、
前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃身反動アニメーション及び銃口反動アニメーションのうちの少なくとも一方を表示するステップと、を含み、
前記銃身反動アニメーションは、前記仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に変動曲線に従って変動するアニメーションであり、
前記銃口反動アニメーションは、前記仮想銃の銃口が前記仮想銃のルートノードを中心として変動曲線に従って変動するアニメーションであり、
前記X軸は、前記仮想銃の水平反動方向を示し、前記Y軸は、前記仮想銃の垂直反動方向を示す、方法。
【請求項2】
前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃身反動アニメーションを表示するステップは、
前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に正弦曲線に従って変動する前記銃身反動アニメーションを表示するステップを含む、請求項1に記載の方法。
【請求項3】
前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に正弦曲線に従って変動する前記銃身反動アニメーションを表示するステップは、
前記連続射撃における今回の射撃に対応する既射撃回数に基づいて、前記仮想銃の基本幅と、前記既射撃回数と正相関する前記仮想銃の反動ファクターとを決定し、前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第1の正弦曲線を決定し、前記仮想銃の銃身がX軸方向に前記第1の正弦曲線に従って変動する前記銃身反動アニメーションを表示するステップ、
又は、
前記連続射撃における今回の射撃に対応する既射撃回数に基づいて、前記仮想銃の基本幅と、前記既射撃回数と正相関する前記仮想銃の反動ファクターとを決定し、前記仮想銃の基本幅及び仮想銃の反動ファクターに基づいて、第2の正弦曲線を決定し、前記仮想銃の銃身がY軸方向に前記第2の正弦曲線に従って変動する前記銃身反動アニメーションを表示するステップ、
又は、
前記連続射撃における今回の射撃に対応する既射撃回数に基づいて、前記仮想銃の基本幅と、前記既射撃回数と正相関する前記仮想銃の反動ファクターとを決定し、前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第1の正弦曲線及び第2の正弦曲線をそれぞれ決定し、前記仮想銃の銃身がX軸方向に前記第1の正弦曲線に従って変動しながらY軸方向に前記第2の正弦曲線に従って変動する前記銃身反動アニメーションを表示するステップ、を含む、請求項2に記載の方法。
【請求項4】
前記方法は、
今回の射撃時に、前記仮想銃のX軸に沿った移動方向を決定するステップと、
前記仮想銃のX軸に沿った移動方向と前記第1の正弦曲線の変動方向とが一致しない場合、前記第1の正弦曲線のサインを変更するステップと、をさらに含む、請求項3に記載の方法。
【請求項5】
前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第1の正弦曲線を決定するステップは、
前記仮想銃の基本幅と前記反動ファクターとの第1の積を算出し、前記第1の積を前記第1の正弦曲線の最大変動幅とするステップ、
又は、
前記仮想銃の基本幅を前記第1の正弦曲線の最大変動幅とし、前記反動ファクターを前記第1の正弦曲線の角速度とするステップ、を含む、請求項3に記載の方法。
【請求項6】
前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第2の正弦曲線を決定するステップは、
前記仮想銃の基本幅と前記反動ファクターとの第2の積を算出し、前記第2の積を前記第2の正弦曲線の最大変動幅とするステップ、
又は、
前記仮想銃の基本幅を前記第2の正弦曲線の最大変動幅とし、前記反動ファクターを前記第2の正弦曲線の角速度とするステップ、を含む、請求項3に記載の方法。
【請求項7】
前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第1の正弦曲線及び第2の正弦曲線をそれぞれ決定するステップは、
前記仮想銃の基本幅と前記反動ファクターとの第1の積を算出し、前記第1の積を前記第1の正弦曲線の最大変動幅とし、前記仮想銃の基本幅と前記反動ファクターとの第2の積を算出し、前記第2の積を前記第2の正弦曲線の最大変動幅とするステップ、
又は、
前記仮想銃の基本幅を前記第1の正弦曲線の最大変動幅とし、前記反動ファクターを前記第1の正弦曲線の角速度とし、前記仮想銃の基本幅を前記第2の正弦曲線の最大変動幅とし、前記反動ファクターを前記第2の正弦曲線の角速度とするステップ、を含む、請求項3に記載の方法。
【請求項8】
前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃口反動アニメーションを表示するステップは、
前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃口が前記仮想銃のルートノードを中心として正弦曲線に従って変動する前記銃口反動アニメーションを表示するステップを含む、請求項1に記載の方法。
【請求項9】
前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃口が前記仮想銃のルートノードを中心として正弦曲線に従って変動する前記銃口反動アニメーションを表示するステップは、
前記連続射撃における今回の射撃に対応する既射撃回数に基づいて、前記仮想銃の基本幅と、前記既射撃回数と正相関する前記仮想銃の反動ファクターとを決定するステップと、
前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第3の正弦曲線を決定するステップと、
前記仮想銃の銃口が前記仮想銃のルートノードを中心として前記第3の正弦曲線に従って変動する前記銃口反動アニメーションを表示するステップと、を含む、請求項8に記載の方法。
【請求項10】
前記仮想銃の基本幅及び前記仮想銃の反動ファクターに基づいて、第3の正弦曲線を決定するステップは、
前記仮想銃の基本幅と前記反動ファクターとの第3の積を算出し、前記第3の積を前記第3の正弦曲線の最大変動幅とするステップ、
又は、
前記仮想銃の基本幅を前記第3の正弦曲線の最大変動幅とし、前記反動ファクターを前記第3の正弦曲線の角速度とするステップ、を含む、請求項9に記載の方法。
【請求項11】
前記方法は、
現在の時刻において前記仮想銃の銃口が位置する位置である前記仮想銃の第1の銃口位置と、次の時刻において前記仮想銃の銃口が位置する位置である前記仮想銃の第2の銃口位置とを、前記銃口反動アニメーションに基づいて決定し、前記仮想銃の銃身位置を取得するステップと、
前記銃身位置が前記第1の銃口位置を指す第1のベクトルと、前記銃身位置が前記第2の銃口位置を指す第2のベクトルとを作成するステップと、
前記第1のベクトルと前記第2のベクトルとの夾角を、前記仮想銃の銃身に対する前記仮想銃の銃口の回転量として決定するステップと、をさらに含む、請求項9に記載の方法。
【請求項12】
前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃身反動アニメーション及び銃口反動アニメーションのうちの少なくとも一方を表示するステップは、
前記連続射撃の既射撃回数が回数閾値を超えていない場合、前記仮想銃が連続射撃を行う基本アニメーションを表示するステップであって、前記基本アニメーションは、前記仮想銃が連続射撃を行う際に銃身が前後に移動するアニメーションである、ステップと、
前記連続射撃の既射撃回数が前記回数閾値を超えた場合、前記仮想銃が連続射撃を行う基本アニメーションに加えて、前記銃身反動アニメーション及び前記銃口反動アニメーションのうちの少なくとも一方を重畳し、重畳後のアニメーションを表示するステップと、を含む、請求項1に記載の方法。
【請求項13】
仮想銃の射撃表示装置であって、
仮想シーンにおける前記仮想銃を表示する表示モジュールと、
前記仮想シーンで連続射撃を行うように前記仮想銃を制御する制御モジュールと、を備え、
前記表示モジュールは、さらに、前記仮想銃が前記連続射撃中に1回射撃したことに応じて、前記仮想銃の銃身反動アニメーション及び銃口反動アニメーションのうちの少なくとも一方を表示し、
前記銃身反動アニメーションは、前記仮想銃の銃身がX軸及びY軸のうちの少なくとも一方の方向に変動曲線に従って変動するアニメーションであり、
前記銃口反動アニメーションは、前記仮想銃の銃口が前記仮想銃のルートノードを中心として変動曲線に従って変動するアニメーションであり、
前記X軸は、前記仮想銃の水平反動方向を示し、前記Y軸は、前記仮想銃の垂直反動方向を示す、装置。
【請求項14】
プロセッサと、前記プロセッサに接続されたメモリと、前記メモリに記憶されたプログラム命令とを備えるコンピュータ機器であって、
前記プログラム命令が前記プロセッサによって実行されると、請求項1~12のうちのいずれか一項に記載の仮想銃の射撃表示方法が実現される、コンピュータ機器。
【請求項15】
コンピュータに、請求項1~12のうちのいずれか一項に記載の仮想銃の射撃表示方法を実行させるように構成される、ことを特徴とするコンピュータプログラム
【国際調査報告】