宇宙エンジン-あなたの手のひらの中の宇宙

神よ、星だらけです!
アーサー・C・クラーク



子供時代、私たちの何人が、ピカール艦長のように遠い世界の未知の惑星を散歩し、二重星や三重星の夜明けに出会い、ガスの巨人の雰囲気に浸り、船をブラックホールに落とすなど、「宇宙の広がりを耕す」ことを夢見ていませんでしたか? そして私も例外ではありません。 もちろん、この夢の一部は、本、映画、「エリート」ゲームによって具現化されました。 しかし、それらのすべてのロマンスは、第一次世界大戦の時代の飛行機の速度で、「液体」スペースでのありふれた売買によって「ピ・ピウ」によって破壊されました。 そして、これらの数少ない仮想世界には、現実の宇宙の自由、詳細、規模が欠けていました。



ミレニアムの初めに、私はMojoWorldに出会い、その能力にショックを受けました。 最後に、他の惑星をさまよい、地元の観光名所を撮影することができました。 彼は本格的な宇宙の世界が技術的に可能であるという希望を与えた最初の兆候になりました。 しかし、残念なことに、10年前の鉄の性能は、すべての美しさをリアルタイムで伝えるには不十分でした。 そして、惑星はただ死んだ風景のままでした。



しかし、今、一年ちょっと前、私は偶然に宇宙エンジンの宇宙に偶然出会った。それはちょうど私の脳を吹き飛ばし、そのスケールと信じられないほどの詳細で床に塗りつけた。





それはすべてどのように見えますか?



あなたの目を引く最初のものは、私たちの宇宙の本当の次元です。 何千億もの銀河と、それらのそれぞれにある何千億もの星とは何ですか? -天文学の教科書にある乾燥した数字。 しかし、ここでは、これはすべて自分の肌で感じられます。 そして、あなたは、宇宙の規模と不可解性と比較して、私たちの人類がそのすべてのささいな問題とネズミ戦争でどれほど取るに足りないかを理解し始めます。 いいえ、私たちは砂粒ではなく、ほこりでさえありません。 そして、明日突然太陽が消え、別の文明が遺産を残さずに忘却に沈んでも、誰も気付かないでしょう。



さらに、絶対的な移動の自由は驚くべきものです。 惑星、軌道、星、銀河の表面間のシームレスな移行により、どこでも飛行できます。





はい、これは「宇宙を横断する」スクリーンセーバーではありません。ここでは、通過するすべての星を訪れ、その惑星、衛星、小惑星をさまようことができます。



もちろん、他の自尊心のあるプラネタリウム(たとえば、最近言及されたCelestia)のように、スペースエンジンでは、宇宙体の軌道とその詳細情報、時間管理、およびさまざまな日食(惑星の輪からを含む)が表示されます。プラネタリウムプロジェクターの魚眼投影でレンダリングする機能。 しかし、最も重要なことは、HIPPARCOS星とNGC / IC銀河(これらも存在します)のカタログに限定されず、そこにあるすべての種類のオブジェクトを含む観測可能な宇宙全体を生成することです。 しかし、同時に科学データと関連する理論とモデルのみに基づいているため、Space Engineを天文学の完全な(そして非常に美しい)マニュアルとして使用できます。



ここでは、宇宙のパックマンを自分の目で見ることができます。 実際には、これは青い超巨人の背景に重力レンズを備えたブラックホールです。





ダブルスターの台頭をご覧ください(8倍のスターもあります):





近隣の銀河、星雲、星団ではない場所を訪れてください。 赤い巨人、中性子星などがどのように見えるかを調べてください。 私はあまり甘やかしません、いくつかの写真を残してください。























ところで、あなたは常に星の側のいずれかに直面している惑星のように見えると思いますか? 潮dalに同期した(呼び出されることが判明した)砂漠をご覧ください。 一方では、夜と永久凍土、他方では、星と焦げない巨大なスーパーサイクロンで焦げた表面。





Celestiaの場合と同様に、太陽系の惑星とその衛星の一部のテクスチャの高解像度のスペースエンジンに公式の追加をダウンロードできます。 したがって、たとえば、基本パッケージは500 MBの「重量」であり、すべてのアドオンの合計サイズは約10 GBです。



