godai-kaihatsu / gondwana

https://gondwana.godai.co.jp/
2 stars 0 forks source link

preview-7: 地形システムの軽量化、地表表現の美化、地図表現の改良 #112

Closed usagi closed 6 years ago

usagi commented 6 years ago

本チケットは粒度が大きいので、ある程度の実装レベルで分割する可能性がある。

usagi commented 6 years ago

CITIES: SKYLINE の地形生成が現時点での理想。本チケットではこれほど美しくはしないが、最終的にG4もこのような表現を標準としつつ、地図も重ねて見られる、そういったものにできる基盤を既存の実装を元に軽量化しつつ施したい。

image image

usagi commented 6 years ago

preview-7 最初の改修として4月末から対応していた高速化、高効率化について、さしあたり以下2点の改修が完了した。

また、この改修に伴いゼロレイヤーシステムは廃止。

この改修は今週中にリリース予定。

usagi commented 6 years ago

G4用語をわかりやすく変更

  1. 「地形レイヤーの地図画像(Cartograph)」→「地表(Surface)」
  2. 「地図画像スロット(Slot)」→「地表のレイヤー(Surface Layer)」

preview-6までG4における「レイヤー」は標高を適用した地形とゼロ標高の2つからなる構造層をさす用語として使っていましたが、わかりにくかったゼロレイヤーシステムを廃止し、この部分が単層の構造としたため、改めて一般的な二次元の画像編集における用語として定着性の高い「レイヤー」をその意味と類似して用いるよう変更しました。

usagi commented 6 years ago

ついでに見つけたバグを修正した。

発生条件:

  1. 山脈地帯など複雑さのおおきな地形の場所に注視点を移動し、
  2. かつ標準でもある地形の標高に注視点の高度を設定するカメラ設定で、

現象: 移動直後にLODの再設定が発生すると、読み込みが完了するまでの間に仮のデータとして分解能の粗いデータから計算した標高または0が用いられるが、この状態からデータがロードされた状態で50cm以上の高低差の誤差が合った場合に、LODの再設定が繰り返し発生し画面が揺れ動作が重くなる。

修正内容: 注視点の地形の標高値が仮データの場合はLODを再計算しないようにした。

usagi commented 6 years ago

バグ修正した。

  1. wireframe の設定を行い、
  2. 注視点を移動して LOD を変化させると、

現象: LODが変化した領域としていない領域で wireframe の設定が異なる状態が発生する事がある。

修正内容: 常に設定した wireframe の設定ですべての wireframe が表示されるよう修正した。

usagi commented 6 years ago

wireframeのGUIを更新した。

  1. わかりやすさUP (RGB-A-Eを設定するだけになったこと、R,G,B,A,Eの意味が右下に表示されるようになったこと)
  2. 従来の RGB-A に加えて E (発光度)を設定可能にした。(線が細くて見にくい場合は発光度を強く設定すると見やすくなる)
  3. プレビューを大きくした。
usagi commented 6 years ago

image

usagi commented 6 years ago

Emissive値を可変にしたことでどう見た目が変えられるようになるかのさんぷる。(極端な例)

低 emissive:

image

高 emissive:

image

usagi commented 6 years ago

wireframeのGUIを改良。

image

usagi commented 6 years ago

preview-6 まで Cartograph メニューとしていたもの、つまり preview-7 以降における Terrain Surface Layer メニューを改修している。ゼロレイヤーシステムの設定をここで行う必要が無くなったため、ごちゃごちゃ感を排除できないかと意匠設計上の工夫も行っている。作業は明日か、明後日まで続く可能性がある。

usagi commented 6 years ago

Terrain Surface Layer について、 preview-6 までにユーザーから頂いた意見に「8枚もレイヤー使わないよ、せいぜい3、4も使えれば十分」というものがあった。無駄な柔軟性はユーザビリティーの低下を招く。ここは思い切ってレイヤーを4枚の固定にしてGPU処理を少しでも軽くしてみることにした。

usagi commented 6 years ago

合成方法は既存の「不透明度」に加えて以下を追加する。これらはG3のユーザーから実際に利用価値が高いと言われたもの。

  1. 「加算(係数付き)」 (一般的な「加算」に対して、重ねる上側のパラメーターに係数を与えられるようにして、加算、減算のバリエーションと微調整を可能にしたもの。)
  2. 「乗算(係数付き)」
  3. 「比較(暗)」
  4. 「比較(明)」

G3 ではもっと多くの方法や特殊な方法にも対応したが、実際問題使われていなかったようなのでG4では実装しないでおく。シンプルさもユーザビリティー。

usagi commented 6 years ago

