超雑訳 Creating the Atmospheric World of Red Dead Redemption 2

Share

こんにちわ、Pocolです。
知り合いが,RDR2のスライドが素晴らしいと言っていたのですが,仕事で忙しくて見れていませんでした。
ようやく,落ち着いた環境に移動したので,Fabian Bauer, “Creating The Atmospheric World of Red Dead Redemption 2: A Complete and Integrated Solution”のスライドを読んでみようと思います。
スライドは,SIGGRAPH 2019 Advances in Real-Time Renderings in Game Courcesからダウンロードできます。
図の方は,上記のページにあるスライドを参照してください。
こちらでは,スライドノート部分のみを和訳することにします。

(さらに…)

超雑訳 Robust Monte Carlo Methods For Light Transport Simulation (2)

Share

こんにちわPocolです。
大分時間が空いてしまいましたが,Eric Veachの”Robust Monte Carlo Methods for Light Transport Simulation”を引き続き読んでみます。

前回までのおさらい

前回はAbstractを訳しました。
今回はChapter 1を読んでいくことにします。

(さらに…)

超雑訳 A Scalable and Production Ready Sky and Atmosphere Rendering Technique

Share

こんにちわ,Pocolです。
今日はEurographics Symposium on Rendering 2020のSébastien Hillaireによる”A Scalable and Production Ready Sky and Atmosphere Rendering Technique”を読んでみようと思います。
論文はhttps://sebh.github.io/publications/からダウンロードできます。
いつも通り誤字・誤訳があると思いますので,ご指摘いただける場合は正しい翻訳例と共に指摘して頂けると幸いです。

(さらに…)

超雑訳 Real-Time Global Illumination using Precomputed Light Field Probes

Share

こんにちわ、Pocolです。
今回は,McGuireらによる”Real-Time Globa Illumination using Precomputed Light Field Probes”を読んでみようと思います。
論文はhttps://research.nvidia.com/publication/real-time-global-illumination-using-precomputed-light-field-probesのページからダウンロードできます。GLSLコードなどもリンクページからダウンロードできます。
いつもながら,誤字・誤訳等があるかと思いますので,ご指摘いただける場合は正しい翻訳例と共に指摘して頂けると有難いです。
 

(さらに…)

Bowyer–Watson アルゴリズムって何?

Share

こんにちわ,Pocolです。
相変わらずGI周りの資料を漁っているのですが,ふと見たGDC 2012の”Light probe interpolation using tetrahedral tessellations”のAppendixの四面体化に関するところで,Bowyer-Watsonアルゴリズムというのが出てきました。


※図は,Robert Cupisz, “Light probe interpolation using tetrahedral tessellation”, GDC 2012より引用。

Bowyer-Watsonアルゴリズムというものを知らなかったので,あとで実装するためのメモを残しておこうと思います。

https://en.wikipedia.org/wiki/Bowyer%E2%80%93Watson_algorithm

Bowyer-Watsonアルゴリズムは、インクリメンタルアルゴリズムだそうです。
Wikipediaに、Bowyer-Watsonアルゴリズムの基本的な実装の擬似コードが載っています。計算量は、\(\mathcal{O}(n^2)\)ですが,効率的に計算する方法がいくつかあるそうです。例としては,三角形の接続性を利用して,すべての三角形をチェックせずに円周上の新しい点を含む三角形を見つけるようにするなどで\(\mathcal{O}(n log n)\)まで減らすことができるそうです。

function BowyerWatson (pointList)
   // pointListは、三角化する点を定義する座標の集合です。
   triangulation := empty triangle mesh data structure
   add super-triangle to triangulation // pointList内のすべてのポイントを完全に含むことができるように十分な大きさを持たなければならない.

   for each point in pointList do // 三角化にすべての点を一度に追加します.
      badTriangles := empty set

      for each triangle in triangulation do // まず、挿入によって無効になった三角形をすべて見つけます。
         if point is inside circumcircle of triangle
            add triangle to badTriangles

      polygon := empty set
      for each triangle in badTriangles do // ポリゴンの穴の境界を求めます.
         for each edge in triangle do
            if edge is not shared by any other triangles in badTriangles
               add edge to polygon

      for each triangle in badTriangles do // データ構造から削除します.
         remove triangle from triangulation

      for each edge in polygon do // ポリゴンの穴を再三角形化します.
         newTri := form a triangle from edge to point
         add newTri to triangulation

   for each triangle in triangulation // ポイントの挿入が終わったので,お掃除する.
      if triangle contains a vertex from original super-triangle
         remove triangle from triangulation

   return triangulation