他に何が欠けていますか?



残念ながら、もっとたくさん。 Spaceは、Space Engineに既に実装されているすべてのものよりもはるかに多様で驚くべきものですが、各バージョンでは、著者は現実の一部を自分の宇宙に慎重に移しています。 たとえば、ブラックホールと青い巨人の写真では、完全な幸福のために、十分な降着円盤とジェットがまだ計画にありません。 また、彗星の尾、クエーサー、惑星のリングにある個々の石、そして宇宙をさらに完全で正確で美しいものにする他の多くの詳細についての計画があります。 したがって、まだ多くの作業があります。



他に何ができますか?



現時点では、このプログラムは無料のインタラクティブなプラネタリウムであり、宇宙シミュレーターが始まります(つまり、シャトルを惑星の表面上で飛ばし、船をブラックホールに落とすことができます)。







将来、同じエンジンに基づいて、宇宙探査、アーティファクトの検索、惑星、小惑星またはガス巨人の軌道上のコロニーと基地の建設と開発に焦点を当てたMMOゲームを開発する予定です。 テレポーテーションなし、「液体」スペース、ハリウッド「ピウピウ」。 はい、そしてそのような巨大な宇宙で何を共有するのですか?



惑星と星の間を飛行するには、少なくとも天文学の基礎、天体の軌道、第1、第2、第3の宇宙速度、特性速度、特定のインパルス、および実際の宇宙旅行の他の属性を覚えておく必要があります。 また、居住システムに戻ることができずに宇宙空間に「突然」とどまらないように、燃料消費量と反作用質量を監視する必要があります(はい、これらは異なる可能性があります)。 ケルバル宇宙計画のように、船の設計者も計画されており、主要な動的特性と構造の強度と安定性を計算します。 唯一の「素晴らしい」仮定は、超軽量飛行を提供するハイパードライブです。 それなしでは、IMOは不可能になります。



これはどのように可能ですか?



Space Engineユニバースは、サンクトペテルブルクの同胞であるVladimir RomaniukSpaceEngineer )によってほぼ1人で作成されました。 彼は教育と職業の天文学者なので、シミュレートされたすべてのオブジェクトとプロセスの科学的信頼性を確信できます。 彼のプログラムを取り巻くコミュニティは、銀河、星、太陽系外惑星がほぼ毎日開かれているため、それらのカタログを最新の状態に保つのに役立ちます。 ファンは宇宙を埋めるために、船、シャトル、その他の小さなもののモデルも作成します。



作成者は自分の世界の技術的な要素から秘密を作らず、彼の発見をフォーラムのメンバーと共有します。 エンジンの実装のために解決する必要があるいくつかの重要なポイントと問題をリストします。



座標


問題の1つは、宇宙内のオブジェクトの座標の表現でした。 浮動小数点数と密接に連携する人は、ゼロからの距離でどれだけ早く精度を失うかを知っています。 そして、宇宙の端にある数キロパーセクの精度はまったくありません。 したがって、64ビットの固定小数点数とオブジェクトの階層表現を使用して座標を保存します。 つまり、銀河の座標は絶対に、星は銀河の中心を基準に、惑星は星を基準として記述されます。 もちろん、レンダリング時には、すべてを浮動小数点数に変換する必要がありますが、カメラを基準とした座標への変換は整数で計算されます。 また、ユニバースのサイズを考慮に入れるのに十分なzバッファーの精度がないため、レンダリング自体はレイヤーで行われます。



星と銀河


2番目の問題は、星と銀河の生成です。 銀河には数千億の星があります。つまり、それらをすべて表示するには、テラバイトのデータを生成してレンダリングする必要があります。 もちろん、これはリアルタイムには適していません。 大丈夫、カメラまでの距離を制限し、少量の星のみを生成してレンダリングします。 しかし、ここでさらに2つの問題が発生します。 まず、アルゴリズムは決定論的である必要があります。つまり、星はランダムに作成されるという事実にもかかわらず、常に同じ場所に表示される必要があります。 さもなければ、私たちが星から離れて飛ぶならば、それは奇妙です、そして、その場所に空があります。 第二に、星は異なる明るさを持ち、異なる距離で見える。 薄茶色のd星はすぐに視界から消え、銀河のほぼ全域に明るい青色の巨人が見えます。 両方の問題を解決するために、八分木が使用され、そのノードは、このセル内の星の最大輝度だけでなく、基礎となるレベルを生成するシードを保存します。 同時に、より明るい星は、より低いレベルの星よりもはるかに小さいため、階層の上位レベルで生成されます。 したがって、星の生成は絶対的に決定的になり、木の根の種と銀河内の星の分布のテクスチャのみに依存します。 また、カメラからの任意の距離で、指定された制限可視輝度(距離と絶対輝度に依存)で星をすばやく生成することもできます。



