Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

【クソデカ】Unityの限界までScaleを大きくし続ける【Unity】

今回はUnity自由研究をやっていきます。

 

Twitterなどでクソデカ羅生門というものが流行っていますね。
私もクソデカユニティちゃんなどを作ってキャッキャしていたわけですが、
ふと、どんどんScaleを大きくしていったらどうなるのか試してみたくなりました。

f:id:Raspberly:20200613173422p:plain

そこで今回は、宇宙規模までScaleをどんどん大きくしていく実験をしてみます。

 

追記:うお座くじら座銀河団Complexの直径を修正しました。
追記:プレアデス星団の画像を修正しました。

 

開発環境

Unity 2019.4.0f1

 

事前準備と注意事項

Unityでのメートル

Unityでは、Scale1のCube一辺が1メートルになるようできています。
つまり、Scale(10, 10, 10)のCubeなら一辺が10メートルということですね。

f:id:Raspberly:20200613175000p:plain

 

 

巨大なオブジェクトがGameビューに描画されない時の対処法

Unityには描画範囲が設定されており、この範囲外のオブジェクトなど描画されないようになっています。
この描画範囲はCameraから変更できます。
CameraのClipping PlanesFarが最大描画距離です。

f:id:Raspberly:20200613192559p:plain

デフォルトだと1000以降のオブジェクトは描画されないのでここの値を大きくするといいでしょう。

巨大なオブジェクトがSceneビューに描画されない時の対処法

Sceneビューに映らない時も同様で、Cameraの設定を変える必要があります。
Sceneビュー上のカメラのマークがついたボタンを押し、SceneCameraの編集ビューから値を変えます。
この時DynamicClippingにチェックが入っていると編集できないのでチェックを外しておきましょう。

f:id:Raspberly:20200613194156p:plain

 

各惑星、星団などの直径について

Googleで「"惑星or星団名 直径"」で検索して出たものを使っています。
もしかしたら違うものが混じっていたりするかもしれません。
その際はコメントまでよろしくお願いします。

 

 

クソデカユニティちゃんを作る

 最初はクソデカユニティちゃんを作ってみます。
デフォルトのSDユニティちゃんをキューブとかぶせるとこんな感じです。
大体高さ1メートルですね(カチューシャは含めない)

f:id:Raspberly:20200613175252p:plain
ではユニティちゃんのScaleを(1000000, 1000000, 1000000)にしてみます。

f:id:Raspberly:20200614204503p:plain
全長100万メートルのユニティちゃんの登場です。

f:id:Raspberly:20200613201508g:plain

比較対象がいなくともかなりスケール感が狂いますね。

 

 

 

 

宇宙を作る事前準備

ここから先は細かく大きさを変えてもきりがないので壮大にいきます。
その前に白いCubeやSpeherだと味気ないので、素材を追加します。
 

宇宙を作るのでSkyboxはこちらのアセットを使います。
SkyですがSpaceも含まれているアセットです。宇宙は空にある

 

地球なども作るのでこちらのアセットもいれておきます。 

 

 

 

それではやっていきましょう!

(脳内BGM ~グレンラガンの例の曲~)

 

 

太陽系を作る

地球を作る

宇宙創生の最初は我らが母星地球を作ります。
地球は直径12742000mです。

f:id:Raspberly:20200613202238p:plain

先ほどインポートしたアセットでいい感じになりました。

f:id:Raspberly:20200613201718p:plain

さきほどのクソデカユニティちゃん(100万m)を乗せるとこんな感じ。巨大綾波

f:id:Raspberly:20200613202030p:plain

 

月を作る

せっかくなので月も作ります。
月は直径3474200mです。

f:id:Raspberly:20200613203442p:plain

地球と並べるとこんな感じ、結構大きい。

f:id:Raspberly:20200613203623g:plain

 

地球-月の距離を離す

地球と月があるので現実と同じ尺度で再現してみます。
地球と月の距離は384400000mです。

f:id:Raspberly:20200613204106p:plain

何か警告が出てますね。浮動小数点の精度の関係上ワールド座標を小さくした方がいいとのこと。


実際に配置するとこんな感じ、意外と近い?いや遠い?

f:id:Raspberly:20200613204739g:plain

 

 

太陽を作る

太陽系の恒星、太陽を作ります。
太陽の直径は1392700000mです。

f:id:Raspberly:20200613205444p:plain

