質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

5117閲覧

現実世界の動きや距離感をUnity内の世界で実現する。

退会済みユーザー

退会済みユーザー

総合スコア0

GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2017/12/03 05:15

位置情報を使用したARアプリ

Unity,C#,Android(7.0)で位置情報ARを作成しています。ARはUnity2017のVuforia内のARCameraを使っています。

マーカー機能は使用していません。デバイストラッキングだけしています。

アプリの内容。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
1.アプリ起動

2.UnityのLocationServiceで緯度、経度を所得(標高は今後実装予定です)

3.ターゲット(Unity内におくオブジェクト)の位置情報(GoogleMapでの中心座標)と開始位置の緯度経度の差を
計算し、得られた値(例 x:50 y:0 z:-24)xは経度(東へ50m)zは緯度(南へ24m)をtransform.positionに代入する。オブジェクトのスケールはGoogleMapで図った長さを代入している。
このアプリでは北を緯度の正方向、東を経度の正方向としています。またアプリ開始時は必ず北の方角へ端末のカメラを向けて起動する。

4.端末の位置情報を取り続けて、開始地点からの移動量を3.と同じ方法で計算し続けARCameraのtransform.positionへ代入する。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

最終目標は、現実世界の移動量や建物をUnityに反映させたいのですが、やはりそれは不可能でしょうか?

例えば東京タワーから50mの位置でアプリを起動したら、東京タワーに東京タワーのオブジェクトが重なるような感じです。人からこのような機能を実装してほしいといわれていますが、Unity内の距離感やオブジェクトの大きさを現実世界に完全に対応させるのは無理なのではないかと思っています。

もう少し単純化すると、5m先に1m×1m×1mの箱を置いてそれにカメラを向けてこのアプリを起動したら同じ位置に1m1m1mのCubeを出すといった感じです。近づけば大きく見える。離れれば小さく見える。

Unity内の1m×1m×1mを現実世界の1m×1m×1mに変換しようとする方法はありますか?それができれば距離も大きさもX倍したら
現実世界に対応付けられそうです。
Unity内でscale(x,y,z) = (50,50,50)のFBXモデルをいれても現実世界の50mには見えませんよね。それと一緒です。なので上述3.でオブジェクトを東へ50m、南へ24mにポジションしても建物はすぐそばにあるように見えます。

質問をかいていてやはり不可能だろうとうすうす思ってはいますが、何か良い方法があれば教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

位置と大きさを合わせることは理論上は可能です。
ですが「全く同じように見えるか」と言ったら別な話になります。

まず、ヒエラルキー上で右クリック→3D Object→Cube で生成したオブジェクトの大きさが「1m×1m×1m」とUnityでは定められています。
また、「TransformのPositionにおける1=1m」です。(Position(1,0,0)は「原点からX+方向へ1m地点」となります)

FBXモデルは、モデルの作成時とインポート設定でScaleが決定される為、TransformのScaleが(50,50,50)でも本当に50mにはなるとは限りません。
(例えばモデル作成時のサイズが10m、インポート設定が0.01、Scaleが50なら 10×0.01×50=5m になります)
前述の方法で作ったCubeのScaleを(50,50,50)にして、それと同じサイズになるよう調整すれば50mのオブジェクトになります。

こうやって、現実世界のスケールをUnity内に落とし込んだとしても、
「見た目」の話をするならばカメラ設定(位置、角度、FieldOfViewの値など)や比較対象の有無によっても変わります(地上に近い月は大きく見えるのと同じ)。
負荷を考慮する必要も出て来るでしょうし、調整項目は多いのではないかと思います。

投稿2017/12/03 05:46

sakura_hana

総合スコア11427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問