スキップしてメイン コンテンツに移動

投稿

UE4 4.22 Preview 1 のリアルタイム・レイトレーシングを動かしてみた。

いきなり!Ray Tracing on Houdini VEX 2

Ray を可視化してみました。 可視化 図 Pinhole Camera から、Teapot へのRay と Reflection Ray を VEX で可視化 解像度比較 図 左 32 texels (primitives), 右 256 texels (primitives) ネットワーク 図 Simple Ray Tracer Wrangle 出力先は、screen です。 シーンは、sceneGeometry です。 今回は、Utah Teapot のみです。 manyLights は、光源へのポインタです。 morishgieGI は、大域照明(実験)へのポインタです。 raytraceWrangle が、Ray Tracing を実行するOperator です。 VEX コードの格納先です。 Ray 可視化 VEX コード raytraceWrangle で、ray がシーン内のジオメトリと交差した際、 ray の点とプリミティブを生成しています。 追加削除が、簡単に動的にできるのは、VEX スクリプトの強みですね。 // ray を可視化する 点とプリミティブを生成 // geoself(): 出力先(screen) int newPt0 = addpoint(geoself(), rayOrigin); int newPt1 = addpoint(geoself(), hit); addprim(geoself(),"poly", newPt0, newPt1); // reflection ray を可視化する点とプリミティブを生成 vector r = reflect(rayDir, surfaceNormal); int newPt2 = addpoint(geoself(), hit + r); addprim(geoself(), "poly", newPt1, newPt2); 追記:addpoint() や addprim() の第一引数は、geometry handle です。 現在の geometry に出力する場合は、geoself() を使いましょう。 現在の geometr...

いきなり Ray Tracing on Houdini feat. VEX

Houdini で、VEX お勉強のお題として、Simple Ray Tracer を作ってみました。 はじめに VEX とは、SIMD 型のスクリプト言語です。Houdini 専用です。 機械学習の応用やプロシージャル技術の実験環境として、Houdini は視覚的に検証ができるので、VEX のお勉強を開始しました。 実装方法 1.出力先のスクリーン Grid を64 x 64 で primitive に分割して、それぞれの primitive をtexel とみなします。 2.Ray Tracing 処理 Wrangle Operator に、VEX コードを書きます。 Attribute Wrangle か、Primitive Wrangle で良いです。 入力は、Grid と Scene Geometry を Wrangle に接続します。 3.VEX コード(後日、公開します。) texel から、primary ray を飛ばして、シーン内の geometry と交差判定して、texel あたりの平均輝度 (radiance)を計算しています。 SIMD ですから、texel は並列に計算されているはずです。 いわゆる、CPU シェーダです。 解像度 比較 64 x 64 texels と 512 x 512 texels の比較です。 Lambert BRDF, Sun Light (Directional Light) のみです。 図 解像度64 texels と 512 texels の比較 おわりに 今後 週末、Star Wars 最後のジェダイを観る前、Houdini の資料を読みながら、2時間ぐらいで、Surface で作成したものです。 とはいえ、アイデアをカタチにして、すぐに結果が見えるのは良いと思いました。 現状は、64 x 64 texels の解像度なので、ファミコンみたいですが、 少しずつ、Ray Tracer として仕立てていこうと思います。 Ray Tracing -> Path Tracing -> Photon Mapping

Image Watch を Visual Studio 2017 で動かす方法

自己メモです。 ImageWatch を Visual Studio 2017 で動かす方法 https://marketplace.visualstudio.com/items?itemName=WolfKienzle.ImageWatch  図 Spherical Harmonics の投影と復元、原画像との差分を ImageWatch で可視化したもの. 現在、Spherical Harmonics for HDR feat. Physically Based Rendering について気になることを書いています。自己メモも兼ねています。近々、公開する予定です。 手順 step 1. vsix を .zip にリネーム step 2. Unzip step 3. extension.vsixmanifest の line 11 を 14.0 から 15.0 に書き換える 15.0 に書き換えることで、Vistual Studio 2015 だけでなく、2017 も対象に含める step 4.  Zip  ファイル構造は、step 3 の manifest がルートディレクトリにくるようにしておく  ImageWatch ディレクトリ配下のファイルを全て選択、Zip 圧縮  ImageWatch ディレクトリ を選択して、Zip 圧縮すると、Zip 内に ImageWatch ができて、インストーラが manifestファイルを読み込めず、インストールが実行できない step 5. .vsix にリネーム step 6. .vsix 実行 おわり

Houdini で2D 平面の地図から3D ポリゴンの街を生成する