GDCのスライドには「すぐに使えるソリューションが必要な場合は、Hang Siによる[TetGen]が非常にまともで、四面体メッシュの精密化のような追加機能や潜在的に有用な機能を持っています。」と書いてあります。該当する参考文献なのですが,https://www.berlios.de/software/tetgen/経由でC++の実装があるダウンロードページに飛べるようです。ライセンスはGNU Affero Public License v.3.0なので注意してください。

あとは,ちゃんとソースコードの中身見れていないのですが,Stride3d(元Xenko)のリポジトリにも四面体化のコードが上がっているようです。
https://github.com/stride3d/stride/blob/master/sources/engine/Stride.Rendering/Rendering/LightProbes/BowyerWatsonTetrahedralization.cs

これらを参考に実装すると良さそうです。

超雑訳 The design and evolution of the UBERBAKE light baking system

Share

こんにちわ。Pocolです。
SIGGRAPH 2020のPaperが一部公開され始めたみたいです。最近,GI関係が気になっているので,DAIRO SEYBらによる”The design and evolution of the UBERBAKE light baking system”の論文を読んでみようかなと思います。
論文自体はhttps://darioseyb.com/publication/seyb-20-uberbake/にて公開されています。
毎度で申し訳ないのですが,誤字・誤訳をご指摘いただける場合は,正しい翻訳例と共にご指摘いただけると大変ありがたいです。


 

(さらに…)

GitでSSL certificate problemが出る時

Share

忘れないようにメモ。
昨日ぐらいまで普通にGitでフェッチできていたのだが,突然
「SSL cerficatte problem: certificate has expired」
が出るようになった。

で,設定に問題があるな!と分かったのは同じリポジトリをcloneしているはずなのに,片方はアクセス出来て,片方はアクセスできない。
よってサーバー側のエラーじゃないとわかる。
最終的にどこが間違っていたかというと,リポジトリをhttps始まりで設定していたのがだめだった。
git@XXXXX
を指定するようにしたら無事に接続できるになった。
接続できない場合は,指定が間違っていないかどうかチェックすること。

続・リモートデスクトップでゲームパッドを使う方法

Share

※2020/06/13 Dual Shock4 Emulationモードの入力不具合を修正しました。
https://github.com/ProjectAsura/RdpGamepad/releases/tag/DS4_7


こんにちわ,Pocolです。

今回はテレワークお役立ち情報の続編です。
前回はWindows 10 HomeがRemote Fx USBリダイレクト使えなくて,リモートデスクトップでパッドが使えなくて困って,リモートデスクトップでゲームパッドが扱えない場合にゲームパッドを使えるようにするプラグインを紹介したのですが…
今回はそのプラグインを改造して,少し扱いやすくしました!というお話です。

前回紹介した、https://github.com/microsoft/RdpGamepadはXInput対応のゲームを開発する際にはとても役に立つのですが,残念ながらDual Shock 4にしか対応していないゲームを開発する際にはリモート越しで操作出来なくてこまってしまうという場面に出くわします(※まぁ開発者の人ならわかりますよね)。

「無いなら作ろう!」というわけで,作ってみました。
https://github.com/ProjectAsura/RdpGamepad/releases/tag/DS4_6

基本的には

  • XInput —> Dual Shock 4
  • Dual Shock 4 —> Dual Shock 4
  • Dual Shock 4 —> XInput

という処理を付け足しました。

使い方は簡単で,本家の代わりにこちらで改造した版のインストーラーを使ってインストールしてください。
転送先のPCで右下に常駐する「Microsoft Remote Desktop Gamepad Receiver」を右クリックして,転送先で振る舞うコントローラータイプを選択してください。

Xbox 360を選択すると,
[ローカルPC:XInput] → [リモートPC:XInput]として動作します。
Xbox 360 Emulationを選択すると,
[ローカルPC:Dual Shock 4] → [リモートPC:XInput]として動作します。
Dual Shock 4を選択するすると,
[ローカルPC:Dual Shock 4] → [リモートPC:Dual Shock 4]として動作します。
Dual Shock 4 Emulationを選択すると,
[ローカルPC : XInput] → [リモートPC: Dual Shock 4]として動作します。

