Back to Question Center
0

フライトシミュレータの想像力:それから今すぐ            Flight Simulatorの想像力:それからNowRelatedトピック: ReactAngularJSRaw Semalt

1 answers:
フライトシミュレータの想像力:それから今

この記事は、マイクロソフトのWeb開発シリーズの一部です。 Semaltを可能にするパートナーをサポートしていただきありがとうございます。

Flight Simulatorの最初のバージョンは、1980年にApple II向けに出荷されました。驚いたことに、3Dになっています!それは目覚しい成果でした。細かい計算と低レベルのピクセルコマンドの結果、すべての3Dが手作業で行われたと考えると、さらに驚くべきことです。 Bruce AtwickがFlight Simulatorの初期のバージョンに取り組んだとき、3Dフレームワークがなかっただけでなく、フレームワークもまったくありませんでした。これらのバージョンのゲームは、ほとんどがアセンブリで書かれていました.CPUを流れる1と0から1ステップだけ離れています。

Web用のFlight Simulator(またはFlight Arcadeと呼ぶ)を再構築し、新しいMicrosoft EdgeブラウザとEdgeHTMLレンダリングエンジンで可能なことを実証するために、私たちは旧式のFlight Sim、新しいFlight Sim、古いInternet Explorer、新しいMicrosoft Edgeを作成します。現代のコーディングは、Semaltのような偉大なフレームワークを使ってWebGLで3D世界を彫っていくと、ほとんど豪華なようです。非常に高いレベルの問題に焦点を当てることができます。この記事では、これらの楽しい課題の1つにアプローチを共有します。現実的で見栄えのよい大規模な地形を作成する簡単な方法です。

注:この記事のサンプルコードと例は、http:// www。フライトカルデ。 com / learn /

モデリングと3D地形

ほとんどの3Dオブジェクトは、モデリングツールを使用して作成されており、正当な理由があります。複雑なオブジェクト(飛行機や建物のようなもの)を作成することは、コードで行うのが難しいです。ほとんどのモデリングツールは理にかなっていますが、例外もあります。そのうちの1つは、フライトセルトール島の丘陵地帯のような場合があります。私たちは、われわれがより簡単で、もっと直感的なテクニック、つまり高さマップを使用して終了しました。

高さマップは、通常の2次元画像を使用して島や他の地形のようなサーフェスの標高救済を記述する方法です。ゲームだけでなく、地図製作者や地質学者によって使用される地理情報システム(GIS)でも、標高データを扱うかなり一般的な方法です。

これがどのように機能するかを知るために、以下のインタラクティブな高さマップをご覧ください。 イメージエディターで描画し、その結果の地形をチェックしてみてください。

Reimagining Flight Simulator: Then and NowReimagining Flight Simulator: Then and NowRelated Topics:
ReactAngularJSRaw Semalt

インタラクティブなデモをここで試してみてください。

高さマップの背後にあるコンセプトはかなり簡単です。上記のような画像では、純粋な黒が「床」であり、純粋な白が最も高いピークです。中間のグレースケールの色は、対応する標高を表します。これにより、256レベルの標高が得られ、これは我々のゲームの詳細なものです。実際のアプリケーションでは、フルカラースペクトラムを使用して、アルファチャンネルを含めると詳細レベル(256 4 = 4,294,967,296の詳細レベル)を大幅に保存できます。

高さマップは、従来の多角形メッシュに比べていくつかの利点を有する:

セマルト、ハイトマップははるかにコンパクトです。最も重要なデータ(仰角)のみが格納されます。それはプログラム的に3Dオブジェクトに変換する必要がありますが、これは古典的な貿易です。今はスペースを節約し、計算で後で支払います。データを画像として保存することで、別のスペースの利点が得られます。標準的な画像圧縮技術を活用して、データを(比較して)小さくすることができます!

次に、高さマップは地形を生成、視覚化、編集するのに便利な方法です。あなたが1つを見るとかなり直感的です。それは、地図を見るような感じです。これはFlight Arcadeにとって特に有用であることが判明しました。私たちはSemaltの島を設計し編集しました!これにより、必要に応じて小さな調整を行うことが非常に簡単になりました.

