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

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

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

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

0回答

2905閲覧

360°全天球の画像を球体に貼り付けた際、画像が反転されて適用されてしまいます。

micro_1357

総合スコア7

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

0クリップ

投稿2016/11/26 16:17

編集2022/01/12 10:55

Unityにてsphereを作成し、360°の画像を貼り付けた際に、景色が(カメラの撮影者から見て)左右反転された状態で表示されてしまいます。
また、作成している物の都合で、スクリプトによって球体へ他の画像を貼り付ける処理を繰り返し行っているのですが、各々の画像が適用される際に、方向がランダム(水平方向に限る)に適用されてしまいます。

イメージ説明イメージ説明

「水平方向に全く違う方向を向いてしまう」というのは、上の画像のように画像を平面にした状態で画像の中心部を正面方向として、球体に貼り付けた際に複数の画像全てを同じ方向に適用させたい、という意味です。
現状では上の画像の赤線が引いてある部分が正面部分に適用されてしまっています。

・左右反転状態を画像編集ではなくUnity上で解除する方法
・水平方向の画像方向の固定方法
をご教授頂きたいです。

拙い説明になり申し訳ありません。補足説明が必要であればお答えします。
ご協力頂けると幸いです。よろしくお願いいたします。

使用しているスクリプトと解説

spaceキーが押されると球体オブジェクトの中のカメラが前進し、一定の位置まで達するとカメラが原点まで戻り、同時に球体オブジェクトに貼り付けられている画像がprefabにある画像と置き換わるというものです。
イメージ説明
※球体を真上から見た画像と右下のカメラ視点の画像。

C#

1public class mvcam : MonoBehaviour 2{ 3 private GameObject ball_start = null; 4 private GameObject ball1 = null; 5 private GameObject ball2 = null; 6 private GameObject ball3 = null; 7 private GameObject ball4 = null; 8 private int count = 0; 9 private int file_namber = 2; 10 public GameObject source; //インスタンスの中継役にする変数 11 public Vector3 pos = new Vector3(-11, 0, 0); 12 GameObject[] views; 13 GameObject[] ball; 14 void Start() 15 { 16 ball_start = GameObject.Find("view_start"); //スタートをprefabのインスタンスにするとバグる 17 source = (GameObject)Resources.Load("Prefabs/view_start"); 18 ball1 = (GameObject)Instantiate(source); 19 ball1.SetActive(false); //ここまでをコピーして使う 20 21 source = (GameObject)Resources.Load("Prefabs/view" + file_namber); 22 ball2 = (GameObject)Instantiate(source); 23 ball2.SetActive(false); 24 25 source = (GameObject)Resources.Load("Prefabs/view3"); 26 ball3 = (GameObject)Instantiate(source); 27 ball3.SetActive(false); 28 29 source = (GameObject)Resources.Load("Prefabs/view3"); 30 ball3 = (GameObject)Instantiate(source); 31 ball3.SetActive(false); 32 33 source = (GameObject)Resources.Load("Prefabs/view4"); 34 ball4 = (GameObject)Instantiate(source); 35 ball4.SetActive(false); 36 37 38 views = new GameObject[] { ball1, ball2, ball4, ball4 }; 39 } 40 void Update() 41 { 42 if (Input.GetKeyDown(KeyCode.Space) && pos.z < 300) 43 { 44 pos.z += 30; 45 transform.position = pos; 46 //print(transform.position.z); 47 } 48 else if (Input.GetKeyDown(KeyCode.Space) && pos.z >= 300) 49 { 50 pos.z = 0; 51 transform.position = pos; 52 print(count); 53 54 if (count == 0) 55 { //最初だけprefabじゃないからここで消しとく 56 ball_start.SetActive(false); 57 } 58 views[count].SetActive(false); 59 count += 1; 60 views[count].SetActive(true); 61 } 62 } 63}

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

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

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

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

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

MasahikoHirata

2016/11/27 03:25

ソースが開示されていないので説明しにくいのですが。’GL.invertCulling = ture;’や’GL.invertCulling = false;’をググってみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問