Houdini, Houdini Game Development Toolset, Open Street Map (OSM) を使って、現実の地図から、街の建物を生成してみました。ノードベースは、生成変換の過程がわかるのが良いですね。 図 2D平面の地図(OSM) から、建物のみを3D ポリゴンに変換した結果 図 Open Street Map 2D 平面の地図 2D平面の地図(OSM) から建物の領域だけを抽出して、ランダムに適当な高さを与えて、3Dポリゴンに変換しています。地図に対応した等高情報(いわゆる Height Map)があれば、よりリアルな街並みになるでしょう。地上から地下までを階層的に生成するなど。 味噌 建物だけを抽出する際、OSM 地図データのアノテーションを使い、建物以外を抽出して削除しています。幾何情報だけでなく、意味情報を使っています。 実践としては、そういうやりかた(戦術)は、筋が良いと思います。とはいえ、地図にアノテーションが存在しない状況もあるので、幾何情報と現実の何らかの情報から3D ポリゴン生成する頑健な手法を考えておきたいところです。 課題 3D ポリゴン生成時の法線の向き 現行は、入力情報が二次元しかないので、3D ポリゴン生成時に、頂点法線が反転してしまう領域があり、そのような領域を抽出して、法線を反転して強制的に修正しています。研究的な視点だと、その等高情報を画像から推定して生成する、のは面白いと思います。 3Dポリゴン化した建物へのテクスチャマッピング(UV 座標) 3D ポリゴン化した建物の用途は、レベルデザインでのグレーボクシングと構造の把握程度までとしておきます。グラフィクスも考慮する最終レベルでは、事前にテクスチャマッピングした High Level of Detail の建物に置き換えます。 道路など建物以外のポリゴン化 建物は凸形状なので、ポリゴンの押し出し(Extrude)で容易に3D 化できました。 道路は、曲線もあります。碁盤の目である京都の街並みになら、やりやすいかも(笑) 階層化 地上から地下までをレイヤー化して、街をプロシージャル生成します。 よりリアルで自然な街並みを生成するには 長期の時間経過、自然現象...

所感:SIGGRAPH 2017 勉強会, 発表参加

土曜、豊洲にて、SIGGRAPH 2017 勉強会で発表参加してきました。定期的に発表する機会を設けると、それに向けて動くので、良い筋トレと交流の場になります。SIGGRAPH への投稿について、Ph.D. 日本と欧米の違いについて、いろいろとお話を伺えたのは、良かったですね。 http://siggraph.xyz/s2017/ 図 仮想世界を構築するための長期間シミュレーションによる天地創造、自然な植物のプロシージャル生成、天候シム、自然な群衆シミュレーションについて概要を紹介しました。究極のゲームづくりで必要になってくる技術だと思います。 P.S. 凄いゲーム、究極のゲームを作るなら、欧米に行く必要があるかもしれません。なんとなく、そんな気がしています。SIGGRAPH で発表参加すれば、リアル・オポチュニティが見えてくるかもしれませんので、まずは、SIGGRAPH ですね。

SIGGRAPH 勉強会 発表に向けたサーベイ

Simulation for Virtual Worlds を担当します。 http://siggraph.xyz/s2017/ 担当セッションについて http://s2017.siggraph.org/technical-papers/sessions/simulation-virtual-worlds 論文紹介テンプレート 1. 論文タイトル, 著者 2. Paper URL, Movies 3. Technical Terms 4. 応用案 工学と理学の研究に違いはあるが、産業応用を視野に入れておく。 論文のAlgorithm, Method, and Technology 直接的もしくは間接的に使って、近未来の人類に対して、有益な価値を提供できる応用案を書く 5. 研究課題 論文の問題点、future work を書く 1. Fast Weather Simulation for Inverse Procedural Design of 3D Urban Models http://wiki.cs.purdue.edu/cgvlab/doku.php?id=publications 2. Authoring Landscapes by Combining Ecosystem and Terrain-Erosion Simulation https://hal.archives-ouvertes.fr/hal-01518967/ Terminology 浸食シミュレーション 地形外部の作用、風,雨,河川,それから、波など、主に太陽エネルギーに基づく作用によって、地形を変化させること 3. Botanical Materials Based on Biomechanics http://run.usc.edu/proceduralMaterials/ https://dl.acm.org/citation.cfm?id=3073655 Terminology Procedural Materials Procedural Rayleigh Damping Botanical Material, 植物の材質 Biomechanics...

Morishige's Real-Time Global Illumination Phase 2

究極のゲーム実現に向けて、Real-Time Global Illumination を実装しています。Deep Morishige Graphics の核となる技術です。CG 研究最新の知見にもとづいた、新しい描画手法を、ちょいと工夫して使っています。今回は、自己メモも兼ねて、提案手法の目標について書いておきます。 図1. Morishige's Real-Time GI (Phase 2 Test) はじめに - Entry of the Gods into Valhalla これまで、種々のGlobal Illumination の手法が提案されてきましたが、リアルタイムゲームや映画といった実際の商用コンテンツで使うには、いくつもの課題と制約がありました。 一方で、今後のこと、先端技術や新しい常識が生まれる、欧米諸国へ進む道を見据えて、先回りして、有望と考えられる技術の開発を個人的に進めることにしました。 まずは、来年、研究発表できるようにしたい、と進めています。 例えば、Eurographics, SIGGRAPH, and SIGGRAPH ASIA などなど。 UE4 やLumberyard などオープンソースなゲームエンジンに実装して、実用上の問題点を明らかにしながら進めていきます。現在 Phase 2 で、簡易なColor Bleeding までです。 図1は、Point Light の例です。本影やSoftShadows, Indirect Shadows は、Phase 3 以降に導入していきます。 提案手法の目標 1. Simple シンプルな実装で、PC から、ゲーム機器、モバイル、Web で動作 2. Fast リアルタイム描画30 fps - 60 fps で動作 3. Compact 事前計算を必要としない。例えば、PCA 圧縮なRadiance Transfer を使わなくて済む。大量のデータを必要としない。例えば、Voxel、ハードディスク上の大規模データ。 4. Scalability 狭いシーンから、オープンワールドのような広いシーンまでスケーラブルに対応可能