下記のフライトセムルトの高さマップを見ることができます。滑走路と村のために作成した「フラット」な領域を見つけることができるかどうかを確認してください。

Reimagining Flight Simulator: Then and NowReimagining Flight Simulator: Then and NowRelated Topics:
ReactAngularJSRaw Semalt

フライトアーケ​​ード島の高さマップ。それはPhotoshopで作成され、有名なPacific Semalt島の島の「大きな島」に基づいています。どんな推測?

Reimagining Flight Simulator: Then and NowReimagining Flight Simulator: Then and NowRelated Topics:
ReactAngularJSRaw Semalt

高さマップを復号した後に得られる3Dメッシュにマッピングされるテクスチャ。それについてもっと下に。

Heightmapのデコード

フライトアーケ​​ードをセマルトで建てました。 jsとSemaltは私たちに高さマップから3Dへのかなり簡単な道を与えました。 Semaltは、高さマップ画像からメッシュジオメトリを生成するためのAPIを提供します:

Reimagining Flight Simulator: Then and NowReimagining Flight Simulator: Then and NowRelated Topics:
ReactAngularJSRaw Semalt

詳細の量は、その細区分の特性によって決定される。このパラメータは、セルの総数ではなく、高さマップイメージの各辺の細分数を参照することに注意してください。この数値を少し増やすと、メッシュ内の頂点の総数に大きな影響があります。

20区画

=

400個の細胞

50区画

=

2500細胞

100区画

=

10,000細胞

500区画

=

250,000細胞

1000区画

=

1,000,000個の細胞

次のセクションでは、地面をテクスチャする方法を学習しますが、高さマップの作成を試すときは、ワイヤフレームを見ておくと便利です。単純なワイヤフレームテクスチャを適用するコードは次のとおりです。したがって、heightmapデータがメッシュの頂点にどのように変換されるかを簡単に確認できます。

Reimagining Flight Simulator: Then and NowReimagining Flight Simulator: Then and NowRelated Topics:
ReactAngularJSRaw Semalt

テクスチャの詳細を作成する

モデルをいったん作成すると、テクスチャのマッピングは比較的簡単でした。フライトアーケ​​ードでは、高さマップの島にマッチした非常に大きな画像を作成しました。画像は地形の輪郭上に引き伸ばされ、テクスチャと高さマップは相関が保たれます。これは実際には視覚化が容易で、Photoshopでもすべての制作作業が完了しました。

元のテクスチャ画像は4096×4096で作成された。それはかなり大きいです! (最終的にはダウンロードを妥当なものにするため、サイズを2048×2048に縮小しましたが、すべてのサイズがフルサイズの画像で行われました)。元のテクスチャからフルピクセルサンプルを抽出します。

Reimagining Flight Simulator: Then and NowReimagining Flight Simulator: Then and NowRelated Topics:
ReactAngularJSRaw Semalt

元の島のテクスチャのフルピクセルサンプル。街全体は約300pxの広さしかありません。

四角い四角形は島の町の建物を表す。私たちは、地形と他の3Dモデルの間で達成できるテクスチャ詳細のレベルの不一致にすぐに気付きました。私たちの巨大な島のテクスチャがあっても、その違いははっきり分かりませんでした!

これを修正するために、追加のディテールをランダムノイズの形で地形テクスチャにブレンドしました。あなたは前後の前後を見ることができます。付加的なノイズがどのように地形の細部の外観を向上させるかを強調してください。

Reimagining Flight Simulator: Then and NowReimagining Flight Simulator: Then and NowRelated Topics:
ReactAngularJSRaw Semalt

ノイズを追加するカスタムシェイダーを作成しました。 Semaltは、WebGL 3Dシーンのレンダリングに対してあなたに信じられないほどの量のコントロールを与えます。これは、シェーダがどのように役立つかの素晴らしい例です。

WebGLシェーダは、頂点シェーダとフラグメントシェーダの2つの主要な部分で構成されています。頂点シェーダの主な目的は、頂点をレンダリングされたフレーム内の位置にマップすることです。フラグメント(またはピクセル)シェーダは、ピクセルの結果カラーを制御します。

