電話はどのようにしてメタバースに入ったのですか? (Android と UE4 テクノロジの組み合わせ)

最近はメタバースという概念が流行っていますが、最新技術を追い続けるブロガーとしてフォローも必要ではないでしょうか。もちろん!

しかし、VR、AR、AI、NFT、モノのインターネット、5G など、メタバースに関連する技術は数多くありますが、どこから始めればよいのでしょうか。

最近、私は携帯電話の銃ゲームを作ることについて友人と話していました:

  1. 携帯電話はジャイロスコープ情報を取得し、銃をリアルタイムで制御し、画面に触れて射撃します
  2. AI身体認識または顔認識と組み合わせて、人体の動きを追跡し、弾丸を回避します
  3. ローカルエリアネットワークにオンライン機能をプラス

このようにして、体性感覚シューティングバトルゲームを実現することができる。

これまでのところ、最初のステップは達成されています。

そのとき初めて、携帯電話が VR メガネの 3DOF を備えたハンドルであることがわかりました.VR メガネのハンドルは、プレーヤーの手を通してレーザー光を発し、3 次元のインターフェースまたはオブジェクトとのタッチと相互作用を実現できます。現在、携帯電話もこの機能を完全に実現しており、携帯電話の 3 次元モデル (または銃などの任意のモデル) を仮想世界で回転するように制御しています。

別の言い方をすれば:手机进入了元宇宙!

方法は次のとおりです。手順は次のとおりです。

  • 電話のローテーション情報を取得する
  • コマンドは 3D ワールドに送信されます
  • 軸換算
  • 角度の初期化

1. 携帯電話の回転データを取得する

Android 携帯電話は、SensorManager を介して携帯電話の回転データを直接取得できます.たとえば、次のコードで取得される回転子は、携帯電話の回転のクォータニオン データです。

private SensorManager sensorManager;
private Sensor rotationSensor = null;
public static float[] rotator = new float[4];

void init(){
	sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
	rotationSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
}

@Override
protected void onResume() {
    super.onResume();
    sensorManager.registerListener(this, rotationSensor, SensorManager.SENSOR_DELAY_GAME);
}

@Override
protected void onPause() {
    super.onPause();
    sensorManager.unregisterListener(this);
}

@Override
public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
        rotator = event.values;
	    // Log.i("dv", String.format("%.2f,%.2f,%.2f,%.2f",rotator[0],rotator[1],rotator[2],rotator[3]));
    }
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

2. データを 3D ワールドに送信する

携帯電話の回転データを取得したら、ここでは詳しく説明しませんが、LAN のソケットを介して 3D プログラム (Unity や UE4 など) にデータを転送します。

3. 軸換算

携帯電話の回転データ取得後、Android端末の回転座標軸と3Dソフトの座標軸が一致しない場合があるため、必要に応じて座標軸を変換する必要があります。

4. 角度の初期化

携帯電話の回転角度は、ジャイロスコープ、加速度センサー、地磁気センサーなどからデータを取得して計算され、最終的に計算されたデータは、現実世界の東西南北方向に関連付けられます。携帯電話をテーブルの上に平らに置いたとき、携帯電話の正面が真北を向き、このときの携帯電話の垂直軸の回転角度は 0 です。

しかし、私たちのコンピューターの画面は北を向いているだけではなく、携帯電話が画面を指しているときに垂直軸を 0 に回転させる必要があることが多く、これはロジックを書くのにより便利です。この時点で、単純な角度の初期化が必要です。

初期化の方法は非常に簡単で、携帯電話を画面に向けた状態で、このときの角度を記録し、今後角度を取得するたびにオフセット値を減算します。

5. どうすればプレイできますか?

  • ゲームパッドとして

追加予定

  • コントロールシューター

【メタバースの扉を開けて】携帯電話を銃にしてシューティングゲーム

関連するソースアドレス:
https://mianbaoduo.com/o/bread/mbd-YpaVk55t

おすすめ

転載: blog.csdn.net/killfunst/article/details/122017826