デカァァァァァいッ説明不要!!
大きさは地球の約109倍、質量約33万倍は伊達じゃないですね。

f:id:Raspberly:20200613205907g:plain

地球と太陽の距離は149600000000mですので、こちらも間隔を調整してみます。

f:id:Raspberly:20200613210109p:plain

こんなちっちゃくなるのか。

f:id:Raspberly:20200613210446p:plain

 

ちなみにこのあたりからギズモ(XYZ軸の矢印がついたアレ)が表示されなくなります。

 

他の太陽系惑星を作る

水星

直径は4879400mです。

f:id:Raspberly:20200613212125p:plain

金星

直径は12104000mです。

f:id:Raspberly:20200613212152p:plain

火星

直径は6779000mです。

f:id:Raspberly:20200613212223p:plain

木星

直径は139820000mです。

f:id:Raspberly:20200613212256p:plain

土星

直径は116460000mです。

f:id:Raspberly:20200613212320p:plain

天王星

直径は50724000mです。

f:id:Raspberly:20200613212352p:plain

海王星

直径は49244000mです。

f:id:Raspberly:20200613212441p:plain

惑星直列をやってみました。なかなか壮大ですね。水金地火木土天海m(ry
ちなみに惑星間の距離も現実に合わせて配置してみましたが、画面に全く収まらず小さすぎて見えないのでボツ

f:id:Raspberly:20200613214710g:plain

 

 

宇宙を作る

一光年を作る

天文学で使われる単位一光年を作っていきます。
年がついているので時間だと勘違いされがちですが、光が一年かけて進む距離を示します。
メートル換算で9.461e+15mとなります。ここはCubeを使っていきます。
※「e+〇〇」についてはこちら

f:id:Raspberly:20200613213842p:plain

一辺一光年のCubeの完成です。描画されましたがLightの影響を受けなくなりました。
Lightがレンダリングされるまで1年かかるのだろうか。

f:id:Raspberly:20200613214057p:plain

Sceneビューがおかしくなる

一光年に合わせてCameraの設定も変えていますが、なんだかブツブツとおかしくなっています。

f:id:Raspberly:20200613214541p:plain

f:id:Raspberly:20200613220211g:plain

なんだか不穏な空気がしますがUnityは動いているので続行します。

 

プレアデス星団を作る

肉眼でも見える散開星団です。日本では「すばる」といいますね。
直径は35光年、メートル換算で3.311e+17mとなります。
こちらもCubeで作ります。

f:id:Raspberly:20200614204626p:plain

一光年Cubeからカメラを引いて比較してみます。ちょうど35個分ですね。

f:id:Raspberly:20200613231739g:plain



ω星団を作る

最大の球状星団です。NGC 5139ともいいますね
直径は172光年、メートル換算で1.627e+18mとなります。
ここからはSphereで作っていきます。

f:id:Raspberly:20200613231436p:plain

プレアデス星団Cubeと比べると大体5倍くらいの大きさ。

f:id:Raspberly:20200613230919p:plain

 

NGC 604を作る

さんかく座銀河のHII領域で局部銀河系で最も大きいものです。
直径は1520光年、メートル換算で1.438e+19mとなります。

f:id:Raspberly:20200613232220p:plain

ω星団と比べるとこんな感じ

f:id:Raspberly:20200613232157p:plain

 

天の川銀河を作る

天の川銀河(単に銀河系とも)は太陽系を含む銀河のことを指します。
直径は105700光年、メートル換算で9.999992e+20mとなります。

f:id:Raspberly:20200613232648p:plain

NGC 609と比べるとこんな感じ

f:id:Raspberly:20200613232536p:plain

 

 

アンドロメダ銀河を作る

アンドロメダ銀河は太陽系を含む渦巻銀河です。
直径は220000光年、メートル換算で2.081361e+21mとなります。

f:id:Raspberly:20200613221836p:plain

 大きさ的には天の川銀河の約2倍です。

f:id:Raspberly:20200613232816p:plain



IC 1101を作る

観測されている銀河で最大のものです。
直径は3913900光年、メートル換算で3.7028353e+22mとなります。

f:id:Raspberly:20200613233238p:plain

アンドロメダ銀河と比べるとこんな感じ

f:id:Raspberly:20200613233202p:plain

 

 

おとめ座銀河団

天の川銀河アンドロメダ銀河など銀河群を含む超銀河団です。
直径は15000000光年、メートル換算で1.41910957e+23mとなります。

f:id:Raspberly:20200613233749p:plain

IC 1101と比べるとこんな感じ

f:id:Raspberly:20200613233716p:plain

 

 

うお座くじら座銀河団Complexを作る

銀河団、銀河フィラメントの複合体で、おとめ座銀河団を含んでいます。
長さ約10億光年幅約1.5億光年と推定されているらしい。(Wikipedia)
メートル換算で9.460730473e+24m1.419109571e+24mとなります。
厚さは調べてもよくわからなかったのでそのまま。

f:id:Raspberly:20200614000046p:plain

見づらいので白色にしました。
おとめ座銀河団と比べるとこんな感じ、手前にある小さい点がおとめ座銀河団

f:id:Raspberly:20200614021845p:plain



 

 

天元突破ユニティちゃんを作る

天元突破グレンラガンと同じ大きさのユニティちゃんを作ります。
全長約52.8億光年です。メートル換算で4.9952656895e+25mとなります。

f:id:Raspberly:20200614000715p:plain

踏んでいる白いのがうお座くじら座銀河団Complexです。
ユニティちゃんはプリミティブなCubeやSphereと違いちゃんとLightの影響を受けていますね。

f:id:Raspberly:20200614021730p:plain



 

 

観測可能な宇宙を作る

諸説あるようですが、ここでは可視宇宙の球体のことを指します。
直径約930億光年です。メートル換算で8.7984793395e+26mとなります。

f:id:Raspberly:20200614001947p:plain

天元突破ユニティちゃんと比べるとこんな感じ

f:id:Raspberly:20200614002152p:plain

f:id:Raspberly:20200614024457g:plain


 

 

天元突破ユニティちゃんを作る

天元突破グレンラガンと同じ大きさのユニティちゃんを作ります。
全長約1500億光年、メートル換算で1.419109570887e+27mです。

f:id:Raspberly:20200614002520p:plain

観測可能な宇宙と比べるとこんな感じ

f:id:Raspberly:20200614024155p:plain

f:id:Raspberly:20200614021016g:plain

この大きさでもアニメーションは破綻することなく再生できました。
歩くだけでその辺の銀河を滅ぼしそう。

f:id:Raspberly:20200614010643g:plain

巨大な物で思い当たるのはこれが最後ですね。
正直ここまでUnityが動くなんて思ってませんでした。その気になれば宇宙まで作れる!

 

 

浮動小数点の限界

最後に、理論上は浮動小数点の限界3.402823e+38まではいけると思うのでやってみました。

f:id:Raspberly:20200614003347p:plain

しかし何も表示されませんでした。どうやらこのあたりが限界のようです。
ちなみにこれ以上大きい値を入力しても強制的に3.402823e+38に戻されます

 

 

 

 

Unityの異変

宇宙を作っていく過程でSceneビューにいろいろ異変が起きていました。

Sceneビューが真っ白になり反応しなくなったり、Gameビューは真っ黒になったり。

f:id:Raspberly:20200613171433p:plain

f:id:Raspberly:20200613171537p:plain

動作がガクガクになったりなど。

f:id:Raspberly:20200614011041g:plain

f:id:Raspberly:20200621224626g:plain

これらの異変は、SceneビューをいったんClose Tabし新しくAdd Tabすると解決します。


コンソールを見てみるとたくさんエラーがでていました。
どうやらオブジェクトが大きすぎるとこうなるようです。

f:id:Raspberly:20200614010303p:plain

 

 

 

まとめ

・超天元突破ユニティちゃん(全長1500億光年)までは表示を確認できた
・SceneビューやGameビュー、ギズモが正常に動かなくなる
・理論上は3.402823e+38までいけるはず
宇宙ヤバイ

 

 

完全にネタ記事でしたが最後まで見ていただきありがとうございます。

もしやこの世界もUnityでできているのでは・・・? 

 

 

 

参考資料

地球から太陽までは、何光年ですか?│太陽│宇宙科学研究所キッズサイト「ウチューンズ」

ロボットの大きさ比較用全高データまとめ:ブレイクザウィットネス - ブロマガ

1e5、1e-6、1E+9などの数値の意味と注意点 - 具体例で学ぶ数学

honcierge.jp

ninagreen.hatenablog.com

www.scriptlife.jp