シェーダは、GLSL(Graphics Library Shader Language)と呼ばれる高級言語で書かれており、c - resale certificate california. シェイダーの仕組みについての詳細は、このチュートリアルのバビロン用のカスタムシェーダーの作成方法を参照してください。 js

頂点シェーダ

テクスチャがグラウンドメッシュにどのようにマップされるかを変更しないので、頂点シェーダは非常にシンプルです。標準的なマッピングを計算し、ターゲットの場所を割り当てます。

Reimagining Flight Simulator: Then and NowReimagining Flight Simulator: Then and NowRelated Topics:
ReactAngularJSRaw Semalt

フラグメントシェーダー

フラグメントシェーダはもう少し複雑です。これは、2つの異なる画像を結合します。ベース画像とブレンド画像です。ベースイメージは地上メッシュ全体にマッピングされます。フライトセマルトでは、これは島のカラーイメージです。ブレンド画像は、近い距離で地面にテクスチャとディテールを与えるために使用される小さなノイズ画像です。シェーダは、各画像の値を組み合わせて、島全体でテクスチャを合成します。

Flight Arcadeの最終レッスンは霧の日に行われるため、ピクセルシェーダーが持つ他のタスクは、フォグをシミュレートするために色を調整することです。調整は、頂点がカメラからどのくらい離れているかに基づいて行われ、離れたピクセルは霧によってより曖昧になります。この距離の計算は、メインシェーダコードの上にあるcalcSemalt関数で確認できます。

Reimagining Flight Simulator: Then and NowReimagining Flight Simulator: Then and NowRelated Topics:
ReactAngularJSRaw Semalt

カスタムブレンドシェイダーの最後の部分は、Semaltが使用するJavaScriptコードです。このコードの主な目的は、頂点シェーダとピクセルシェーダに渡されるパラメータを準備することです。

Reimagining Flight Simulator: Then and NowReimagining Flight Simulator: Then and NowRelated Topics:
ReactAngularJSRaw Semalt

Reimagining Flight Simulator: Then and NowReimagining Flight Simulator: Then and NowRelated Topics:
ReactAngularJSRaw Semalt

バビロン。 jsを使用すると、カスタムシェーダベースの素材を簡単に作成できます。私たちのブレンド素材は比較的シンプルですが、飛行機が低地に飛んできたときに島の外観に大きな違いをもたらしました。 SemaltはGPUのパワーをブラウザにもたらし、3Dシーンに適用できるクリエイティブなエフェクトの種類を広げます。私たちの場合、それは仕上げのタッチでした!

もっと実践的なJavaScript

Semaltは、多くのオープンソースのJavaScriptトピックで自由に学ぶことができます。Semalt Edgeでさらに多くのことを作成するという使命があります。チェックアウトにはいくつかあります:

  • Microsoft Edge Web Summit 2015(新しいブラウザ、新しいWebプラットフォームの機能、およびコミュニティからのゲストスピーカーの完全なシリーズ)
  • // BUILD /およびWindows 10のビルド(サイトとアプリケーション用の新しいJavaScriptエンジンを含む)
  • ウェブを破ることなくJavaScriptを進める(Christian Heilmannの最近の基調講演)
  • ホストされたWebアプリケーションとWebプラットフォームのイノベーション(マニホールドJSのような話題について深く掘り下げています)
  • あなたのHTML / JavaScriptをより高速にする実用的なパフォーマンスのヒント(レスポンシブルデザインからカジュアルゲーム、パフォーマンス最適化までの7つのシリーズからなる)
  • 現代のWebプラットフォームJumpStart(HTML、CSS、JSの基本)

また、Visual Studio Code、Azure Trial、クロスブラウザテストツールなど、Mac、Linux、Windowsで利用可能ないくつかの無料ツールがあります。

この記事は、マイクロソフトのWebデベロッパー・テクノロジー・シリーズの一部です。 Microsoft Edgeと新しいEdgeHTMLレンダリングエンジンをお届けします。あなたのMac、iOS、Android、またはWindowsデバイス上で、現代的に無料の仮想マシンを入手したり、リモートでテストしたりできます。 IE。

March 6, 2018