(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-20
(45)【発行日】2022-05-30
(54)【発明の名称】仮想環境における仮想オブジェクトの姿勢決定方法、装置及び媒体
(51)【国際特許分類】
G06T 19/00 20110101AFI20220523BHJP
G06T 19/20 20110101ALI20220523BHJP
A63F 13/837 20140101ALI20220523BHJP
A63F 13/577 20140101ALI20220523BHJP
A63F 13/55 20140101ALI20220523BHJP
【FI】
G06T19/00 C
G06T19/20
A63F13/837
A63F13/577
A63F13/55
(21)【出願番号】P 2020541430
(86)(22)【出願日】2018-11-22
(86)【国際出願番号】 CN2018117008
(87)【国際公開番号】W WO2019153836
(87)【国際公開日】2019-08-15
【審査請求日】2020-07-28
(31)【優先権主張番号】201810136822.0
(32)【優先日】2018-02-09
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】517392436
【氏名又は名称】▲騰▼▲訊▼科技(深▲セン▼)有限公司
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】▲デン▼ ▲楊▼
【審査官】板垣 有紀
(56)【参考文献】
【文献】特開2006-149767(JP,A)
【文献】特開2010-220878(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 19/00 - 19/20
A63F 13/00 - 13/98
(57)【特許請求の範囲】
【請求項1】
電子機器が実行する、仮想環境における仮想オブジェクトの姿勢決定方法であって、
前記仮想オブジェクトの少なくとも一つのサンプリング点を決定するステップであって、前記サンプリング点が地面に対する衝突検出に使用される点であるステップと、
前記少なくとも一つのサンプリング点及び前記仮想オブジェクトの位置する地面に基づき、前記地面に対する前記仮想オブジェクトの法線方向を決定するステップ
であって、
前記サンプリング点から鉛直下方向で衝突検出を行い、前記仮想オブジェクトが前記地面に衝突する際の衝突点を地面張り付き点として決定するステップと、
前記地面張り付き点に基づき、前記地面に対する前記仮想オブジェクトの前記法線方向を決定するステップと、
を含むステップと、
前記法線方向に基づき、前記仮想環境における前記仮想オブジェクトの地面張り付き姿勢を決定するステップと、
を含むことを特徴とする方法。
【請求項2】
前記サンプリング点は、前記仮想オブジェクトの中心点を含み、
前記地面張り付き点に基づき、前記地面に対する前記仮想オブジェクトの前記法線方向を決定するステップは、
前記地面張り付き点を始点として前記地面に垂直な第1の垂直線に基づき、前記地面に対する前記仮想オブジェクトの前記法線方向を決定するステップと、
を含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記仮想オブジェクトの少なくとも一つのサンプリング点を決定するステップは、
前記仮想オブジェクトの中心点を、前記仮想オブジェクトの前記サンプリング点として決定するステップ、
を含むことを特徴とする請求項
2に記載の方法。
【請求項4】
前記法線に基づき、前記仮想環境における前記仮想オブジェクトの地面張り付き姿勢を決定することは、
地面座標系のx軸に対する前記法線方向の第1のヨー角に基づき、前記仮想環境における前記仮想オブジェクトのピッチ角を決定するステップと、
前記地面座標系のz軸に対する前記法線方向の第2のヨー角に基づき、前記仮想環境における前記仮想オブジェクトのロール角を決定するステップと、を含み、
前記地面座標系は、前記仮想環境が配置されている世界座標系である、
ことを特徴とする請求項
2に記載の方法。
【請求項5】
前記サンプリング点は、前記仮想オブジェクトの前記地面張り付き姿勢での上半分の点を表すための前部サンプリング点と、前記仮想オブジェクトの前記地面張り付き姿勢での下半分の点を表すための後部サンプリング点とを含み、
前記地面張り付き点に基づき、前記地面に対する前記仮想オブジェクトの前記法線方向を決定するステップは、
前記前部サンプリング点から衝突検出した後に得られた点である第1の地面貼合点と、前記後部サンプリング点から衝突検出した後に得られた点である第2の地面貼合点との間の接続線を決定するステップと、
前記接続線に垂直で、かつロール角が0である第2の垂直線に基づき、前記地面に対する前記仮想オブジェクトの前記法線方向を決定するステップと、
を含むことを特徴とする請求項
1に記載の方法。
【請求項6】
前記仮想オブジェクトの少なくとも一つのサンプリング点を決定するステップは、
前記仮想オブジェクトの中心点の前方の第1の距離にある点を、前記前部サンプリング点として決定するステップと、
前記仮想オブジェクトの中心点の後方の第2の距離にある点を、前記後部サンプリング点として決定するステップと、
前記前部サンプリング点及び前記後部サンプリング点を前記仮想オブジェクトの前記サンプリング点として決定ステップと、を含むことを特徴とする請求項
5に記載の方法。
【請求項7】
前記法線方向に基づき、前記仮想環境における前記仮想オブジェクトの地面張り付き姿勢を決定するステップは、
地面座標系のx軸に対する前記法線方向の第1のヨー角に基づき、前記仮想環境における前記仮想オブジェクトのピッチ角を決定するステップを含み、
前記地面座標系は、前記仮想環境が配置されている世界座標系である、
ことを特徴とする請求項
5に記載の方法。
【請求項8】
前記サンプリング点は、前記仮想オブジェクトの前記地面張り付き姿勢での上半分の点を表すための前部サンプリング点と、前記仮想オブジェクトの前記地面張り付き姿勢での下半分の点を表すための後部サンプリング点と、及び前記仮想オブジェクトの前記地面張り付き姿勢での左側または右側の点を表すためのサイドサンプリング点とを含み、
前記地面張り付き点に基づき、前記地面に対する前記仮想オブジェクトの前記法線方向を決定するステップは、
前記前部サンプリング点から衝突検出した後に得られた点である第1の地面張り付き点と、前記後部サンプリング点から衝突検出した後に得られた点である第2の地面張り付き点と、前記サイドサンプリング点から衝突検出した後に得られた点である第3の地面張り付き点とが存在する平面を決定することと、
前記平面に垂直で上向きの第3の垂直線に基づき、前記地面に対する前記仮想オブジェクトの前記法線方向を決定するステップと、
を含むことを特徴とする請求項
1に記載の方法。
【請求項9】
前記仮想オブジェクトの少なくとも一つのサンプリング点を決定するステップは、
前記仮想オブジェクトの中心点の前方の第1の距離にある点を、前記前部サンプリング点として決定するステップと、
前記仮想オブジェクトの中心点の後方の第2の距離にある点を、前記後部サンプリング点として決定するステップと、
前記仮想オブジェクトの中心点の左側の第3の距離にある点または前記仮想オブジェクトの中心点の右側の第4の距離にある点を、前記サイドサンプリング点として決定するステップと、
前記前部サンプリング点と、前記後部サンプリング点と、前記サイドサンプリング点とを、前記仮想オブジェクトの前記サンプリング点として決定するステップと、
を含むことを特徴とする請求項
8に記載の方法。
【請求項10】
前記法線方向に基づき、前記仮想環境における前記仮想オブジェクトの地面張り付き姿勢を決定するステップは、
地面座標系のx軸に対する前記法線方向の第1のヨー角に基づき、前記仮想環境における前記仮想オブジェクトのピッチ角を決定するステップと、
前記地面座標系のz軸に対する前記法線方向の第2のヨー角に基づき、前記仮想環境における前記仮想オブジェクトのロール角を決定するステップと、を含み、
前記地面座標系は、前記仮想環境が配置されている世界座標系である、
ことを特徴とする請求項
8に記載の方法。
【請求項11】
前記地面は、勾配のあるエリアと、曲面エリアと、陥凹エリアと、隆起エリアとのうちの少なくとも一つを含む、ことを特徴とする請求項1から
10のいずれか1項に記載の方法。
【請求項12】
仮想環境における仮想キャラクターの姿勢決定方法であって、
第1のユーザーインターフェイスを表示するステップであって、前記第1のユーザーインターフェイスが立位姿勢で前記仮想環境の地面にある仮想キャラクターを含むステップと、
姿勢切替コマンドを受信するステップであって、前記姿勢切替コマンドが、前記立位姿勢から地面張り付き姿勢に切り替えるように前記仮想キャラクターに指示するために使用されるステップと、
前記仮想キャラクターの中心点に基づき、前記仮想キャラクターの少なくとも一つのサンプリング点を決定するステップであって、前記サンプリング点が前記地面に対する衝突検出に使用される点であるステップと、
前記少なくとも一つのサンプリング点及び前記地面に基づき、前記地面に対する前記仮想キャラクターの法線方向を決定するステップであって、
前記サンプリング点から鉛直下方向で衝突検出を行い、前記仮想キャラクターが前記地面に衝突する際の衝突点を地面張り付き点として決定するステップと、
前記地面張り付き点に基づき、前記地面に対する前記仮想キャラクターの法線方向を決定するステップと、
を含むステップと、
前記地面に対する前記仮想キャラクターの
前記法線方向に基づき、前記仮想キャラクターの地面張り付き姿勢を決定するステップと、
第2のユーザーインターフェイスを表示するステップであって、前記第2のユーザーインターフェイスが、前記地面張り付き姿勢で前記仮想環境の前記地面にある仮想キャラクターを含むステップと、
を含むことを特徴とする方法。
【請求項13】
仮想環境における仮想キャラクターの姿勢決定方法であって、
第3のユーザーインターフェイスを表示するステップであって、前記第3のユーザーインターフェイスが、第1の地面張り付き姿勢で前記仮想環境の第1の地面位置にある仮想キャラクターを含むステップと、
移動コマンドを受信するステップであって、前記移動コマンドが、前記第1の地面位置から移動するように前記仮想キャラクターに指示するために使用されるステップと、
第2の地面位置に対する前記仮想キャラクターの法線方向に基づき、前記仮想キャラクターの第2の地面張り付き姿勢を決定するステップ
であって、
前記仮想キャラクターの中心点に基づき、前記仮想キャラクターの少なくとも一つのサンプリング点を決定するステップであって、前記サンプリング点が前記第2の地面に対する衝突検出に使用される点であるステップと、
前記少なくとも一つのサンプリング点及び前記第2の地面位置に基づき、前記第2の地面位置に対する前記仮想キャラクターの法線方向を決定するステップであって、
前記サンプリング点から鉛直下方向で衝突検出を行い、前記仮想キャラクターが前記第2の地面に衝突する際の衝突点を地面張り付き点として決定するステップと、
前記地面張り付き点に基づき、前記第2の地面に対する前記仮想キャラクターの法線方向を決定するステップと、
を含むステップと、
第4のユーザーインターフェイスを表示するステップであって、前記第4のユーザーインターフェイスが、前記第2の地面張り付き姿勢で前記仮想環境の第2の地面位置にある前記仮想キャラクターを含むステップと、
を含むことを特徴とする方法。
【請求項14】
仮想環境における仮想キャラクターの姿勢決定方法であって、
第1のユーザーインターフェイスを表示するステップであって、前記第1のユーザーインターフェイスが、立位姿勢で前記仮想環境の地面にある仮想キャラクターを含むステップと、
姿勢切替コマンドを受信するステップであって、前記姿勢切替コマンドが、前記立位姿勢から地面張り付き姿勢に切り替えるように前記仮想キャラクターに指示するために使用されるステップと、
前記仮想キャラクターの中心点に基づき、前記仮想キャラクターの上半身サンプリング点及び下半身サンプリング点を決定するステップと、
前記上半身サンプリング点から衝突検出した後に得られた第1の地面エリアにある点である第1の地面張り付き点と、前記下半身サンプリング点から衝突検出した後に得られ第2の地面エリアにある点である第2の地面張り付き点との間の接続線を決定するステップであって、前記地面は、前記第1の地面エリア及び第2の地面エリアを含むステップと、
前記接続線に垂直で、かつロール角が0である垂直線に基づき、前記地面に対する前記仮想キャラクターの法線方向を決定するステップと、
第2のユーザーインターフェイスを表示するステップであって、前記第2のユーザーインターフェイスが、前記地面張り付き姿勢で前記仮想環境の地面にある仮想キャラクターを含み、前記仮想キャラクターの頭部が前記第1の地面エリアで宙に浮き、前記仮想キャラクターの足部が前記第2の地面エリアで宙に浮き、前記仮想キャラクターの腰部が前記第1の地面エリアと前記第2の地面エリアの境目で地面に埋め込まれるステップと、
を含むことを特徴とする方法。
【請求項15】
仮想環境における仮想オブジェクトの姿勢決定装置であって、
前記仮想オブジェクトの少なくとも一つのサンプリング点を決定するためのサンプリング点決定モジュールであって、前記サンプリング点が地面に対する衝突検出に使用される点であるサンプリング点決定モジュールと、
前記少なくとも一つのサンプリング点及び前記仮想オブジェクトの位置する地面に基づき、前記地面に対する前記仮想オブジェクトの法線方向を決定するための法線決定モジュールと、
前記法線方向に基づき、前記仮想環境における前記仮想オブジェクトの地面張り付き姿勢を決定するための姿勢決定モジュールと、
を含
み、
前記法線決定モジュールは、
前記サンプリング点から鉛直下方向で衝突検出を行い、前記仮想オブジェクトが前記地面に衝突する際の衝突点を地面張り付き点として決定するための検出ユニットと、
前記地面張り付き点に基づき、前記地面に対する前記仮想オブジェクトの前記法線方向を決定するための法線決定ユニットと、
を含むことを特徴とする装置。
【請求項16】
前記サンプリング点は、前記仮想オブジェクトの中心点を含み、
前記法線決定ユニットは、前記地面張り付き点を始点として前記地面に垂直な第1の垂直線に基づき、前記地面に対する前記仮想オブジェクトの前記法線方向を決定するためにも使用される、
ことを特徴とする請求項
15に記載の装置。
【請求項17】
前記サンプリング点決定モジュールは、前記仮想オブジェクトの中心点を、前記仮想オブジェクトの前記サンプリング点として決定するためにも使用される、
ことを特徴とする請求項
16に記載の装置。
【請求項18】
前記サンプリング点決定モジュールは、
地面座標系のx軸に対する前記法線方向の第1のヨー角に基づき、前記仮想環境における前記仮想オブジェクトのピッチ角を決定するためのヨー角決定ユニットを含み、
前記ヨー角決定ユニットは、前記地面座標系のz軸に対する前記法線方向の第2のヨー角に基づき、前記仮想環境における前記仮想オブジェクトのロール角を決定するためにも使用され、
前記地面座標系は、前記仮想環境が配置されている世界座標系である、
ことを特徴とする請求項
17に記載の装置。
【請求項19】
前記サンプリング点は、前記仮想オブジェクトの前記地面張り付き姿勢での上半分の点を表すための前部サンプリング点と、前記仮想オブジェクトの前記地面張り付き姿勢での下半分の点を表すための後部サンプリング点とを含み、
前記法線決定ユニットは、前記前部サンプリング点から衝突検出した後に得られた点である第1の地面張り付き点と、前記後部サンプリング点から衝突検出した後に得られた点である第2の地面張り付き点との間の接続線を決定するためにも使用され、
前記法線決定ユニットは、前記接続線に垂直で、かつロール角が0である第2の垂直線に基づき、前記地面に対する前記仮想オブジェクトの法線方向を決定するためにも使用される、
ことを特徴とする請求項
15に記載の装置。
【請求項20】
前記サンプリング点決定モジュールは、前記仮想オブジェクトの中心点の前方の第1の距離にある点を、前記前部サンプリング点として決定するためにも使用され、
前記サンプリング点決定モジュールは、前記仮想オブジェクトの中心点の後方の第2の距離にある点を、前記後部サンプリング点として決定するためにも使用され、
前記サンプリング点決定モジュールは、前記前部サンプリング点及び前記後部サンプリング点を、前記仮想オブジェクトの前記サンプリング点として決定するためにも使用される、
ことを特徴とする請求項
19に記載の装置。
【請求項21】
前記姿勢決定モジュールは、地面座標系のx軸に対する前記法線方向の第1のヨー角に基づき、前記仮想環境における前記仮想オブジェクトのピッチ角を決定するためにも使用され、
前記地面座標系は、前記仮想環境が配置されている世界座標系である、
ことを特徴とする請求項
19に記載の装置。
【請求項22】
前記サンプリング点は、前記仮想オブジェクトの前記地面張り付き姿勢での上半分の点を表すための前部サンプリング点と、前記仮想オブジェクトの前記地面張り付き姿勢での下半分の点を表すための後部サンプリング点と、及び前記仮想オブジェクトの前記地面張り付き姿勢での左側または右側の点を表すためのサイドサンプリング点と、を含み、
前記法線決定ユニットは、前記前部サンプリング点から衝突検出した後に得られた点である第1の地面張り付き点と、前記後部サンプリング点から衝突検出した後に得られた点である第2の地面張り付き点と、前記サイドサンプリング点から衝突検出した後に得られた点である第3の地面張り付き点とが存在する平面を決定するためにも使用され、
前記法線決定ユニットは、前記平面に垂直で上向きの第3の垂直線に基づき、前記地面に対する前記仮想オブジェクトの前記法線方向を決定するためにも使用される、
ことを特徴とする請求項20に記載の装置。
【請求項23】
前記サンプリング点決定モジュールは、前記仮想オブジェクトの中心点の前方の第1の距離にある点を、前記前部サンプリング点として決定するためにも使用され、
前記サンプリング点決定モジュールは、前記仮想オブジェクトの中心点の後方の第2の距離にある点を、前記後部サンプリング点として決定するためにも使用され、
前記サンプリング点決定モジュールは、前記仮想オブジェクトの中心点の左側の第3の距離にある点または前記仮想オブジェクトの中心点の右側の第4の距離にある点を、前記サイドサンプリング点として決定するためにも使用され、
前記サンプリング点決定モジュールは、前記前部サンプリング点と、前記後部サンプリング点と、前記サイドサンプリング点とを、前記仮想オブジェクトの前記サンプリング点として決定するためにも使用される、
ことを特徴とする請求項
22に記載の装置。
【請求項24】
前記姿勢決定モジュールは、地面座標系のx軸に対する前記法線方向の第1のヨー角に基づき、前記仮想環境における前記仮想オブジェクトのピッチ角を決定するためにも使用され、
前記姿勢決定モジュールは、前記地面座標系のz軸に対する前記法線方向の第2のヨー角に基づき、前記仮想環境における前記仮想オブジェクトのロール角を決定するためにも使用され、
前記地面座標系は、前記仮想環境が配置されている世界座標系である、
ことを特徴とする請求項
22に記載の装置。
【請求項25】
前記地面は、勾配のあるエリアと、曲面エリアと、陥凹エリアと、隆起エリアとのうちの少なくとも一つを含む、
ことを特徴とする請求項
15から
24のいずれか1項に記載の装置。
【請求項26】
仮想環境における仮想キャラクターの姿勢決定装置であって、
第1のユーザーインターフェイスを表示するための第1の表示モジュールであって、前記第1のユーザーインターフェイスが、立位姿勢で前記仮想環境の地面にある仮想キャラクターを含む第1の表示モジュールと、 姿勢切替コマンドを受信するための第1の受信モジュールであって、前記姿勢切替コマンドが、前記立位姿勢から地面張り付き姿勢に切り替えるように前記仮想キャラクターに指示するために使用される第1の受信モジュールと、
前記地面に対する前記仮想キャラクターの法線方向に基づき、前記仮想キャラクターの地面張り付き姿勢を決定するための第1の決定モジュールと、を含み、
前記第1の表示モジュールは、第2のユーザーインターフェイスを表示するためにも使用され、前記第2のユーザーインターフェイスは、前記地面張り付き姿勢で前記仮想環境の地面にある仮想キャラクターを含
み、
前記第1の決定モジュールは、前記姿勢切替コマンドを受信した後、前記仮想キャラクターの中心点に基づき、前記仮想キャラクターの少なくとも一つのサンプリング点を決定するためにも使用され、前記サンプリング点は、前記地面に対する衝突検出に使用される点であり、
前記第1の決定モジュールは、前記サンプリング点から鉛直下方向で衝突検出を行い、前記仮想キャラクターが前記地面に衝突する際の衝突点を地面張り付き点として決定し、前記地面張り付き点に基づき、前記地面に対する前記仮想キャラクターの前記法線方向を決定することによって、前記少なくとも一つのサンプリング点及び前記地面に基づき、前記地面に対する前記仮想キャラクターの法線方向を決定するためにも使用される、
ことを特徴とする装置。
【請求項27】
仮想環境における仮想キャラクターの姿勢決定装置であって、
第3のユーザーインターフェイスを表示するための第2の表示モジュールであって、前記第3のユーザーインターフェイスが、第1の地面張り付き姿勢で前記仮想環境の第1の地面位置にある仮想キャラクターを含む第2の表示モジュールと、
移動コマンドを受信するための第2の受信モジュールであって、前記移動コマンドが、前記第1の地面位置から移動するように前記仮想キャラクターに指示するために使用される第2の受信モジュールと、
第2の地面位置に対する前記仮想キャラクターの法線方向に基づき、前記仮想キャラクターの第2の地面張り付き姿勢を決定するための第2の決定モジュールと、を含み、
前記第2の表示モジュールは、第4のユーザーインターフェイスを表示するためにも使用され、前記第4のユーザーインターフェイスは、前記第2の地面張り付き姿勢で前記仮想環境の第2の地面位置にある前記仮想キャラクターを含
み、
前記第2の決定モジュールは、前記移動コマンドを受信した後、前記仮想キャラクターの中心点に基づき、前記仮想キャラクターの少なくとも一つのサンプリング点を決定するためにも使用され、前記サンプリング点は、地面に対する衝突検出に使用される点であり、
前記第2の決定モジュールは、前記サンプリング点から鉛直下方向で衝突検出を行い、前記仮想キャラクターが前記第2の地面に衝突する際の衝突点を地面張り付き点として決定し、前記第2の地面張り付き点に基づき、前記第2の地面に対する前記仮想キャラクターの前記法線方向を決定することによって、前記少なくとも一つのサンプリング点及び前記第2の地面位置に基づき、前記第2の地面位置に対する前記仮想キャラクターの法線方向を決定するためにも使用される、
ことを特徴とする装置。
【請求項28】
仮想環境における仮想キャラクターの姿勢決定装置であって、
第1のユーザーインターフェイスを表示するための第3の表示モジュールであって、前記第3の表示モジュールが、立位姿勢で前記仮想環境の地面にある仮想キャラクターを含む第3の表示モジュールと、
姿勢切替コマンドを受信するための第3の受信モジュールであって、前記姿勢切替コマンドが、前記立位姿勢から地面張り付き姿勢に切り替えるように前記仮想キャラクターに指示するために使用される第3の受信モジュールと、
前記仮想キャラクターの中心点に基づき、前記仮想キャラクターの上半身サンプリング点及び下半身サンプリング点を決定するための第3の決定モジュールと、を含み、
前記第3の表示モジュールは、第2のユーザーインターフェイスを表示するためにも使用され、前記第2のユーザーインターフェイスは、前記地面張り付き姿勢で前記仮想環境の地面にある仮想キャラクターを含み、前記地面は、角度をなす第1の地面エリア及び第2の地面エリアを含み、前記仮想キャラクターの頭部が前記第1の地面エリアで宙に浮き、前記仮想キャラクターの足部が前記第2の地面エリアで宙に浮き、前記仮想キャラクターの腰部が前記第1の地面エリアと前記第2の地面エリアの境目で地面に埋め込まれ、
前記第3の決定モジュールは、前記上半身サンプリング点から衝突検出した後に得られた前記第1の地面エリアにある点である第1の地面張り付き点と、前記下半身サンプリング点から衝突検出した後に得られた前記第2の地面エリアにある点である第2の地面張り付き点との間の接続線を決定するためにも使用され、
前記第3の決定モジュールは、前記接続線に垂直で、かつロール角が0である垂直線に基づき、前記地面に対する前記仮想キャラクターの法線方向を決定するためにも使用される、
ことを特徴とする装置。
【請求項29】
メモリとプロセッサとを含む電子機器であって、
前記メモリには、少なくとも1つのコマンド、少なくとも1つのプログラム、コードセットまたはコマンドセットが記憶され、
前記少なくとも1つのコマンド、前記少なくとも1つのプログラム、前記コードセットまたはコマンドセットは、請求項1から
14のいずれか1項に記載の仮想環境における仮想オブジェクトの姿勢決定方法を実現するように、前記プロセッサによってロードされて実行される、
ことを特徴とする電子機器。
【請求項30】
少なくとも1つのコマンド、少なくとも1つのプログラム、コードセットまたはコマンドセットが記憶されるコンピュータ可読記憶媒体であって、
前記少なくとも1つのコマンド、前記少なくとも1つのプログラム、前記コードセットまたはコマンドセットは、請求項1から
14のいずれか1項に記載の仮想環境における仮想オブジェクトの姿勢決定方法を実現するように、プロセッサによってロードされて実行される、
ことを特徴とする記憶媒体。
【請求項31】
請求項1から
14のいずれか1項に記載の仮想環境における仮想オブジェクトの姿勢決定方法を実現するように、プロセッサによってロードされて実行される、ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2018年02月09日に中国特許庁に提出された、出願番号が201810136822.0であって、発明の名称が「三次元仮想環境における仮想オブジェクトの姿勢決定方法、装置及媒体」である中国特許出願に基づく優先権を主張するものであり、その全内容を本出願に参照により援用する。
【0002】
本出願の実施例は、コンピュータグラフィックス処理分野に関し、特に、仮想環境における仮想オブジェクトの姿勢決定方法、装置及び可読媒体に関する。
【背景技術】
【0003】
スマートフォン、タブレットコンピュータなどの電子機器には、例えば、仮想現実アプリケーションプログラム、3次元地図プログラム、軍事シミュレーションプログラム、一人称シューティングゲーム(First-person shooting game、FPS)、マルチプレイヤーオンラインバトルアリーナゲーム(Multiplayer Online Battle Arena Games、MOBA)などの、3次元仮想環境を有する多くのアプリケーションプログラムがある。
【0004】
上記アプリケーションプログラムでは、仮想キャラクター、仮想オブジェクト、地面などの表示要素は、3次元立体モデルを使用して3次元効果を実現する。仮想キャラクターは、3次元仮想環境で、歩行、起居、立ち、横になる及び匍匐などの姿勢にあることができる。ユーザーが仮想キャラクターを匍匐姿勢で地面に打ち伏したり前進させたりする必要がある場合、通常、ユーザーがアプリケーションプログラムのユーザーインターフェイスで匍匐コマンドをトリガーした後、仮想キャラクターが3次元仮想環境で水平方向に打ち伏す。
【0005】
例えば、平坦でない地面、障害物などの、地面の状態がより複雑である場合、水平方向に打ち伏す仮想キャラクターの身体エリアの一部は、地面に沈んだり空中に傾いたりし、現実の物理法則に適合せず、3次元仮想環境の信頼性を低下させる。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本出願の実施例は、仮想キャラクターが水平方向に打ち伏す場合、現実の物理法則に適合せず、仮想環境の信頼性を低下させるという問題を解決または緩和できる仮想環境における仮想オブジェクトの姿勢決定方法、装置及び可読媒体を提供する。技術的解決策は次のようになる。
【課題を解決するための手段】
【0007】
一態様で、本出願の実施例は、仮想環境における仮想オブジェクトの姿勢決定方法を提供し、この方法は、
仮想オブジェクトの少なくとも一つのサンプリング点を決定するステップであって、サンプリング点が地面に対する衝突検出に使用される点であるステップと、
少なくとも一つのサンプリング点及び仮想オブジェクトの位置する地面に基づき、地面に対する仮想オブジェクトの法線方向を決定するステップと、
法線方向に基づき、仮想環境における仮想オブジェクトの地面張り付き姿勢を決定するステップと、
を含む。
【0008】
別の態様で、仮想環境における仮想キャラクターの姿勢決定方法を提供し、この方法は、
立位姿勢で仮想環境の地面にある仮想キャラクターを含む第1のユーザーインターフェイスを表示するステップと、
立位姿勢から地面張り付き姿勢に切り替えるように仮想キャラクターに指示するための姿勢切替コマンドを受信するステップと、
地面に対する仮想キャラクターの法線方向に基づき、仮想キャラクターの地面張り付き姿勢を決定するステップと、
地面張り付き姿勢で仮想環境の地面にある仮想キャラクターを含む第2のユーザーインターフェイスを表示するステップと、
を含む。
【0009】
別の態様で、仮想環境における仮想キャラクターの姿勢決定方法を提供し、この方法は、
第1の地面張り付き姿勢で仮想環境の第1の地面位置にある仮想キャラクターを含む第3のユーザーインターフェイスを表示するステップと、
第1の地面位置から移動するように仮想キャラクターに指示するための移動コマンドを受信するステップと、
第2の地面位置に対する仮想キャラクターの法線方向に基づき、仮想キャラクターの第2の地面張り付き姿勢を決定するステップと、
第2の地面張り付き姿勢で仮想環境の第2の地面位置にある仮想キャラクターを含む第4のユーザーインターフェイスを表示するステップと、
を含む。
【0010】
別の態様で、仮想環境における仮想キャラクターの姿勢決定方法を提供し、この方法は、
立位姿勢で仮想環境の地面にある仮想キャラクターを含む第1のユーザーインターフェイスを表示するステップと、
立位姿勢から地面張り付き姿勢に切り替えるように仮想キャラクターに指示するための姿勢切替コマンドを受信するステップと、
地面張り付き姿勢で仮想環境の地面にある仮想キャラクターを含む第2のユーザーインターフェイスを表示し、地面は、角度をなす第1の地面エリア及び第2の地面エリアを含み、仮想キャラクターの頭部が第1の地面エリアで宙に浮き、仮想キャラクターの足部が第2の地面エリアで宙に浮き、仮想キャラクターの腰部が第1の地面エリアと第2の地面エリアの境目で地面に埋め込まれるステップと、
を含む。
【0011】
別の態様で、仮想環境における仮想オブジェクトの姿勢決定装置を提供し、この装置は、
仮想オブジェクトの少なくとも一つのサンプリング点を決定するためのサンプリング点決定モジュールであって、サンプリング点が地面に対する衝突検出に使用される点であるサンプリング点決定モジュールと、
少なくとも一つのサンプリング点及び仮想オブジェクトの位置する地面に基づき、地面に対する仮想オブジェクトの法線方向を決定するための法線決定モジュールと、
法線方向に基づき、仮想環境での仮想オブジェクトの地面張り付き姿勢を決定するための姿勢決定モジュールと、
を含む。
【0012】
別の態様で、仮想環境における仮想キャラクターの姿勢決定装置を提供し、この装置は、
立位姿勢で仮想環境の地面にある仮想キャラクターを含む第1のユーザーインターフェイスを表示するための第1の表示モジュールと、
立位姿勢から地面張り付き姿勢に切り替えるように仮想キャラクターに指示するための姿勢切替コマンドを受信するための第1の受信モジュールと、
地面に対する仮想キャラクターの法線方向に基づき、仮想キャラクターの地面張り付き姿勢を決定するための第1の決定モジュールと、を含み、
第1の表示モジュールは、地面張り付き姿勢で仮想環境の地面にある仮想キャラクターを含む第2のユーザーインターフェイスを表示するためにも使用される。
【0013】
別の態様で、仮想環境における仮想キャラクターの姿勢決定装置を提供し、この装置は、
第1の地面張り付き姿勢で仮想環境の第1の地面位置にある仮想キャラクターを含む第3のユーザーインターフェイスを表示するための第2の表示モジュールと、
第1の地面位置から移動するように仮想キャラクターに指示するための移動コマンドを受信するための第2の受信モジュールと、
第2の地面位置に対する仮想キャラクターの法線方向に基づき、仮想キャラクターの第2の地面張り付き姿勢を決定するための第2の決定モジュールと、を含み、
第2の表示モジュールは、第2の地面張り付き姿勢で仮想環境の第2の地面位置にある仮想キャラクターを含む第4のユーザーインターフェイスを表示するためにも使用される。
【0014】
別の態様で、さらに、仮想環境における仮想キャラクターの姿勢決定装置を提供し、この装置は、
立位姿勢で仮想環境の地面にある仮想キャラクターを含む第1のユーザーインターフェイスを表示するための第3の表示モジュールと、
立位姿勢から地面張り付き姿勢に切り替えるように仮想キャラクターに指示するための姿勢切替コマンドを受信するための第3の受信モジュールと、を含み、
第3の表示モジュールは、地面張り付き姿勢で仮想環境の地面にある仮想キャラクターを含む第2のユーザーインターフェイスを表示するためにも使用され、地面は、角度をなす第1の地面エリア及び第2の地面エリアを含み、仮想キャラクターの頭部が第1の地面エリアで宙に浮き、仮想キャラクターの足部が第2の地面エリアで宙に浮き、仮想キャラクターの腰部が第1の地面エリアと第2の地面エリアの境目で地面に埋め込まれる。
【0015】
別の態様で、メモリとプロセッサとを含む電子機器をさらに提供し、メモリには、少なくとも1つのコマンド、少なくとも1つのプログラム、コードセットまたはコマンドセットが記憶され、少なくとも1つのコマンド、少なくとも1つのプログラム、コードセットまたはコマンドセットは、上記の本出願の第1の態様及びその任意の実施例のいずれか一つに記載される仮想環境における仮想オブジェクトの姿勢決定方法を実現するように、プロセッサによってロードされて実行される。
【0016】
別の態様で、コンピュータ可読記憶媒体をさらに提供し、このコンピュータ可読記憶媒体には、上記の本出願の第1の態様及びその任意の実施例のいずれか一つに記載される仮想環境における仮想オブジェクトの姿勢決定方法を実現するようにプロセッサによってロードされて実行される、少なくとも1つのコマンド、少なくとも1つのプログラム、コードセットまたはコマンドセットが記憶される。
【0017】
別の態様で、コンピュータプログラム製品を提供し、コンピュータプログラム製品が電子機器で実行されるときに、電子機器は、上記の本出願の第1の態様及びその任意の実施例のいずれか一つに記載される仮想環境における仮想オブジェクトの姿勢決定方法を実行する。
【発明の効果】
【0018】
本出願の実施例で提供される技術的解決策によってもたらされる有益な効果には、少なくとも以下が含まれる。
サンプリング点に基づき仮想オブジェクトが位置する地面の法線方向を決定し、この法線方向に基づき仮想環境における仮想オブジェクトの地面張り付き姿勢を取得することにより、地面張り付き姿勢は地面の法線方向に基づき決定されるものであるので、この法線方向により、この仮想オブジェクトが位置する地面の近似平面をシミュレートでき、仮想オブジェクトはこの近似平面に平行な姿勢で地面に張り付きすることができる。それによって、仮想オブジェクトの地面張り付き状態を現実の物理法則により適合させることを達成し、よりリアルな表示効果を提供する。
【図面の簡単な説明】
【0019】
【
図1】本出願の一つの例示的な実施例によって提供される地面座標軸の概略図である。
【
図2】本出願の一つの例示的な実施例によって提供されるオブジェクト座標軸の概略図である。
【
図3】本出願の一つの例示的な実施例によって提供される実施環境の概略図である。
【
図4】本出願の他の例示的な実施例によって提供される実施環境の概略図である。
【
図5】本出願の一つの例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法のフローチャートである。
【
図6】本出願の他の例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法のフローチャートである。
【
図7】本出願の一つの例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法の原理図である。
【
図8】本出願の他の例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法の原理図である。
【
図9】本出願の他の例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法の原理図である。
【
図10】本出願の他の例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法のフローチャートである。
【
図11】本出願の一つの例示的な実施例によって提供されるユーザーインターフェイスの概略図である。
【
図12】本出願の他の例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法のフローチャートである。
【
図13】本出願の他の例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法の原理図である。
【
図14】本出願の他の例示的な実施例によって提供されるユーザーインターフェイスの概略図である。
【
図15】本出願の他の例示的な実施例によって提供されるユーザーインターフェイスの概略図である。
【
図16】本出願の他の例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法のフローチャートである。
【
図17】本出願の他の例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法の原理図である。
【
図18】本出願の他の例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法のフローチャートである。
【
図19】本出願の他の例示的な実施例によって提供されるユーザーインターフェイスの概略図である。
【
図20】本出願の他の例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法のフローチャートである。
【
図21】本出願の他の例示的な実施例によって提供されるユーザーインターフェイスの概略図である。
【
図22】本出願の一つの例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定装置の構造ブロック図である。
【
図23】本出願の他の例示的な実施例によって提供される仮想環境における仮想キャラクターの姿勢決定装置の構造ブロック図である。
【
図24】本出願の他の例示的な実施例によって提供される仮想環境における仮想キャラクターの姿勢決定装置の構造ブロック図である。
【
図25】本出願の他の例示的な実施例によって提供される仮想環境における仮想キャラクターの姿勢決定装置の構造ブロック図である。
【
図26】本出願の他の例示的な実施例によって提供される仮想環境における仮想キャラクターの姿勢決定装置の構造ブロック図である。
【
図27】本出願の他の例示的な実施例によって提供される仮想環境における仮想キャラクターの姿勢決定装置の構造ブロック図である。
【
図28】本出願の一つの例示的な実施例によって提供される電子機器の構造ブロック図である。
【発明を実施するための形態】
【0020】
本出願の目的、技術的解決策及び利点をより明確にするために、以下は、添付の図面を参照して本出願の実施形態をさらに詳細に説明する。
【0021】
最初に、本出願の実施例に含まれる用語を説明する。
【0022】
仮想環境:アプリケーションプログラムが電子機器で実行されているときに表示(または提供)される仮想環境である。この仮想環境は、現実世界のシミュレーション環境であってもよく、半シミュレーション半架空の3次元環境であってもよく、純粋に架空の3次元環境であってもよい。仮想環境は、2次元仮想環境、2.5次元仮想環境及び3次元仮想環境のいずれでもよい。以下の実施例は、仮想環境を3次元仮想環境として説明するが、これは限定されない。任意選択で、この仮想環境は、少なくとも2人の仮想役柄間の仮想環境戦闘にも使用される。任意選択で、この仮想環境は、仮想銃器を使用した少なくとも2人の仮想役柄間の戦闘にも使用される。任意選択で、この仮想環境は、仮想環境での時間経過と共に減少し続ける目標エリア範囲内で仮想銃器を使用した少なくとも2人の仮想役柄間の戦闘にも使用される。本出願の実施例では、例えば、この仮想環境を3次元仮想環境として説明する。
【0023】
仮想オブジェクト:仮想環境における可動オブジェクトを指す。この可動オブジェクトは、例えば、仮想環境に表示されたキャラクター、動物、植物、オイルバレル、壁、石などの仮想キャラクター、仮想動物、アニメキャラクターなどであってもよい。任意選択で、仮想オブジェクトは、アニメーション化された骨テクノロジーに基づいて作成された3次元モデルである。各仮想オブジェクトは、仮想環境に独自の形状と体積を持ち、仮想環境内のスペースの一部を占めす。一般に、一つの仮想オブジェクトは一つの中心点を含む。この仮想オブジェクトが規則的な物体である場合、この中心点はこの仮想オブジェクトの幾何学的中心である。この仮想オブジェクトが不規則な物体である場合、この中心点はこの仮想オブジェクトの運動状態に応じて事前設定されるものである。
【0024】
サンプリング点:地面に対する仮想オブジェクトの衝突検出に使用される点である。このサンプリング点は、1つ、2つ、3つ、またはそれ以上であってもよい。そして、このサンプリング点の選択方式は、サンプリング点の数に基づき変更することができる。例えば、サンプリング点が1つの場合、仮想オブジェクトの中心点をサンプリング点として決定してもよい。サンプリング点が2つの場合、仮想オブジェクトの中心点に基づき、前部サンプリング点及び後部サンプリング点をサンプリング点として選択してもよい。サンプリング点が3つの場合、仮想オブジェクトの中心点に基づき、前部サンプリング点、後部サンプリング点及びサイドサンプリング点をサンプリング点として選択してもよい。なお、中心点は仮想オブジェクトの中心点であり、前部サンプリング点は、中心点から仮想オブジェクトの前方までの第1の距離にある点であり、後部サンプリング点は、中心点から仮想オブジェクトの後方までの第2の距離にある点であり、サイドサンプリング点は、中心点の左側の第3の距離にある点または右側の第4の距離にある点である。サンプリング点は、仮想オブジェクトの立体モデルの内部にあってもよく、仮想オブジェクトの立体モデルの外部にあってもよい。本出願ではこれを限定しない。
【0025】
地面張り付き姿勢は、腹臥位姿勢、仰臥位姿勢、匍匐姿勢のうちの少なくとも1つを含むが、これらに限定されない。任意選択で、この地面張り付き姿勢は、上記の仮想環境で仮想オブジェクトが表現する一つの姿勢である。任意選択で、この地面張り付き姿勢には、仮想オブジェクトの立体モデルが地面に張り付くときの地面座標系に対するピッチ角(英語:pitch)、ヨー角(英語:yaw)及びロール角(英語:roll)の少なくとも一つを含む。
【0026】
地面張り付き点:仮想オブジェクトが仮想環境で地面張り付き姿勢にあるときに、地面との衝突検出を行って得られた点である。任意選択で、この地面張り付き点は、上記のサンプリング点により地面に対して衝突検出を行って、地面で得られた少なくとも一つの点である。
【0027】
衝突検出:仮想環境において、仮想キャラクターと仮想キャラクターの衝突、仮想キャラクターと壁の衝突、仮想キャラクターと地面の衝突などの、異なる仮想オブジェクトの間の衝突を検出するための技術である。任意選択で、この仮想オブジェクトに基づき一つのサンプリング点を決定し、このサンプリング点によって他の仮想オブジェクトとの衝突検出を行うことができる。
【0028】
地面座標系:仮想環境における仮想オブジェクトの座標、方向ベクトル、モーションベクトルなどのパラメータを測定するために使用される。一般に、この地面座標系は、
図1に示すように、X軸、Y軸及びZ軸の3つの座標軸を含む。任意選択で、X軸とZ軸が配置されている平面は、水平面、つまり基準地面であり、Y軸の上半分の軸は地面に対する高さを表す。なお、仮想環境における仮想オブジェクトの姿勢パラメータは座標(X,Y,Z)を含み、ただし、XとZは、地面に対する仮想オブジェクトの座標を表し、Yは、地面に対する仮想オブジェクトの高さを表す。
【0029】
オブジェクト座標系:仮想オブジェクトの中心点を原点として作成された座標系である。このオブジェクト座標系は、地面座標系と組み合わせて、仮想環境に対する仮想オブジェクトの位置、角度、距離などのパラメータを測定するために使用される。一般に、このオブジェクト座標系は、
図2に示すように、x軸、y軸及びz軸の3つの座標軸を含む。任意選択で、例えば、仮想オブジェクトを仮想キャラクターとして説明し、x軸は、原点から体の左側を指す座標軸であり、z軸は、原点から頭頂部を指す座標軸であり、Y軸は、原点から背中に垂直で上向きの座標軸である。なお、x軸、y軸及びz軸は、互いに垂直である。任意選択で、仮想キャラクターが地面張り付き姿勢にあり、背中が上を向いている場合、y軸方向は、仮想キャラクターの地面上の地面張り付き点に応じた法線方向である。
【0030】
地図座標系とオブジェクト座標系を組み合わせると、ピッチ角、ヨー角及びロール角であるオイラー角とも呼ばれる仮想オブジェクトの3つの回転角を取得ことができる。
ピッチ角:オブジェクト座標系のz軸と地図座標系の水平面の間の角度を指す。オブジェクト座標系の正のz軸の向きが地図座標系の原点の水平面の上にある場合、ピッチ角は正である。オブジェクト座標系の正のz軸の向きが地図座標系の原点の水平面の下にある場合、ピッチ角は負である。
ヨー角:オブジェクト座標系のz軸の地面座標系における水平面での投影と、地面座標系のX軸の間の角度を指す。
ロール角:オブジェクト座標系のy軸と、地面座標系のX軸を通過する垂直平面、つまりXOY平面の間の角度を指す。
【0031】
本出願に係る電子機器は、携帯電話、タブレットコンピュータ、電子書籍リーダー、MP3(Moving Picture Experts Group Audio Layer III、動態イメージエキスパート圧縮標準オーディオレイヤー3)プレーヤー、MP4(Moving Picture Experts Group Audio Layer IV、動態イメージエキスパート圧縮標準オーディオレイヤー4)プレーヤー、ラップトップ携帯型コンピュータ、及び卓上型コンピュータなどであってもよい。この電子機器には、仮想環境をサポートするアプリケーションプログラムがインストールされ実行される。
【0032】
図3に、本出願の一つの例示的な実施例によって提供される電子機器の構造ブロック図を示す。この電子機器300は、オペレーティングシステム320及びアプリケーションプログラム322を含む。
【0033】
オペレーティングシステム320は、アプリケーションプログラム322にコンピュータハードウェアへの安全なアクセスを提供する基本的なソフトウェアである。
【0034】
アプリケーションプログラム322は、仮想環境をサポートするアプリケーションプログラムである。任意選択で、アプリケーションプログラム322は、3次元仮想環境をサポートするアプリケーションプログラムである。このアプリケーションプログラム322は、仮想現実アプリケーションプログラム、地図プログラム、軍事シミュレーションプログラム、三人称シューティングゲーム(Third-Personal Shooting Game、TPS)、一人称シューティングゲーム(First-person shooting game、FPS)、MOBAゲーム、マルチプレイヤーシューターサバイバルゲームのいずれか一つであってもよい。このアプリケーションプログラム322は、シングルユーザーライセンスの3Dゲームプログラムような、シングルユーザーライセンスのアプリケーションプログラムであってもよい。
【0035】
図4に、本出願の一つの例示的な実施例によって提供されるコンピュータシステムの構造ブロック図を示す。このコンピュータシステム400は、第1のデバイス420、サーバ440、及び第2のデバイス460を含む。
【0036】
第1のデバイス420には、仮想環境をサポートするアプリケーションプログラムがインストールされ実行される。このアプリケーションプログラムは、仮想現実アプリケーションプログラム、3次元地図プログラム、軍事シミュレーションプログラム、TPSゲーム、FPSゲーム、MOBAゲーム、マルチプレイヤーシューターサバイバルゲームのいずれか一つであってもよい。第1のデバイス420は、第1のユーザによって使用されるデバイスである。第1のユーザは、第1のデバイス420を使用して、仮想環境にある第1の仮想オブジェクトを制御して、活動を実行する。この活動は、体の姿勢の調整、爬行、行歩、走り、サイクリング、跳躍、運転、ピック、射撃、攻撃、投擲の少なくとも1つを含むが、これらに限定されない。例示的に、第1の仮想オブジェクトは、シミュレーションキャラクター役柄またはアニメキャラクター役柄のような、第1の仮想キャラクターである。
【0037】
第1のデバイス420は、無線ネットワークまたは有線ネットワークを介して、サーバ440に接続される。
【0038】
サーバ440は、一つのサーバ、複数のサーバ、クラウドコンピューティングプラットフォーム、及び仮想化センターの少なくとも一つを含む。サーバ440は、3次元仮想環境をサポートするアプリケーションプログラムにバックグラウンドサービスを提供するために使用される。任意選択で、サーバ440は、主な算出作業を担当し、第1のデバイス420と第2のデバイス460は、副次的算出作業を担当する。または、サーバ440は、副次的算出作業を担当し、第1のデバイス420と第2のデバイス460は、主な算出作業を担当する。または、サーバ440、第1のデバイス420、及び第2のデバイス460の3つの間は、分散コンピューティングアーキテクチャを採用して協調コンピューティングを実行する。
【0039】
第2のデバイス460には、仮想環境をサポートするアプリケーションプログラムがインストールされ実行されている。このアプリケーションプログラムは、仮想現実アプリケーションプログラム、3次元地図プログラム、軍事シミュレーションプログラム、FPSゲーム、MOBAゲーム、マルチプレイヤーシューターサバイバルゲームのいずれか一つであってもよい。第2のデバイス460は、第2のユーザによって使用されるデバイスである。第2のユーザは、第2のデバイス460を使用して、仮想環境にある第2の仮想オブジェクトを制御して、活動を実行する。この活動は、体の姿勢の調整、爬行、行歩、走り、サイクリング、跳躍、運転、ピック、射撃、攻撃、投擲の少なくとも1つを含むが、これらに限定されない。例示的に、第2の仮想オブジェクトは、シミュレーションキャラクター役柄またはアニメキャラクター役柄のような、第2の仮想キャラクターである。
【0040】
任意選択で、第1の仮想キャラクターと第2の仮想キャラクターは、同じ仮想環境にいる。任意選択で、第1の仮想キャラクターと第2の仮想キャラクターは、同じチーム、同じ組織に属している、友達関係を持っている、または一時的な通信権を持っている場合がある。任意選択で、第1の仮想キャラクターと第2の仮想キャラクターは、異なるチーム、異なる組織、または2つの敵対的なグループに属している場合がある。
【0041】
任意選択で、第1のデバイス420及び第2のデバイス460にインストールされたアプリケーションプログラムは同じであるか、または2つのデバイスにインストールされたアプリケーションプログラムは、異なる制御システムプラットフォーム上の同じタイプのアプリケーションプログラムである。第1のデバイス420は、複数のデバイスの1つを指し、第2のデバイス460は複数のデバイスの1つを指すことができ、この実施例では、第1のデバイス420及び第2のデバイス460のみを例として説明する。第1のデバイス420と第2のデバイス460のデバイスタイプは、同じかまたは異なる。このデバイスタイプには、ゲームホスト、卓上型コンピュータ、スマートフォン、タブレットコンピュータ、電子書籍リーダー、MP3プレーヤー、MP4プレーヤー、及びラップトップ携帯型コンピュータの少なくとも1つを含む。以下の実施例は、例えばデバイスを卓上型コンピュータとして説明する。
【0042】
当業者は、上記のデバイスの数が多かれ少なかれあり得ることを知っている。例えば、上記デバイスは、一つだけでもよいし、上記のデバイスは数十または数百、それ以上でもよい。本出願の実施例では、デバイスの数及びデバイスタイプを限定しない。
【0043】
図5は、本出願一つの例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法のフローチャートである。この実施例では、この仮想オブジェクトの姿勢決定方法を電子機器に適用することを例として説明する。この仮想オブジェクトの姿勢決定方法は、次のステップを含む。
【0044】
ステップ501:仮想オブジェクトの少なくとも一つのサンプリング点を決定する。
【0045】
任意選択で、このサンプリング点は、地面に対する仮想オブジェクトの衝突検出に使用される点である。
【0046】
任意選択で、この仮想オブジェクトの少なくとも一つのサンプリング点は、仮想オブジェクトの中心点に基づき決定されてもよく、事前設定されてもよい。
【0047】
なお、仮想オブジェクトの中心点は、事前設定されてもよい。任意選択で、この仮想オブジェクトが規則的な物体である場合、この中心点は、正方体の幾何学的中心、球体の幾何学的中心、直方体の幾何学的中心などのような、この仮想オブジェクトの幾何学的中心であってもよい。この仮想オブジェクトが不規則的な物体である場合、この中心点は、この仮想オブジェクトの運動状態に応じて事前設定される中心点であってもよい。仮想オブジェクトが仮想キャラクターであることを例として説明し、仮想キャラクターが立位姿勢にあるとき、この仮想キャラクターの中心点は腹部の事前設定点であり、仮想キャラクターがスクワット姿勢にあるとき、この仮想キャラクターの中心点は、胸部の事前設定点である。
【0048】
任意選択で、このサンプリング点の数は、1つ、2つまたは3つであってもよく、本出願の実施例では、これを限定しない。
【0049】
ステップ502:少なくとも一つのサンプリング点及び仮想オブジェクトの位置する地面に基づき、地面に対する仮想オブジェクトの法線方向を決定する。
【0050】
任意選択で、電子機器は、少なくとも一つのサンプリング点及び仮想オブジェクトの位置する地面に基づき、この地面に対する仮想オブジェクトの法線方向を決定することができ、この法線方向は上記地面に垂直な方向である。
【0051】
任意選択で、この地面は、非水平面である。この非水平面は、勾配のあるエリアと、曲面エリアと、陥凹エリアと、隆起エリアとのうちの少なくとも一つを含む。地面が非水平面である場合、この法線方向は、非水平面を一つの近似平面と見なすときに、この近似平面に対する仮想オブジェクトの垂直方向を示すために使用される。
【0052】
任意選択で、上記法線方向の定義は数学的原理で定義されており、近似平面は必ずしも実際に算出する必要がない。本出願では、法線方向は、サンプリング点に基づき直接に算出でき、この近似平面及び/又は法線方向の決定方法は、本出願に限定されない。
【0053】
ステップ503:法線方向に基づき、仮想環境における仮想オブジェクトの地面張り付き姿勢を決定する。
【0054】
任意選択で、電子機器は、仮想オブジェクトを法線方向に応じて回転させ、仮想オブジェクトが地面に張り付くときに非水平面に対応する近似平面に平行になるようにして、仮想環境における現実の物理法則により適合するこの仮想オブジェクトの地面張り付き姿勢を取得する。
【0055】
以上のように、この実施例で提供される仮想環境における仮想オブジェクトの姿勢決定方法は、サンプリング点に基づき仮想オブジェクトが位置する地面の法線方向を決定し、この法線方向に基づき仮想環境における仮想オブジェクトの地面張り付き姿勢を取得することにより、地面張り付き姿勢は地面の法線方向に基づき決定されるものであるので、この法線方向により、この仮想オブジェクトが位置する地面の近似平面をシミュレートでき、仮想オブジェクトはこの近似平面に平行な方向で地面に張り付くことができ、それによって、仮想オブジェクトの地面張り付き状態を現実の物理法則により適合させることを達せし、より現実的な表示効果を提供する。
【0056】
別のオプションの実施形態では、電子機器は、サンプリング点に応じて地面に対して衝突検出を行って地面張り付き点を取得した後、地面張り付き点に基づき地面に対する仮想オブジェクトの法線方向を決定する必要がある。
図6は、本出願の他の例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法フローチャートである。この仮想オブジェクトの姿勢決定方法を電子機器に適用することを例として説明する。
図6に示すように、この姿勢決定方法は、次のステップを含む。
【0057】
ステップ601:仮想オブジェクトの少なくとも一つのサンプリング点を決定する。
【0058】
任意選択で、このサンプリング点は、地面に対する衝突検出に使用される点である。
【0059】
任意選択で、この仮想オブジェクトの少なくとも一つのサンプリング点は、仮想オブジェクトの中心点に基づき決定されてもよく、事前設定されてもよい。
【0060】
ステップ602:サンプリング点から鉛直下方向で衝突検出を行い、仮想オブジェクトが地面に衝突する際の衝突点を地面張り付き点として決定する。
【0061】
仮想オブジェクトと地面はそれぞれの立体モデルを有する。衝突検出は、仮想オブジェクトの立体モデルと地面の立体モデルとが地面張り付き状態にあるときの衝突位置を決定するために使用される。
【0062】
例示的に、サンプリング点が一つの点であることを例として説明する。
図1~
図7を参照して、この鉛直下方向は、
図1における地面座標軸のY軸の逆方向であり、サンプリング点は、
図7におけるサンプリング点71である。このサンプリング点71からY軸の逆方向に衝突検出を行って、仮想オブジェクトと地面との衝突点を地面張り付き点72として取得し、この地面張り付き点72は傾斜面73上の点である。
【0063】
ステップ603:地面張り付き点に基づき、地面に対する仮想オブジェクトの法線方向を決定する。
【0064】
任意選択で、地面張り付き点が1つの点の場合、この法線方向は、地面張り付き点を始点として地面(または弓形地面の接平面)に垂直な法線方向である。地面張り付き点が2つの点の場合、この法線方向は、当該2つの点の接続線に垂直な方向である。地面張り付き点が3つの点の場合、この法線方向は、当該3つの点によって構成される平面に垂直な方向である。
【0065】
例示的に、この地面張り付き点が一つの点であることを例として説明する。
図7及び
図8を参照して、
図8では、傾斜面73は断面の形で表示されており、地面張り付き点72から傾斜面73に垂直な法線74を引き、この法線74の方向は地面張り付き点72に基づき決定される法線方向である。
【0066】
任意選択で、地面が弓形地面である場合、法線方向は、地面張り付き点を始点として地面張り付き点の位置する接平面に垂直な方向であり、この接平面は、地面張り付き点のある地面に接する。
図9を参照して、円弧面95は、地面の断面であり、この円弧面95には一つの地面張り付き点96があり、この地面張り付き点96で円弧面95に接する接平面97を決定し、地面張り付き点96から接平面97に垂直な法線98を引き、この法線98の方向は、地面張り付き点96に基づき決定される法線方向である。
【0067】
ステップ604:法線方向に基づき、仮想環境における仮想オブジェクトの地面張り付き姿勢を決定する。
【0068】
任意選択で、仮想オブジェクトを法線方向に応じて回転させ、仮想オブジェクトを法線に垂直な近似平面に平行な状態に回転させて、仮想環境におけるこの仮想オブジェクトの地面張り付き姿勢を取得する。
【0069】
なお、上記の仮想オブジェクトを法線方向に応じて回転させることは、法線方向に応じて仮想環境における仮想オブジェクトのピッチ角を増加または減少させること、及び/又は、法線方向に応じて仮想環境における仮想オブジェクトのロール角を増加または減少させることを含む。
【0070】
以上のように、この実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法は、サンプリング点によって鉛直下方向で衝突検出を行って地面張り付き点を取得し、地面張り付き点によって仮想オブジェクトの現在のある地面の法線方向を算出する。これにより、法線方向を算出するときの精度が向上する。
【0071】
上記によれば、仮想オブジェクトについて電子機器によって決定されるサンプリング点の数は、1つ、2つまたは3つであってもよく、以下では、これらの3つの場合について別個に説明する。
【0072】
まず、一つのサンプリング点が決定された場合について説明する。
図10は、本出願の他の例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法のフローチャートである。この仮想オブジェクトの姿勢決定方法を電子機器に適用することを例として説明する。
図10に示すように、この姿勢決定方法は、次のステップを含む。
【0073】
ステップ1001:仮想オブジェクトの中心点を仮想オブジェクトのサンプリング点として決定する。
【0074】
任意選択で、この仮想オブジェクトの中心点は、事前設定されてもよい。
【0075】
電子機器は、仮想オブジェクトの中心点を、仮想オブジェクトのサンプリング点として決定してもよい。
【0076】
ステップ1002:サンプリング点から鉛直下方向で衝突検出を行い、仮想オブジェクトが地面に衝突する際の衝突点を地面張り付き点として決定する。
【0077】
電子機器は、仮想オブジェクトの中心点から鉛直下方向で衝突検出を行い、仮想オブジェクトが地面に衝突する際の衝突点を地面張り付き点として決定する。
【0078】
ステップ1003:地面張り付き点に基づき、地面に対する仮想オブジェクトの法線方向を決定する。
【0079】
任意選択で、電子機器は、この地面張り付き点を始点として地面に垂直な第1の垂直線を引き、この第1の垂直線に基づき地面に対する仮想オブジェクトの法線方向を決定する。任意選択で、この法線方向はこの第1の垂直線の方向である。
【0080】
例示的に、地面に対する仮想オブジェクトの法線方向は、ベクトル(NormalVector.X,NormalVector.Y,NormalVector.Z)で表される。
【0081】
ステップ1004:地面座標系に対する法線方向の第1のヨー角に基づき、仮想環境における仮想オブジェクトのピッチ角pitchを決定する。
【0082】
任意選択で、法線方向を仮想オブジェクトのオブジェクト座標系のy軸方向として、仮想環境における仮想オブジェクトのピッチ角pitchを決定する。
【0083】
任意選択で、法線方向を仮想オブジェクト座標系のy軸方向とした後、オブジェクト座標系の正のz軸と地面座標系の水平面、つまりXOZ面との角度を算出し、この角度は上記第1のヨー角であり、ピッチ角は、この第1のヨー角の逆数である。或いは、法線方向を仮想オブジェクト座標系のy軸方向とした後、オブジェクト座標系の正のy軸と地面座標系の正のY軸の間の角度を算出し、この角度は上記第1のヨー角であり、ピッチ角はこの第1のヨー角の逆数である。
【0084】
例えば、仮想オブジェクトの中心点を原点としてオブジェクト座標系を確立し、この法線をこのオブジェクト座標系のy軸とし、x軸とz軸をこのy軸に垂直にする。なお、例えば、仮想オブジェクトを仮想キャラクターとして説明し、x軸は原点から体の左側を指す座標軸であり、z軸は原点から頭頂部を指す座標軸であり、y軸は原点から背中に垂直で上向きの座標軸である。なお、x軸、y軸及びz軸は、互いに垂直である。任意選択で、仮想キャラクターが地面張り付き姿勢にあり、背中が上を向いている場合、y軸方向は、仮想キャラクターの地面上の地面張り付き点に応じた法線方向である。
【0085】
なお、
図11に示すようなユーザーインターフェイス111を参照して、ユーザーインターフェイス111における座標軸x、座標軸y及び座標軸zはすべて概略図である。実際の実施例では、上記座標軸は必ずしもユーザーインターフェイス111に表示される必要はない。
【0086】
任意選択で、この第1のヨー角は、地面座標系のY軸に対するヨー角であり、即ち、NormalVector.XとNormalVector.Zによって決定されるヨー角であり、ピッチ角pitchは、上記第1のヨー角の逆数である。
【0087】
任意選択で、ピッチ角pitchは次のコードによって取得できる。
float pitch=FMath::Atan2(NormalVector.X,NormalVector.Z)*-1.f
【0088】
ただし、FMath::Atan2はFMathクラスの静的方法Atan2を呼び出し、floatは浮動小数点数であり、「*-1.f」は、取得された第1のヨー角を反転して浮動小数点数を保持するために使用される。
【0089】
ステップ1005:地面座標系に対する法線方向の第2のヨー角に基づき、仮想環境における仮想オブジェクトのロール角rollを決定する。
【0090】
任意選択で、法線方向を仮想オブジェクト座標系のy軸方向とした後、オブジェクト座標系のy軸と地面座標系のX軸を通る垂直面との間の角度、つまりオブジェクト座標系のy軸とXOY面との間の角度を算出し、この角度は、上記第2のヨー角であり、ロール角は、その第2のヨー角の逆数である。
【0091】
任意選択で、その第2のヨー角は、法線方向と地面座標系のXOY面との間のヨー角であり、即ち、NormalVector.YとNormalVector.Zによって決定されるヨー角であり、ロール角rollは、上記第2のヨー角の逆数である。
【0092】
任意選択で、ロール角rollは次のコードによって取得できる。
float roll=FMath::Atan2(NormalVector.Y,NormalVector.Z)*-1.f
【0093】
ただし、FMath::Atan2はFMathクラスの静的方法Atan2を呼び出し、floatは浮動小数点数であり、「*-1.f」は取得されたヨー角を反転して浮動小数点数を保持するために使用される。
【0094】
任意選択で、仮想オブジェクトのピッチ角pitchとロール角rollを取得した後、このピッチ角とロール角で仮想オブジェクトを回転させ、即ち、仮想オブジェクトの初期ピッチ角をピッチ角に基づいて増加または減少させて、仮想オブジェクトの初期ロール角をロール角に基づいて増加または減少させて、回転された仮想オブジェクトを地面張り付き姿勢で地面に張り付く。
【0095】
なお、ピッチ角及びロール角の増加または減少は、実際の操作における仮想オブジェクトの回転状況によって決まる。
【0096】
任意選択で、次のコードによって、上記ピッチ角とロール角で仮想オブジェクトを回転させる。即ち、
FRotator characterRotation = FRotator(Pitch,0.0f,Roll)
【0097】
ただし、FRotatorは回転方法を示すために使用され、characterRotationは、仮想オブジェクトの回転角度を示すために使用され、0.0fは仮想オブジェクトがヨー角に応じて回転する必要がないことを示すために使用される。
【0098】
以上のように、この実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法は、傾斜が比較的平坦である場合、地面の法線方向を算出することで、仮想オブジェクトが座標軸のさまざまな方向で理想的な地面張り付き状態を実現できることを保証するようになる。これにより、キャラクターが地面張り付き姿勢にあるときの身体の一部が地面または障害物に沈む状況が軽減され、現実の物理法則により適合する。
【0099】
次に、中心点に基づき2つのサンプリング点を決定する場合を参照しながら説明する。この2つのサンプリング点はそれぞれ、仮想オブジェクトの地面張り付き姿勢での上半分の点を表すための前部サンプリング点と、仮想オブジェクトの地面張り付き姿勢での下半分の点を表すための後部サンプリング点とである。
【0100】
図12は、本出願の他の例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法のフローチャートである。この仮想オブジェクトの姿勢決定方法を電子機器に適用することを例として説明する。
図12に示すように、この姿勢決定方法は、次のステップを含む。
【0101】
ステップ1201:仮想オブジェクトの中心点の前方の第1の距離にある点を、前部サンプリング点として決定する。
【0102】
任意選択で、その中心点の前方は、仮想オブジェクトが向いている方向及び水平方向によって決定される。なお、水平方向は、地面座標系におけるY軸の方向に垂直な方向である。その仮想オブジェクトの中心点の前方の第1の距離にある点は、中心点から、水平方向及び仮想オブジェクトが向いている方向に沿って第1の距離だけ前に移動した点である。
【0103】
ステップ1202:仮想オブジェクトの中心点の後方の第2の距離にある点を、後部サンプリング点として決定する。
【0104】
任意選択で、その中心点の後方は、仮想オブジェクトが向いている方向の反対方向である。その仮想オブジェクトの中心点の後方の第2の距離にある点は、中心点から水平方向及び仮想オブジェクトが向いている方向の反対方向に沿って第2の距離だけ前に移動した点である。
【0105】
なお、上記第1の距離と第2の距離は、2つの同じ距離長さであってもよく、2つの異なる距離長さであってもよい。
【0106】
任意選択で、上記第1の距離と第2の距離は、仮想オブジェクトの長さの半分以下である。
【0107】
ステップ1203:前部サンプリング点及び後部サンプリング点を仮想オブジェクトのサンプリング点として決定する。
【0108】
例示的に、
図13を参照して、仮想オブジェクトの中心点は中心点131であり、仮想オブジェクトが向いている方向に基づき、前部サンプリング点134及び後部サンプリング点135を決定する。
【0109】
ステップ1204:サンプリング点から鉛直下方向で衝突検出を行って、仮想オブジェクトが地面に衝突する際の衝突点を地面張り付き点として決定する。
【0110】
サンプリング点から鉛直下方向で衝突検出を行うことについて、ステップ602では既に説明したので、ここで繰り返して説明しない。
【0111】
任意選択で、前部サンプリング点から鉛直下方向で衝突検出を行い、仮想オブジェクトが地面に衝突する際の衝突点を第1の地面張り付き点として決定する。後部サンプリング点から鉛直下方向で衝突検出を行って、仮想オブジェクトが地面に衝突する際の衝突点を第2の地面張り付き点として決定する。
【0112】
例示的に、
図13を参照して、前部サンプリング点134から鉛直下方向で衝突検出を行って、第1の地面張り付き点134を取得し、後部サンプリング点135から鉛直下方向で衝突検出を行って、第2の地面張り付き点135を取得する。
【0113】
ステップ1205:第1の地面張り付き点と第2の地面張り付き点との接続線を決定する。
【0114】
例示的に、
図13を参照して、第1の地面張り付き点134と第2の地面張り付き点135との間の点線は、第1の地面張り付き点134と第2の地面張り付き点135との接続線である。
【0115】
ステップ1206:接続線に垂直で、かつロール角が0である第2の垂直線に基づき、地面に対する仮想オブジェクトの法線方向を決定する。
【0116】
任意選択で、その接続線を90度回転して、この直線に垂直で、かつロール角が0である第2の垂直線を取得する。例示的に、
図13を参照して、当該接続線が第1の地面張り付き点134から第2の地面張り付き点135を指す有向射線である場合、この法線方向は、その有向射線を地面座標系のz軸に周り90度回転させた方向、つまり法線136の方向である。
【0117】
任意選択で、上記法線方向は次のコードによって取得できる。
FRotator NormalRotator = (Target2 - Target).Rotation();
NormalRotator.pitch +=90.f;
FVector NormalVector = NormalRotator. Vector()
【0118】
ただし、Targetは第1の地面張り付き点の地面座標系における座標であり、Target2は第2の地面張り付き点の地面座標系における座標であり、NormalVectorは法線を示すために使用され、NormalRotatorは第1の地面張り付き点と第2の地面張り付き点との間の接続線を回転させる方法を示すために使用され、NormalRotator.pitch +=90.fはその接続線を90度回転させることを示すために使用される。
【0119】
ステップ1207:地面座標系のX軸に対する法線方向の第1のヨー角に基づき、仮想環境における仮想オブジェクトのピッチ角を決定する。
【0120】
任意選択で、法線方向を仮想オブジェクト座標系のy軸方向とした後、オブジェクト座標系の正のz軸と地面座標系の水平面、つまりXOZ面との角度を算出し、この角度は上記第1のヨー角であり、ピッチ角はその第1のヨー角の逆数である。または、法線方向を仮想オブジェクト座標系のy軸方向とした後、オブジェクト座標系の正のy軸と地面座標系の正のY軸正との間の角度を算出し、この角度は上記第1のヨー角であり、ピッチ角はその第1のヨー角の逆数である。
【0121】
一つの具体的な実施例に基づいて、
図14と
図15を参照して、ユーザーインターフェイス141では、仮想オブジェクトは立位姿勢で斜面に立っており、この仮想オブジェクトの中心点142に基づき前部サンプリング点143と後部サンプリング点144を決定し、前部サンプリング点143と後部サンプリング点144に対して垂直衝突検出を行って第1の地面張り付き点145と第2の地面張り付き点146を取得し、第1の地面張り付き点145と第2の地面張り付き点146との接続線に基づき、法線の方向、つまり
図14の矢印が指す方向を決定し、この法線の方向に基づき、
図15に示すようなユーザーインターフェイス151では、地面張り付き姿勢で仮想オブジェクトを表示する。
【0122】
なお、
図14及び
図15における上記前部サンプリング点、後部サンプリング点、第1の地面張り付き点、第2の地面張り付き点、中心点、及び各点の間の接続線はすべて概略図であり、実際の実施例では、ユーザーインターフェイスには上記点及び各点の間の接続線が表示されなくてもよい。
【0123】
以上のように、この実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法は、地面が勾配の異なる2つの斜面の境目である場合または地面が弓形地面である場合、2つの斜面のそれぞれに1つの点を地面張り付き点として取るか、または弧に2つの地面張り付き点を取ることで、仮想オブジェクトが1つの傾斜角に応じて回転された後に別の傾斜角で宙に浮くという状況が回避され、現実の物理法則により適合する。
【0124】
第3、中心点に基づき3つのサンプリング点を決定する場合を参照しながら説明する。この3つのサンプリング点は、仮想オブジェクトの地面張り付き姿勢での上半分の点を表すための前部サンプリング点と、仮想オブジェクトの地面張り付き姿勢での下半分の点を表すための後部サンプリング点と、及び仮想オブジェクトの地面張り付き姿勢での左側または右側の点を表すためのサイドサンプリング点とである。
【0125】
図16は、本出願の他の例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法のフローチャートである。この仮想オブジェクトの姿勢決定方法を電子機器に適用することを例として説明する。
図16に示すように、この姿勢決定方法は、次のステップを含む。
【0126】
ステップ1601:仮想オブジェクトの中心点の前方の第1の距離にある点を、前部サンプリング点として決定する。
【0127】
任意選択で、その中心点の前方は、仮想オブジェクトが向いている方向及び水平方向によって決定される。なお、水平方向は、地面座標系におけるY軸の方向に垂直な方向である。その仮想オブジェクトの中心点の前方の第1の距離にある点は、中心点水平方向及び仮想オブジェクトが向いている方向に沿って第1の距離だけ前に移動した点である。
【0128】
ステップ1602:仮想オブジェクトの中心点の後方の第2の距離にある点を、後部サンプリング点として決定する。
【0129】
任意選択で、その中心点の後方は、仮想オブジェクトが向いている方向の反対方向である。その仮想オブジェクトの中心点の後方の第2の距離にある点は、中心点から水平方向及び仮想オブジェクトが向いている方向の反対方向に沿って第2の距離だけ前に移動した点である。
【0130】
なお、上記第1の距離と第2の距離は、2つの同じ距離長さであってもよく、2つの異なる距離長さであってもよい。
【0131】
任意選択で、上記第1の距離と第2の距離は、仮想オブジェクトの長さの半分以下である。
【0132】
ステップ1603:仮想オブジェクトの中心点の左側の第3の距離にある点または仮想オブジェクトの右側の第4の距離にある点を、サイドサンプリング点として決定する。
【0133】
任意選択で、その中心点の左側はy軸の方向に垂直で、仮想オブジェクトが向いている方向に垂直な左への方向である。その中心点の右側は、y軸の方向に垂直で、仮想オブジェクトが向いている方向に垂直な右への方向である。
【0134】
任意選択で、上記第3の距離と第4の距離は、仮想オブジェクトの幅の半分以下である。
【0135】
ステップ1604:前部サンプリング点と、後部サンプリング点と、サイドサンプリング点とを、仮想オブジェクトのサンプリング点として決定する。
【0136】
例示的に、
図17を参照して、仮想オブジェクトの中心点1701に基づき、前部サンプリング点1702、後部サンプリング点1703及びサイドサンプリング点1704を決定し、上記前部サンプリング点1702、後部サンプリング点1703及びサイドサンプリング点1704を仮想オブジェクトのサンプリング点として決定する。
【0137】
ステップ1605:サンプリング点から鉛直下方向で衝突検出を行って、仮想オブジェクトが地面に衝突する際の衝突点を地面張り付き点として決定する。
【0138】
任意選択で、前部サンプリング点から鉛直下方向で衝突検出を行って、第1の地面張り付き点を決定する。後部サンプリング点から鉛直下方向で衝突検出を行って、第2の地面張り付き点を決定する。サイドサンプリング点から鉛直下方向で衝突検出を行って、第3の地面張り付き点を決定する。
【0139】
例示的に、
図17を参照し、前部サンプリング点1702から鉛直下方向で衝突検出を行って、第1の地面張り付き点1705を取得し、後部サンプリング点1703から鉛直下方向で衝突検出を行って、第2の地面張り付き点1706を取得し、サイドサンプリング点1704から鉛直下方向で衝突検出を行って、第3の地面張り付き点1707を取得する。
【0140】
ステップ1606:第1の地面張り付き点、第2の地面張り付き点、及び第3の地面張り付き点が位置する平面を決定する。
【0141】
任意選択で、第1の地面張り付き点、第2の地面張り付き点、及び第3の地面張り付き点をそれぞれ接続して、3つの接続線によって構成される平面は、第1の地面張り付き点、第2の地面張り付き点、および第3の地面張り付き点が位置する平面である。
【0142】
例示的に、
図17を参照して、第1の地面張り付き点1705、第2の地面張り付き点1706及び第3の地面張り付き点1707の間の接続線によって構成される影部分は、3つの点が位置する平面である。
【0143】
ステップ1607:平面に垂直で上向きの第3の垂直線に基づき、地面に対する仮想オブジェクトの法線方向を決定する。
【0144】
平面に垂直で上向きとは、当該法線がその3つの点によって構成される平面に垂直で、この法線の方向ベクトルのうち、y軸に対応する座標が正の数であることである。
【0145】
ステップ1608:地面座標系に対する法線方向の第1のヨー角に基づき、仮想環境における仮想オブジェクトのピッチ角pitchを決定する。
【0146】
任意選択で、その第1のヨー角は、地面座標系のY軸に対する法線方向のヨー角であり、即ち、NormalVector.XとNormalVector.Zによって決定されるヨー角であり、ピッチ角pitchは、上記第1のヨー角の逆数である。任意選択で、ピッチ角pitchは次のコードによって取得できる。
float pitch=FMath::Atan2(NormalVector.X,NormalVector.Z)*-1.f
【0147】
ただし、FMath::Atan2は、FMathクラスの静的方法Atan2を呼び出し、floatは浮動小数点数であり、「*-1.f」は取得されたヨー角を反転して浮動小数点数を保持するために使用される。
【0148】
ステップ1609:地面座標系に対する法線方向の第2のヨー角に基づき、仮想環境における仮想オブジェクトのロール角rollを決定する。
【0149】
任意選択で、法線方向を仮想オブジェクト座標系のy軸方向とした後、オブジェクト座標系のy軸と地面座標系のX軸を通る垂直面との間の角度、つまりオブジェクト座標系のy軸とXOY面との間の角度を算出し、この角度は、上記第2のヨー角であり、ロール角はその第2のヨー角の逆数である。
【0150】
任意選択で、その第2のヨー角は、法線方向と地面座標系のXOY面との間の角度であり、即ち、NormalVector.YとNormalVector.Zによって決定されるヨー角であり、ロール角rollは上記第2のヨー角の逆数である。
【0151】
任意選択で、ロール角rollは次のコードによって取得できる。
float roll=FMath::Atan2(NormalVector.Y,NormalVector.Z)*-1.f;
【0152】
ただし、FMath::Atan2はFMathクラスの静的方法Atan2を呼び出し、floatは浮動小数点数であり、「*-1.f」は取得されたヨー角を反転して浮動小数点数を保持するために使用される。
【0153】
任意選択で、仮想オブジェクトのピッチ角pitchとロール角rollを取得した後、このピッチ角とロール角で仮想オブジェクトを回転させ、即ち、仮想オブジェクトの初期ピッチ角をピッチ角に基づいて増加または減少させて、仮想オブジェクトの初期ロール角をロール角に基づいて増加または減少させて、回転された仮想オブジェクトを地面張り付き姿勢で地面に張り付く。
【0154】
任意選択で、次のコードによって、上記ピッチ角とロール角で仮想オブジェクトを回転させる。
FRotator characterRotation = FRotator(Pitch,0.0f,Roll)
【0155】
ただし、FRotatorは、回転方法を示すために使用され、characterRotationは、仮想オブジェクトの回転角度を示すために使用され、0.0fは、仮想オブジェクトがヨー角に応じて回転する必要がないことを示すために使用される。
【0156】
以上のように、この実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法は、3つの地面張り付き点を取って一つの平面を構成し、平面の法線方向に基づき仮想オブジェクトの地面張り付き姿勢を決定することで、仮想オブジェクトがその平面に平行な方向に地面に張り付く。これにより、キャラクターが地面張り付き姿勢にあるときに体のほとんどの領域が宙に浮くという状況が減少し、算出されたピッチ角とロール角は現実の物理法則により適合する。
【0157】
なお、上記の
図1から
図16のいずれかに記載の仮想環境における仮想オブジェクトの姿勢決定方法は、電子機器と通信ネットワークを介して接続するサーバに適用してもよい。本出願では、当該仮想環境における仮想オブジェクトの姿勢決定方法を実行する主体について、限定しない。
【0158】
図18は、本出願の他の例示的な実施例によって提供される仮想環境における仮想キャラクターの姿勢決定方法のフローチャートである。この仮想キャラクターの姿勢決定方法を電子機器に適用する例について説明する。
図18に示すように、この姿勢決定方法は、次のステップを含む。
【0159】
ステップ1801:第1のユーザーインターフェイスを表示する。
【0160】
この第1のユーザーインターフェイスは、立位姿勢で仮想環境の地面にある仮想キャラクターを含む。
【0161】
ステップ1802:姿勢切替コマンドを受信する。
この姿勢切替コマンドは、立位姿勢から地面張り付き姿勢に切り替えるように仮想キャラクターに指示するために使用される。
【0162】
ステップ1803:地面に対する仮想キャラクターの法線方向に基づき、仮想キャラクターの地面張り付き姿勢を決定する。
【0163】
任意選択で、電子機器は、姿勢切替コマンドを受信した後、仮想キャラクターについて、仮想キャラクターの少なくとも一つのサンプリング点を決定し、少なくとも一つのサンプリング点及び地面に基づき、地面に対する仮想キャラクターの法線方向を決定する。
【0164】
なお、少なくとも一つのサンプリング点及び地面に基づき、地面に対する仮想キャラクターの法線方向を決定することは、
まず、少なくとも一つのサンプリング点に応じて衝突検出を行って地面張り付き点を取得し、地面張り付き点に基づき地面に対する仮想キャラクターの法線方向を決定することをさらに含む。
【0165】
上記法線方向の決定は、3つのケースに分けることもできる。
【0166】
第1、仮想キャラクターの一つのサンプリング点を決定し、一つのサンプリング点と地面に基づき、地面に対する仮想キャラクターの法線方向を決定する。
【0167】
任意選択で、仮想キャラクターの中心点をサンプリング点として決定し、サンプリング点を介して衝突検出を行って地面張り付き点を取得し、地面張り付き点を始点として地面に垂直な第1の垂直線に基づき、地面に対する仮想キャラクターの法線方向を決定してもよい。対応する技術的詳細については、
図7に示す実施例を参照してもよい。
【0168】
第2、仮想キャラクターの2つのサンプリング点を決定し、2つのサンプリング点と地面に基づき、地面に対する仮想キャラクターの法線方向を決定する。
【0169】
仮想キャラクターの、仮想キャラクターが地面張り付き姿勢にあるときの上半分の点を表すための上半身サンプリング点と、仮想キャラクターが地面張り付き姿勢にあるときの下半分の点を表すための下半身サンプリング点とを決定し、上半身サンプリング点と下半身サンプリング点に応じて衝突検出を行って第1の地面張り付き点及び第2の地面張り付き点を取得し、第1の地面張り付き点と第2の地面張り付き点との接続線を決定し、接続線に垂直で、かつロール角が0である第2の垂直線を地面に対する仮想キャラクターの法線方向として決定する。対応する技術的詳細については、
図12に示す実施例を参照してもよい。
【0170】
第3、仮想キャラクターの3つのサンプリング点を決定し、3つのサンプリング点と地面に基づき地面に対する仮想キャラクターの法線方向を決定する。
【0171】
仮想キャラクターの、仮想キャラクターが地面張り付き姿勢にあるときの上半分の点を表すための前部サンプリング点と、仮想キャラクターが地面張り付き姿勢にあるときの下半分の点を表すための後部サンプリング点と、仮想キャラクターが地面張り付き姿勢にあるときの左側または右側の点を表すためのサイドサンプリング点とを決定し、前部サンプリング点、後部サンプリング点及びサイドサンプリング点に応じて衝突検出を行って第1の地面張り付き点、第2の地面張り付き点、及び第3の地面張り付き点を取得し、第1の地面張り付き点、第2の地面張り付き点、及び第3の地面張り付き点によって構成される平面を決定し、平面に垂直な第3の垂直線を地面に対する仮想キャラクターの法線方向として決定する。対応する技術的詳細については、
図14に示す実施例を参照してもよい。
【0172】
ステップ1804:第2のユーザーインターフェイスを表示する。
【0173】
任意選択で、この第2のユーザーインターフェイスには、地面張り付き姿勢で仮想環境の地面にある仮想キャラクターを含む。
【0174】
任意選択で、第2のユーザーインターフェイスには、前記地面張り付き姿勢で前記仮想環境の地面にある仮想キャラクターを含む。地面は、角度をなす第1の地面エリア及び第2の地面エリアを含み、仮想キャラクターの頭部が第1の地面エリアで宙に浮き、仮想キャラクターの足部が第2の地面エリアで宙に浮き、仮想キャラクターの腰部が第1の地面エリアと第2の地面エリアの境目で地面にはめ込まれる。
【0175】
例示的に、
図19を参照して、まず、電子機器は、第1のユーザーインターフェイス1901を表示し、この第1のユーザーインターフェイスには、立位姿勢で仮想環境の地面にある仮想キャラクター1902を含み、ユーザが姿勢切替ボタン1903に触れた後、電子機器は、姿勢切替コマンドを受信し、地面に対する仮想キャラクターの法線方向に基づき、仮想キャラクターの地面張り付き姿勢を決定する。電子機器は、第2のユーザーインターフェイス1904を表示し、この第2のユーザーインターフェイスには、地面張り付き姿勢で仮想環境の地面にある仮想キャラクター1905を含む。
【0176】
図20は、本出願の他の例示的な実施例によって提供される仮想環境における仮想キャラクターの姿勢決定方法のフローチャートである。この仮想キャラクターの姿勢決定方法を電子機器に適用する例について説明する。
図20に示すように、この姿勢決定方法は、次のステップを含む。
【0177】
ステップ2001:第3のユーザーインターフェイスを表示する。
【0178】
この第3のユーザーインターフェイスは、第1の地面張り付き姿勢で仮想環境における第1の地面位置にある仮想キャラクターを含む。
【0179】
ステップ2002:移動コマンドを受信する。
【0180】
この移動コマンドは、第1の地面位置から移動するように仮想キャラクターに指示するために使用される。
【0181】
ステップ2003:第2の地面に対する仮想キャラクターの法線方向に基づき、仮想キャラクターの第2の地面張り付き姿勢を決定する。
【0182】
任意選択で、電子機器は、移動コマンドを受信した後、仮想キャラクターの中心点に基づき、仮想キャラクターの少なくとも一つのサンプリング点を決定し、少なくとも一つのサンプリング点及び第2の地面位置に基づき、第2の地面位置に対する仮想キャラクターの法線方向を決定する。
【0183】
なお、少なくとも一つのサンプリング点及び第2の地面位置に基づき、第2の地面位置に対する仮想キャラクターの法線方向を決定することは、
まず、少なくとも一つのサンプリング点に応じて衝突検出を行って地面張り付き点を取得し、地面張り付き点に基づき第2の地面位置に対する仮想キャラクターの法線方向を決定することをさらに含む。
【0184】
上記法線方向の決定は、3つのケースに分けることもできる。
【0185】
第1、仮想キャラクターの一つのサンプリング点を決定し、一つのサンプリング点及び地面に基づき、地面に対する仮想キャラクターの法線方向を決定する。
【0186】
任意選択で、仮想キャラクターの中心点をサンプリング点として決定し、サンプリング点によって衝突検出を行って地面張り付き点を取得し、地面張り付き点を始点として地面に垂直な第1の垂直線に基づき、地面に対する仮想キャラクターの法線方向を決定すしてもよい。対応する技術的詳細については、
図7に示す実施例を参照してもよい。
【0187】
第2、仮想キャラクターの2つのサンプリング点を決定し、2つのサンプリング点及び地面に基づき地面に対する仮想キャラクターの法線方向を決定する。
【0188】
仮想キャラクターの、仮想キャラクターが地面張り付き姿勢にあるときの上半分の点を表すための上半身サンプリング点と、仮想キャラクターが地面張り付き姿勢にあるときの下半分の点を表すための下半身サンプリング点とを決定し、上半身サンプリング点及び下半身サンプリング点に応じて衝突検出を行って第1の地面張り付き点及び第2の地面張り付き点を取得し、第1の地面張り付き点と第2の地面張り付き点との接続線を決定し、接続線に垂直で、かつロール角が0である第2の垂直線を地面に対する法線方向として決定する。対応する技術的詳細については、
図12に示す実施例を参照してもよい。
【0189】
第3、仮想キャラクターの3つのサンプリング点を決定し、3つのサンプリング点及び地面に基づき地面に対する仮想キャラクターの法線方向を決定する。
【0190】
仮想キャラクターの、仮想キャラクターが地面張り付き姿勢にあるときの上半分の点を表すための前部サンプリング点と、仮想キャラクターが地面張り付き姿勢にあるときの下半分の点を表すための後部サンプリング点と、仮想キャラクターが地面張り付き姿勢にあるときの左側または右側の点を表すためのサイドサンプリング点とを決定し、前部サンプリング点、後部サンプリング点及びサイドサンプリング点に応じて衝突検出を行って第1の地面張り付き点、第2の地面張り付き点、及び第3の地面張り付き点を取得し、第1の地面張り付き点、第2の地面張り付き点、及び第3の地面張り付き点によって構成される平面を決定し、平面に垂直な第3の垂直線を地面に対する仮想キャラクターの法線方向として決定する。対応する技術的詳細については、
図16に示す実施例を参照してもよい。
【0191】
ステップ2004:第4のユーザーインターフェイスを表示する。
【0192】
この第4のユーザーインターフェイスは、第2の地面張り付き姿勢で仮想環境の第2の地面位置にある仮想キャラクターを含む。
【0193】
任意選択で、第2のユーザーインターフェイスは、地面張り付き姿勢で仮想環境の地面にある仮想キャラクターを含む。地面は、角度をなす第1の地面エリア及び第2の地面エリアを含み、仮想キャラクターの頭部が第1の地面エリアで宙に浮き、仮想キャラクターの足部が第2の地面エリアで宙に浮き、仮想キャラクターの腰部が第1の地面エリアと第2の地面エリアの境目で地面に埋め込まれる。
【0194】
例示的に、
図21を参照して、まず、電子機器は、第3のユーザーインターフェイス2101を表示し、この第3のユーザーインターフェイスには、第1の地面張り付き姿勢で仮想環境における第1の地面位置にある仮想オブジェクト2102を含み、ユーザが移動ボタン2103を触れた後、電子機器は、移動コマンドを受信して、第2の地面2104に対する仮想オブジェクトの法線方向に基づき、仮想オブジェクトの地面張り付き姿勢を決定する。電子機器は、第4のユーザーインターフェイス2105を表示し、この第4のユーザーインターフェイスには、第2の地面張り付き姿勢で仮想環境の第2の地面位置にある仮想オブジェクト2106を含む。
【0195】
図22は、本出願一つの例示的な実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定装置の構造ブロック図である。この装置は、サンプリング点決定モジュール2201、法線決定モジュール2202、及び姿勢決定モジュール2203を含み、
サンプリング点決定モジュール2201は、仮想オブジェクトの少なくとも一つのサンプリング点を決定するために使用され、サンプリング点は、地面に対する衝突検出に使用される点であり、
法線決定モジュール2202は、少なくとも一つのサンプリング点及び仮想オブジェクトの位置する地面に基づき、地面に対する仮想オブジェクトの法線方向を決定するために使用され、
姿勢決定モジュール2203は、法線方向に基づき、仮想環境における仮想オブジェクトの地面張り付き姿勢を決定するために使用される。
【0196】
オプションの実施形態では、
図23に示すように、法線決定モジュール2202は、
サンプリング点から鉛直下方向で衝突検出を行って、仮想オブジェクトが地面に衝突する際の衝突点を地面張り付き点として決定するための検出ユニット2212と、
地面張り付き点に基づき、地面に対する仮想オブジェクトの法線方向を決定するための法線決定ユニット2222と、
を含む。
【0197】
オプションの実施形態では、サンプリング点は、仮想オブジェクトの中心点を含み、地面張り付き点は、中心点から衝突検出した後に得られた点であり、
法線決定ユニット2222は、地面張り付き点を始点として地面に垂直な第1の垂直線に基づき、地面に対する仮想オブジェクトの法線方向を決定するためにも使用される。
【0198】
オプションの実施形態では、サンプリング点決定モジュール2201は、仮想オブジェクトの中心点を、仮想オブジェクトのサンプリング点として決定するためにも使用される。
【0199】
オプションの実施形態では、サンプリング点決定モジュール2201は、ヨー角決定ユニット2211を含み、
ヨー角決定ユニット2211は、地面座標系のx軸に対する法線方向の第1のヨー角に基づき、仮想環境における仮想オブジェクトのピッチ角を決定するために使用され、
ヨー角決定ユニット2211は、地面座標系のz軸に対する法線方向の第2のヨー角に基づき、仮想環境における仮想オブジェクトのロール角を決定するためにも使用され、
なお、地面座標系は、仮想環境が配置されている世界座標系である。
【0200】
オプションの実施形態では、サンプリング点は、仮想オブジェクトの地面張り付き姿勢での上半分の点を表すための前部サンプリング点と、仮想オブジェクトの地面張り付き姿勢での下半分の点を表すための後部サンプリング点を含み、
法線決定ユニット2222は、前部サンプリング点から衝突検出した後に得られた点である第1の地面張り付き点と、後部サンプリング点から衝突検出した得られた点である第2の地面張り付き点との間の接続線を決定するためにも使用され、
法線決定ユニット2222は、接続線に垂直で、かつロール角が0である第2の垂直線に基づき、地面に対する仮想オブジェクトの法線方向を決定するためにも使用される。
【0201】
オプションの実施形態では、サンプリング点決定モジュール2201は、仮想オブジェクトの中心点の前方の第1の距離にある点を、前部サンプリング点として決定するためにも使用され、
サンプリング点決定モジュール2201は、仮想オブジェクトの中心点の後方の第2の距離にある点を、後部サンプリング点として決定するためにも使用され、
サンプリング点決定モジュール2201は、前部サンプリング点及び後部サンプリング点を仮想オブジェクトのサンプリング点として決定するためにも使用される。
【0202】
オプションの実施形態では、姿勢決定モジュール2203は、地面座標系のx軸に対する法線方向の第1のヨー角に基づき、仮想環境における仮想オブジェクトのピッチ角を決定するためにも使用され、
なお、地面座標系は、仮想環境が配置されている世界座標系である。
【0203】
オプションの実施形態では、サンプリング点は、仮想オブジェクトの地面張り付き姿勢での上半分の点を表すための前部サンプリング点と、仮想オブジェクトの地面張り付き姿勢での下半分の点を表すための後部サンプリング点と、及び仮想オブジェクトの地面張り付き姿勢での左側または右側の点を表すためのサイドサンプリング点と、を含み、
法線決定ユニット2222は、前部サンプリング点から衝突検出した後に得られた点である第1の地面張り付き点と、後部サンプリング点から衝突検出した後に得られた点である第2の地面張り付き点と、サイドサンプリング点から衝突検出した後に得られた点である第3の地面張り付き点とが存在する平面を決定するためにも使用され、
法線決定ユニット2222は、平面に垂直で上向きの第3の垂直線に基づき、地面に対する仮想オブジェクトの法線方向を決定するためにも使用される。
【0204】
オプションの実施形態では、サンプリング点決定モジュール2201は、仮想オブジェクトの中心点の前方の第1の距離にある点を、前部サンプリング点として決定するためにも使用され、
サンプリング点決定モジュール2201は、仮想オブジェクトの中心点の後方の第2の距離にある点を、後部サンプリング点として決定するためにも使用され、
サンプリング点決定モジュール2201は、仮想オブジェクトの中心点の左側の第3の距離にある点または仮想オブジェクトの中心点の右側の第4の距離にある点を、サイドサンプリング点として決定するためにも使用され、
サンプリング点決定モジュール2201は、前部サンプリング点と、後部サンプリング点と、サイドサンプリング点とを、仮想オブジェクトのサンプリング点として決定するためにも使用される。
【0205】
オプションの実施形態では、姿勢決定モジュール2203は、地面座標系のx軸に対する法線方向の第1のヨー角に基づき、仮想環境における仮想オブジェクトのピッチ角を決定するためにも使用され、
姿勢決定モジュール2203は、地面座標系のz軸に対する法線方向の第2のヨー角に基づき、仮想環境における仮想オブジェクトのロール角を決定するためにも使用され、
なお、地面座標系は、仮想環境が配置されている世界座標系である。
【0206】
オプションの実施形態では、地面は、勾配のあるエリアと、曲面エリアと、陥凹エリアと、隆起エリアとのうちの少なくとも一つを含む。
【0207】
図24は、本出願の他の例示的な実施例によって提供される仮想環境における仮想キャラクターの姿勢決定装置の構造ブロック図である。この装置は、第1の表示モジュール2401、第1の受信モジュール2402及び第1の決定モジュール2403を含み、
第1の表示モジュール2401は、立位姿勢で仮想環境の地面にある仮想キャラクターを含む第1のユーザーインターフェイスを表示するために使用され、
第1の受信モジュール2402は、立位姿勢から地面張り付き姿勢に切り替えるように仮想キャラクターに指示するための姿勢切替コマンドを受信するために使用され、
第1の決定モジュール2403は、地面に対する仮想キャラクターの法線方向に基づき、仮想キャラクターの地面張り付き姿勢を決定するために使用され、
第1の表示モジュール2401は、地面張り付き姿勢で仮想環境の地面にある仮想キャラクターを含む第2のユーザーインターフェイスを表示するためにも使用される。
【0208】
オプションの実施形態では、第1の決定モジュール2403は、姿勢切替コマンドを受信した後、仮想キャラクターの中心点に基づき、仮想キャラクターの少なくとも一つのサンプリング点を決定するためにも使用され、サンプリング点は、地面に対する衝突検出に使用される点であり、
第1の決定モジュール2403は、少なくとも一つのサンプリング点及び地面に基づき、地面に対する仮想キャラクターの法線方向を決定するためにも使用される。
【0209】
図25は本出願の他の例示的な実施例によって提供される仮想環境における仮想キャラクターの姿勢決定装置である。この装置は、第2の表示モジュール2501、第2の受信モジュール2502及び第2の決定モジュール2503を含み、
第2の表示モジュール2501は、第1の地面張り付き姿勢で仮想環境の第1の地面位置にある仮想キャラクターを含む第3のユーザーインターフェイスを表示するために使用され、
第2の受信モジュール2502は、第1の地面位置から移動するように仮想キャラクターに指示するための移動コマンドを受信するために使用され、
第2の決定モジュール2503は、第2の地面位置に対する仮想キャラクターの法線方向に基づき、仮想キャラクターの第2の地面張り付き姿勢を決定するために使用され、
第2の表示モジュール2501は、第2の地面張り付き姿勢で仮想環境の第2の地面位置にある仮想キャラクターを含む第4のユーザーインターフェイスを表示するためにも使用される。
【0210】
オプションの実施形態では、第2の決定モジュール2503は、移動コマンドを受信した後、仮想キャラクターの中心点に基づき、仮想キャラクターの少なくとも一つのサンプリング点を決定するためにも使用され、サンプリング点は、地面に対する衝突検出に使用される点であり、
第2の決定モジュール2503は、少なくとも一つのサンプリング点及び第2の地面位置に基づき、第2の地面位置に対する仮想キャラクターの法線方向を決定するためにも使用される。
【0211】
図26は、本出願の他の例示的な実施例によって提供される仮想環境における仮想キャラクターの姿勢決定装置である。この装置は、第3の表示モジュール2601と第3の受信モジュール2602を含み、
第3の表示モジュール2601は、立位姿勢で仮想環境の地面にある仮想キャラクターを含む第1のユーザーインターフェイスを表示するために使用され、
第3の受信モジュール2602は、立位姿勢から地面張り付き姿勢に切り替えるように仮想キャラクターに指示するための姿勢切替コマンドを受信するために使用され、
第3の表示モジュール2601は、地面張り付き姿勢で仮想環境の地面にある仮想キャラクターを含む第2のユーザーインターフェイスを表示するためにも使用され、地面は、角度をなす第1の地面エリア及び第2の地面エリアを含み、仮想キャラクターの頭部が第1の地面エリアで宙に浮き、仮想キャラクターの足部が第2の地面エリアで宙に浮き、仮想キャラクターの腰部が第1の地面エリアと第2の地面エリアの境目で地面に埋め込まれる。
【0212】
オプションの実施形態では、
図27に示すように、この装置は、
仮想キャラクターの中心点に基づき、仮想キャラクターの上半身サンプリング点及び下半身サンプリング点を決定するための第3の決定モジュール2603をさらに含み、
第3の決定モジュール2603は、上半身サンプリング点から衝突検出した後に得られた第1の地面エリアにある点である第1の地面張り付き点と、下半身サンプリング点から衝突検出した後に得られた第2の地面エリアにある点である第2の地面張り付き点との接続線を決定するためにも使用される。
【0213】
図28は、本出願の一つの例示的な実施例によって提供される電子機器2800の構造ブロック図を示している。この電子機器2800は、スマートフォン、タブレットコンピュータ、MP3プレーヤー(Moving Picture Experts Group Audio Layer III、動態イメージエキスパート圧縮標準オーディオレイヤー3)、MP4(Moving Picture Experts Group Audio Layer IV、動態イメージエキスパート圧縮標準オーディオレイヤー4)プレーヤー、ノートパソコン或いは卓上型コンピュータであり得る。電子機器2800は、ユーザ機器、携帯電子機器、ラップトップ電子機器、卓上型電子機器などの他の名前で呼ばれることもある。
【0214】
一般に、電子機器2800は、プロセッサ2801及びメモリ2802を含む。
プロセッサ2801は、4コアプロセッサ、8コアプロセッサなどの1つまたは複数の処理コアを含むことができる。プロセッサ2801は、DSP(Digital Signal Processing、デジタル信号処理)、FPGA(Field-Programmable Gate Array、フィールドプログラマブルゲートアレイ)、PLA(Programmable Logic Array、プログラマブルロジックアレイ)の少なくとも1つのハードウェアの形で実現できる。プロセッサ2801は、メインプロセッサ及びコプロセッサを含むことができる。メインプロセッサは、ウェイクアップ状態でのデータを処理するためのプロセッサであり、CPU(Central Processing Unit、中央処理ユニット)とも呼ばれる。コプロセッサは、スタンバイ状態でのデータを処理するための低電力プロセッサである。いくつかの実施例では、プロセッサ2801は、GPU(Graphics Processing Unit、画像プロセッサ)と統合してもよく、GPUは、ディスプレイスクリーンに表示される必要があるコンテンツをレンダリング及び描画するために使用される。いくつかの実施例では、プロセッサ2801は、AI(Artificial Intelligence、人工知能)プロセッサをさらに含むことができる。このAIプロセッサは、機械学習に関するコンピューティング操作を処理するために使用される。
【0215】
メモリ2802は、非一時的であり得る1つまたは複数のコンピュータ可読記憶媒体を含むことができる。メモリ2802は、高速ランダムアクセスメモリ、及び1つまたは複数の磁気ディスク記憶装置、フラッシュメモリ記憶装置のような不揮発性メモリも含むことができる。いくつかの実施例では、メモリ2802のうちの非一時的コンピュータ可読記憶媒体は、本出願における方法実施例によって提供される仮想環境における仮想オブジェクトの姿勢決定方法を実現するようにプロセッサ2801によって実行される少なくとも一つのコマンドを記憶するために使用される。
【0216】
いくつかの実施例では、電子機器2800は、オプションとして周辺機器インターフェース2803及び少なくとも一つの周辺機器をさらに含んでもよい。プロセッサ2801と、メモリ2802と、周辺機器インターフェース2803とは、バスまたは信号線によって接続することができる。各周辺機器は、バス、信号線または回路基板によって周辺機器インターフェース2803に接続することができる。具体的には、周辺機器は、無線周波数回路2804と、タッチディスプレイ2805と、カメラ2806と、オーディオ回路2807と、位置決めコンポーネント2808と、電源2809とのうちの少なくとも1つを含む。
【0217】
周辺機器インターフェース2803は、I/O(Input/Output、入力/出力)に関する少なくとも一つの周辺機器をプロセッサ2801及びメモリ2802に接続するために使用されることができる。いくつかの実施例では、プロセッサ2801、メモリ2802及び周辺機器インターフェース2803は、同じチップまたは回路基板に集積される。いくつかの別の実施例では、プロセッサ2801、メモリ2802及び周辺機器インターフェース2803の任意の一つまたは二つは、別個のチップまたは回路基板で実現されることができ、この実施例では、これを限定しない。
【0218】
無線周波数回路2804は、電磁信号とも呼ばれるRF(Radio Frequency、無線周波数)信号を送受信するために使用される。無線周波数回路2804は、電磁信号を介して通信ネットワーク及び他の通信デバイスと通信する。無線周波数回路2804は、電気信号を電磁信号に変換して送信するか、または受信した電磁信号を電気信号に変換する。任意選択で、無線周波数回路2804は、アンテナシステム、RFトランシーバ、1つまたは複数の増幅器、チューナ、発振器、デジタル信号プロセッサ、コーデックチップセット、ユーザ認識モジュールカードなどを含む。無線周波数回路2804は、少なくとも1つの無線通信プロトコルを介して他の電子機器と通信することができる。この無線通信プロトコルには、ワールドワイドウェブ、メトロポリタンエリアネットワーク、イントラネット、さまざまな世代の移動通信ネットワーク(2G、3G、4G及び5G)、無線LAN及び/又はWiFi(Wireless Fidelity、ワイヤレスフィデリティ)ネットワークが含まれるが、これらに限定されない。いくつかの実施例では、無線周波数回路2804は、NFC(Near Field Communication、近距離無線通信)に関する回路を含んでもよく、本出願では、これを限定しない。
【0219】
ディスプレイスクリーン2805は、UI(User Interface、ユーザーインターフェイス)を表示するために使用される。このUIには、グラフィック、テキスト、アイコン、ビデオ、及びこれらの任意の組み合わせを含むことができる。ディスプレイスクリーン2805がタッチディスプレイである場合、ディスプレイスクリーン2805は、ディスプレイスクリーン2805の表面又は表面の上方におけるタッチ信号を収集する能力をさらに有する。このタッチ信号は、制御信号としてプロセッサ2801に入力されて処理されることができる。このとき、ディスプレイスクリーン2805は、ソフトボタン及び/又はソフトキーボードとも呼ばれる仮想ボタン及び/又は仮想キーボードを提供するために使用されることもできる。いくつかの実施例では、ディスプレイスクリーン2805は、電子機器2800のフロントパネルに設置される一つがあってもよい。他のいくつかの実施例では、ディスプレイスクリーン2805は、電子機器2800の異なる表面にそれぞれに設置されるか、または折り畳みに設計される、少なくとも二つがあってもよい。さらに他のいくつかの実施例では、ディスプレイスクリーン2805は、電子機器2800の屈曲表面または折り畳み面に設置される、可撓性ディスプレイスクリーンであってもよい。また、ディスプレイスクリーン2805は、非矩形の不規則な形状、すなわち、特殊形状のスクリーンとして設置することもできる。ディスプレイスクリーン2805は、LCD(Liquid Crystal Display、液晶ディスプレイ)、OLED(Organic Light-Emitting Diode、有機発光ダイオード)などの材料で作ることができる。
【0220】
カメラコンポーネント2806は、画像またはビデオを収集するために使用される。任意選択で、カメラコンポーネント2806は、フロントカメラとリアカメラを含む。一般に、フロントカメラは電子機器のフロントパネルに設置され、リアカメラは電子機器の背面に設置される。いくつかの実施例では、リアカメラは、少なくとも2つあり、それぞれメインカメラ、被写界深度カメラ、広角カメラ、望遠カメラのいずれかであり、メインカメラと被写界深度カメラの融合による背景ぼかし機能、メインカメラと広角カメラの融合によるパノラマ撮影及びVR(Virtual Reality、仮想現実)撮影機能または他のフュージョン撮影機能を実現する。いくつかの実施例では、カメラコンポーネント2806は、フラッシュをさらに含んでもよい。フラッシュは、単色温度フラッシュであってもよく、二色温度フラッシュであってもよい。二色温度フラッシュとは、暖かい光のフラッシュと冷たい光のフラッシュの組み合わせであり、さまざまな色温度での光の補正に使用されることができる。
【0221】
オーディオ回路2807は、マイクロフォン及びスピーカーを含むことができる。マイクロフォンは、ユーザ及び環境の音波を収集し、音波を電気信号に変換してプロセッサ2801に入力して処理するか、無線周波数回路2804に入力して音声通信を実現するために使用される。ステレオ収集またはノイズ低減の目的で、電子機器2800の異なる部分にそれぞれ配置される複数のマイクロフォンがあってもよい。マイクロフォンは、アレイマイクロフォンまたは無指向性収集型マイクロフォンであってもよい。スピーカーは、プロセッサ2801または無線周波数回路2804からの電気信号を音波に変換するために使用される。スピーカーは、従来の薄膜スピーカーであってもよく、圧電セラミックススピーカーであってもよい。スピーカーは、圧電セラミックススピーカーである場合、電気信号を人間に聞こえる音波に変換するだけでなく、距離測定などの目的で電気信号を人間に聞こえない音波に変換することもできる。いくつかの実施例では、オーディオ回路2807は、ヘッドフォンジャックも含むことができる。
【0222】
位置決めコンポーネント2808は、ナビゲーションまたはLBS(Location Based Service、位置に基づくサービス)を実現するように、電子機器2800の現在の地理位置を位置決めるために使用される。位置決めコンポーネント2808は、米国のGPS(Global Positioning System、全地球測位システム)、中国の北斗システム、またはロシアのガリレオシステムに基づく位置決めコンポーネントであってもよい。
【0223】
電源2809は、電子機器2800における各コンポーネントに電力を供給するために使用される。電源2809は、交流電力、直流電力、一次電池または充電式電池であってもよい。電源2809が充電式電池である場合、この充電式電池は、有線充電式電池または無線充電式電池であってもよい。有線充電式電池は、有線回線を介して充電される電池であり、無線充電式電池は無線コイルを介して充電される電池である。この充電式電池は、高速充電技術をサポートするためにも使用できる。
【0224】
いくつかの実施例では、電子機器2800は、1つまたは複数のセンサ2810も含む。これらの1つまたは複数のセンサ2810は、加速度センサ2811、ジャイロセンサ2812、圧力センサ2813、指紋センサ2814、光学センサ2815、及び近接センサ2816が含まれるが、これらに限定されない。
【0225】
加速度センサ2811は、電子機器2800によって確立された座標系の3つの座標軸上の加速度の大きさを検出することができる。例えば、加速度センサ2811は、3つの座標軸における重力加速度の成分を検出するために使用できる。プロセッサ2801は、加速度センサ2811により収集された重力加速度信号に基づき、タッチディスプレイ2805を制御して、横長ビューまたは縦長ビューでユーザーインターフェイスを表示することができる。加速度センサ2811は、ゲームまたはユーザの動きのデータを収集するためにも使用できる。
【0226】
ジャイロセンサ2812は、電子機器2800の身体方向及び回転角度を検出することができる。ジャイロセンサ2812は、加速度センサ2811と協働して、ユーザによる電子機器2800への3D動作を収集してもよい。プロセッサ2801は、ジャイロセンサ2812により収集されたデータに基づき、モーションセンシング(例えば、ユーザの傾き操作に基づきUIを変更する)、撮影時の画像安定、ゲーム制御及び慣性ナビゲーションなどの機能を実現できる。
【0227】
圧力センサ2813は、電子機器2800のサイドフレーム及び/又はタッチディスプレイ2805の下層に設置されてもよい。圧力センサ2813が電子機器2800のサイドフレームに設置されている場合、ユーザによる電子機器2800への把持信号を検出することができ、プロセッサ2801は、圧力センサ2813により収集された把持信号に基づき、左右の手認識または迅速な操作を行うことができる。圧力センサ2813がタッチディスプレイ2805の下層に設置される場合、プロセッサ2801は、タッチディスプレイ2805に対するユーザの圧力操作に基づき、UIインターフェイスにおける操作性コントロールを制御する。操作性コントロールは、ボタンコントロール、スクロールバーコントロール、アイコンコントロール、メニューコントロールの少なくとも1つを含む。
【0228】
指紋センサ2814は、ユーザの指紋を収集するために使用され、プロセッサ2801が、指紋センサ2814により収集された指紋に基づいてユーザの身元を認識するか、または、指紋センサ2814が、収集された指紋に基づいてユーザの身元を認識するために使用される。ユーザの身元が信頼できる身元として認識される場合、プロセッサ2801は、画面のロック解除、暗号化された情報の表示、ソフトウェアのダウンロード、支払い及び設定の変更など、関連する機密操作を実行することをユーザーに許可する。指紋センサ2814は、電子機器2800の正面、背面または側面に設置されてもよい。物理的なボタンまたは製造業者のロゴが電子機器2800に設置されている場合、指紋センサ2814は、物理的なボタンまたは製造業者のロゴと統合されることができる。
【0229】
光学センサ2815は、環境光強度を収集するために使用される。一実施例では、プロセッサ2801は、光学センサ2815により収集された環境光強度に応じて、タッチディスプレイ2805のディスプレイ輝度を制御してもよい。具体的には、環境光強度が高い場合、タッチディスプレイ2805の表示輝度を上げ、環境光強度が低い場合、タッチディスプレイ2805の表示輝度を下げる。別の実施例では、プロセッサ2801は、光学センサ2815により収集された環境光強度に応じて、カメラコンポーネント2806の撮影パラメータを動的に調整することができる。
【0230】
距離センサとも呼ばれる近接センサ2816は、通常、電子機器2800のフロントパネルに設置される。近接センサ2816は、ユーザと電子機器2800の正面との間の距離を収集するために使用される。一実施例では、近接センサ2816がユーザと電子機器2800の正面との間の距離が徐々に小さくなっていることを検出すると、プロセッサ2801はタッチディスプレイ2805を制御してスクリーンオン状態からスクリーンオフ状態に切り替える。近接センサ2816がユーザと電子機器2800の正面の間の距離が徐々に大きくなっていることを検出すると、プロセッサ2801はタッチディスプレイ2805を制御してスクリーンオフ状態からスクリーンオン状態に切り替える。
【0231】
当業者は、
図28に示す構造が電子機器2800に対する制限を構成せず、図示よりも多いまたは少ないコンポーネントを含むか、いくつかのコンポーネントを組み合わせるか、または異なるコンポーネント配置を使用することを理解できる。
【0232】
当業者は、上記実施例を実現するためのステップの全てまたは一部は、ハードウェアによって完了されてもよく、関連するハードウェアを命令するプログラムによって完了されてもよいことを理解できる。前記のプログラムは、読み取り専用メモリ、磁気ディスクまたは光ディスクなどであり得るコンピュータ可読記憶媒体に記憶されてもよい。
【0233】
上記は、本出願の好ましい実施例に過ぎず、本出願を限定することを意図していない。本出願の精神及び原理の範囲内で行われた任意の変更、同等の置換、改良などは、いずれも本出願の保護範囲に含まれるべきである。
【符号の説明】
【0234】
300 電子機器
320 オペレーティングシステム
322 アプリケーションプログラム
400 コンピュータシステム
420 第1のデバイス
440 サーバ
460 第2のデバイス
71 サンプリング点
72 点
73 傾斜面
74 法線
95 円弧面
96 点
97 接平面
98 法線
111 ユーザーインターフェイス
131 中心点
134 前部サンプリング点
135 後部サンプリング点
136 法線
141 ユーザーインターフェイス
142 中心点
143 前部サンプリング点
144 後部サンプリング点
145 点
146 点
151 ユーザーインターフェイス