来週のリリース予定にはいれないが、その次での対応にタイルサービスの定義にタイルサービスそのままではない特殊タイルを追加する。

  1. 「斜面法線 XYZ -> RGB」
  2. 「標高カラーマップ」

これらは土木用途でも便利なので単純な定義ファイルとは別に、コンフィグで on/off する形でタイルサービスとして利用可能にしたい。

usagi commented 6 years ago

Terrain Surface Layer メニューを次のように調整した。

image

わりと大きな実装の改修が必要で、おそらく 2018-05-25 いっぱいかかるだろう。

usagi commented 6 years ago

G3では「わかりにくい」とかなり不評だった「合成パラメーター」について、 preview-7 から「合成方法」が複数となる事に合わせて、選択されている合成方法ごとにわかりやすい表示で必要な数のパラメーター設定枠を切り替え表示する設計に調整した。例えば「不透明度」が選択されている状態では「不透明度の乗算値」をバー付きで 0 ... 1 のバー付きの数値入力で設定できる。「加減算」の場合には「上側のパラメーターの係数」を -1 ... +1 で設定可能となるなど。

G3 では imgui で現実的なコストの範囲内で実装可能なウィジェットパターンが制約を受ける事も多かったが、G4ではUE4/UMGにより比較的にリッチなGUI設計、実装が可能となった。善き哉。

usagi commented 6 years ago

合成方法はそれほど難しくなく有用な5種類に絞ったが、念の為、ユーザーフレンドリーな解説を表示してみた。親切。

image image image image image

usagi commented 6 years ago

おおよその機能は動作するようになったので G4-4.0.7.0 CBT のアップデート告知用も兼ねて開発中の様子の動作:

https://vimeo.com/272522721

image

usagi commented 6 years ago

動画その2、ドラッグ・アンド・ドロップ操作の動作:

https://vimeo.com/272528352

image

usagi commented 6 years ago

ここまでの改修はおおよそ完了しているが、動作試験中に今回の改修に伴ういくつかの中難易度と思われるバグ挙動を開発環境で観測したため、 4.0.7.0 CBT の release は 2018-06-08 として、バグ修正作業を進める事にした。

usagi commented 6 years ago

レイヤー設定の方法によってはG4ごと墜ちる事があるらしいバグの調査中に、些細なGUIのバグも見つけたのでSSでメモしておく。

image

画面が小さいか16:9よりも横が短い場合にメニュー系の画面の右下の description 文字列が暴れるようだ。( description が想定外に左側まで表示され、閉じるボタンが見えない、押せない、状態になっている)これも後ほど修正する。

usagi commented 6 years ago

対応中のレイヤーの設定方法によって墜ちるらしいバグの調査状況:

usagi commented 6 years ago

予想通り一筋縄でここなおしたらぽーん、というわけにはいかなかったので引き続き修正して来週のリリースを目指しましょう。今日はここまでです。

image

usagi commented 6 years ago

先週末の状態↑のようにちぐはぐにタイリングされる挙動がランダム風に発生することがあったバグは修正した。

今週、リリースまでに、もう1つ、LODが高レベルになり同時に処理する非同期HTTP処理の負荷が高くなるとG4がクラッシュする事があるバグを修正する予定。

usagi commented 6 years ago

非同期HTTP/Filesystemモジュールを問題が発生する可能性のある旧式の実装から新設計の実装を行い置き換えている。この作業は順調で、早ければ明日にもこのバグ修正も完了できるだろう。

usagi commented 6 years ago

軽快に問題なく動作するようになった。

image

usagi commented 6 years ago

アプリ終了時に異常終了が誘発される事があったバグも修正した。

usagi commented 6 years ago

ブレンディングモードも動作している。GSI/Relief + OSM/Basic<乗算> の様子:

image

usagi commented 6 years ago

完成したので動画とっておいた: G4 4.0.7.0-dev 使いやすく軽快になった地表面の「レイヤーシステム」

https://vimeo.com/273848400

image

usagi commented 6 years ago

今日はここまで。明日はここまでの更新を G4-4.0.7.0-CBT としてリリースできるでしょう。

usagi commented 6 years ago

「後処理: RGB 反転」はレイヤーを乗算合成した結果暗くなって見難いとか、そういう場合に使って貰うために付けた。この機能は将来的に「後処理: 正規化」などとして、 簡易的な RGB 輝度で下限値と上限値を決めて正規化する機能にしてあげてもよいかもしれない。

image

usagi commented 6 years ago

G4-4.0.7.0

Release Note

usagi commented 6 years ago

このチケットは 4.0.7.0 のリリースで一旦閉じる事にして、以下は個別にチケットを発行する。