質問: unity 初心者の高校生です。 文化祭のため、学校全体をobjファイルで作ったのですが、untiyに出力すると、ひとつバグが生じてしまいます。具体的には2Fから3Fの床を見たときに、その床は実体として存在せず、空が見えてしまいますが、4Fから3Fを見た時には実体としてあり、その床を踏むことができるというバグです。 粗雑な説明で申し訳ありません。ぜひ、御助言お願い致します!! 添付しました画像は、マウスをちょっと進めると床が出現しますが、ちょっと下げると消滅することの説明です。。 ![![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/39480d7e82d14b3b2dc8c33cfb629e23.png) ![![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/3aa80f62ba2bb5a85d8e61007e9b8f4c.png)
回答: これはバグではありません。 他の方々が指摘されているように、3Dのポリゴンは一般的に片側からしか見えません。 ポリゴンというのは、3Dオブジェクトを構成する1つの面のことです。 面は多角形で構成され複数の点を結ぶ形式のデータ構造をしています。 その点を結ぶ順番がカメラから見て時計回りか、半時計回りかで、表なのか裏なのかを判別します。 表の場合表示し、裏の場合表示しません。 床を下から見上げたとき、裏面を見ていることになり表示されず透明になるというわけです。 **両面が見えるようにするための方法** (1)objデータを現実に合わせて修正 天井を作ってください。現実は教室の上を見上げると天井があるはずです。 そうすれば天井のポリゴンが視界を遮って空が見えなります。 この方法が最も正当な対応方法となります。 (2)objデータの床の部分を両面ポリゴンに修正 上記の(1)が難しい場合、簡易的な対応方法は床のポリゴンを両面ポリゴンにすることです。 両面ポリゴンとは、片側を向いているポリゴンにその反対向きのポリゴンを貼り合わせたものです。 両面ポリゴンにする方法は、3Dモデリングソフトによって異なります。 (3)Shaderを両面表示用に差し替える Unityは描画の最終工程としてShaderというプログラムを使用します。 おそらく、現在は Standard Shader を使っているのだと思いますが、これを両面表示のShaderに差し替えます。 上記で「3Dのポリゴンは一般的に片側からしか見えません。」と説明しましたが、例外があります。 標準で搭載されている Shaderの中にはポリゴンを両面で表示するものがあります。 例えば、Nature/Tree Soft Occlusion Leaves などです。 これは木の葉っぱ用の Shaderですが、木の葉っぱはほとんど厚みがないので簡易的に両面ポリゴンで表示することが多いからです。 床のポリゴンにこのShaderを適応させれば両面で表示されるようになります。 **Shaderを差し替える方法** Project ウィンドウで右クリックメニュー>Create>Material してマテリアル作成 作成されたマテリアルを選んだ時に表示されるInspecterでShaderを選択 マテリアルを床のオブジェクトに指定