XInputでDual Shock 4をエミュレーションする場合にはボタン数が足らないため,PSボタンとタッチパッドボタンが効かない仕様です。
また,サブモジュールとして使用しているViGEmClientがジャイロなどに対応していない関係で,Dual Shock 4のジャイロは非サポートです。
また,Bluetoothを使った接続に関しても非サポートです。

ちなみに分かっている情報として,Xbox OneゲームパッドをRemote FX USBリダイレクトでつなぐとリモート先のPCがブルースクリーンになるなどの問題が報告されています。
現在所属会社の方では,Remote FX USBリダイレクトでブルースクリーンが発生する問題を避ける方法としてRdpGamepadの使用が推奨されています。

そんなわけで,転送先PCでDual Shock 4として認識してくれないと開発に困る!という方たちにはもしかしたら有益な情報かもしれませんし,ブルースクリーンで悩んでいる方に有益な情報かもしれません。
テレワークでの開発にお役に立てば幸いです。

※追記ですが,ViGEmBusのドライバー側にバグがあるようで,入力を受け付けなくなってBSODになったりするみたいです。DirectInputやXInputの初期化処理で関数から帰ってこなくなったら,このバグが発生している可能性あります。この状態でリモート接続を切断してしまうと,再接続できなくなるようなので,バグが発生したらリモート側のPCをいったん再起動して対処するほかないようです(再起動にも20分とか時間がかかるようです)。現在,Issueが発行されています。

リモートデスクトップでゲームパッドを使う方法

Share

こんにちわ。
Pocolです。

たまには生活お役立ち情報としてテレワークに役立つリモートデスクトップでゲームパッドを使う方法を紹介します。
役立つ場面としては,リモートデスクトップで自宅PCから会社PCに接続し,ゲームタイトルを開発する状況などを想定しています。

皆さん,ご存知のようにWindows 10 Proであれば,ゲームパッドはリモートデスクトップでも問題なく使えると思います。なので,Proの場合は適切に設定すればOK。

困るのがWindows 10 Homeとかの場合です。デフォルトだとリモートデスクトップでゲームパッド入力が受け付けない状態です。自分もこれに当てはまります。

ちょっと前にMicrosoftがリモートデスクトップでXBox GamePadを使える様にするプラグインをGithub上で公開しました(https://github.com/microsoft/RdpGamepad)
これを使えば,Windows 10 Homeでもゲームパッドが使えるようになります。
※Dual Shock 4を使いたい場合は,こちらを参照してください。

順に説明していきます。

まずは,Githubページの上にあるReleaseタブをクリックしましょう。

あとはリリースページに書いてある手順に従ってexeをインストールしていくだけです。
リモートワークをする前提なので,転送元PCを「自宅PC」,転送先PCを「会社PC」と想定します。

転送元PCの設定

まずクライアント側(転送元)の設定です。
(1) リリースページから,「dpGamepadClientInstall-1.0.0.exe」をダウンロードし,インストールします。
(2) インストールが終わったら,リモートデスクトップセッションを切断して,転送元のPCを差起動します。
(3) 起動後に転送元PCにXboxコントローラーを指します。
以上で,転送元PCの設定は完了です。

転送先PCの設定

(1) https://github.com/ViGEm/ViGEmBus/releasesのページに飛び,

  • Xbox 360 Accessories Software 1.2
  • Microsoft Security Advisory 3033929 Update
  • ViGEmBus_Setup_1.16.116.exe

の3つを順に転送先PCにインストールします。
(2) 3つインストールしたら,ページを戻り「RdpGamepadReceiverInstall-1.0.0.exe」を転送先PCにインストールします。
(3) インストールが完了したら,「Microsoft Remote Desktop Gamepad Receiver」が起動していることを確認します。転送先PCの画面右下から「隠れているインジケータ」を表示すると確認できるはずです。

これで転送先PCの設定は終了です。
会社さんによってはインストールできるソフトウェアに制限があると思うので,情報管理部門の方とかに許可取るのを忘れないようにしてください。

実際に動かす

あとは普通に転送元のPCに刺さっているXboxコントローラーを使えば,リモート先で動くようになるはずです。

そんなわけで,リモートデスクトップでゲームパッドを使えるようにする方法を紹介してみました。是非テレワークでの開発にお役立てください。
ではでは~