銀河と星雲をレンダリングする技術は、体積雲のレンダリングに似ています。 つまり、これはスプライトのセットであり、加速のために、私たちがどこにいるかに応じて、詐欺師または空のボックスに変換されます:内側または外側。



惑星


モデリングの原理は、MojoWorldに似ています。 彼のアイデアは、OuterraやInfinityなどの手続き型惑星を含む多くのプロジェクトで取り上げられました。 どのように機能しますか? 通常の立方体を取り、各面をいくつかのセグメントに分割し、球体化します。つまり、まるで内側から膨らんでいるかのようです。 キューブトポロジのボールになります。 これにより、最大の効率と最小の歪みで正方形のテクスチャを使用できます。







ただし、キューブを均等にセグメントに分割するだけでは不十分です。 惑星は大きいため、地表からのフライトの詳細を最大限に生成することはできません(再び、テラバイトのデータが必要になります)。 LODが助けになります。 それらは次のように実装されます。 立方体の各面は、四分木のルートです。 各ツリーノードは、グリッドとテクスチャの解像度が固定された正方形です。 必要に応じて(カメラに近づくとき)、ノードは4つに分割され、詳細が2倍になります。 所定のポイントで必要な詳細に到達するまで続きます。







各ツリーノードの高さマップとテクスチャは、第3バージョンのピクセルシェーダーを使用してGPU上で完全に作成されます(したがって、それらをサポートしないビデオカードでSEを実行することはできません)。 生成アルゴリズムは、MojoWorldのクリエーターによる書籍「 テクスチャリングとモデリング:手続き的アプローチ 」で美しく説明されています。 つまり、PerlinとVorleyのほとんどの音、およびそれらのバリエーションとさまざまなフラクタル化方法に精通しています。 独立したアルゴリズムが、潮-に同期した惑星に大きなサイクロンを作成します。



しかし、純粋に手続き型の風景は通常、あまりにも人工的に見えます。 事実、大気のある惑星では大きな侵食を受け、山や谷の輪郭が大きく変化します。 残念ながら、従来の反復侵食アルゴリズムはLOD間でのスケーリングが非常に難しく、まだ実装されていません。 しかし、この現象をシミュレートするより単純な(位置)方法があります。 これらは記事で詳しく説明されている特殊なタイプのノイズです。 つまり、ランドスケープを生成するには、Perlinノイズだけでなく、その派生物も使用します。これにより、ランドスケープの各ポイントで勾配を構築し、浸出、または逆に、この勾配に沿ってベースノイズの座標をシフトすることで土壌の流入をシミュレートできます。 このアプローチにより、すでにかなり素敵な惑星を作成できます。







大気をシミュレートするために、異なる圧力と組成を持つ他の惑星に適応したエリックブルネトンの方法が使用されます。



結論の代わりに



すでに、スペースエンジンは、宇宙の豊かさと美しさのために、ほとんどのプラネタリウムと現実的な宇宙シミュレーター(Celestia、Stellarium、Orbiter)のベルトに滑り込んでいます。 そして、これは旅の始まりに過ぎません。 計画されたものの少なくとも半分が実現すれば、宇宙エンジンは私たちの宇宙の最も完全なモデルとなり、天文学の分野から人類に関するすべての現代の知識を集約します。 そして、作者がコードを閉じたままにすることを計画しているという事実にもかかわらず、誰もが既存のものの最大の仮想世界を作成するために実行可能な貢献をすることができます。



PS:プログラムSpaceEngineerの作者に感謝します。 もしあれば、彼はエンジンに関するいくつかの質問に答えることができると思います。



参照資料





All Articles