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

投稿

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

最近の投稿

深層学習でReal Time Lighting の学習

Nvidia Falcor で、Tensorflow CNN を使った Lighting の学習を動かしてみました。 なかなか興味深いです。 左がリアルタイムレンダリング。右がCNN の照明結果です。 今回は平行光源のみです。 動画後半は、CNN に対して、私が平行光源の角度をリアルタイムに指定した結果です。

気になる論文 2018-06-24

初夏の香りがする季節になってきた。 最新のジャーナルで、いくつか面白そうなものがあったのでメモ。 from The Visual Computer https://link.springer.com/journal/371/34/6/page/1 Multiple importance sampling characterization by weighted mean invariance https://link.springer.com/article/10.1007/s00371-018-1522-x Hybrid Lighting for faster rendering of scenes with many lights https://link.springer.com/article/10.1007/s00371-018-1535-5 Point-based rendering enhancement via deep learning https://link.springer.com/article/10.1007/s00371-018-1550-6

Keras 学習データセットからテクスチャアトラスを作る

Keras / Tensorflow で使う学習データセットからテクスチャアトラスを作成するコードを書きました。デバッグ、学習データセット作成の練習も兼ねています。 学習データセット CIFAR10 Small Images https://keras.io/datasets/ https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz 図 今回、生成したテクスチャアトラス(拡大) 図 生成したテクスチャアトラスの全体 8,000 x 6,400 texels (250 x 200 images) コード # source: https://github.com/keras-team/keras/blob/master/examples/cifar10_cnn.py # morishige, 2018 from keras.datasets import cifar10 # The data, shuffled and split between train and test sets: (x_train, y_train), (x_test, y_test) = cifar10.load_data() print('x_train shape:', x_train.shape) print(x_train.shape[0], 'train samples') print(x_test.shape[0], 'test samples') # for debug import numpy as np from PIL import Image def img_show(img, atlasX, atlasY): pil_img = Image.fromarray(np.uint8(img)) pil_img.show() img_name = 'cifar10_atlas_' + str(atlasY) + 'x' + str(atlasX) + '.jpg' pil_img.save(img_name) # get information im

Keras で graphviz を使って、Neural Network のグラフを画像ファイルに出力する際の留意点

Keras で plot_model() を使って、下記エラーが出力された場合、 "Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work." 原因は、graphviz.exe が見つからないのが原因です。システム環境変数 Path に、graphviz.exe への Path を追加することで解決しました。 動作環境 Windows 10 Pro (64bit) Anaconda 4.3.0 Python 3.6 Tensorflow 1.4.0 Keras 2.1.2 手順 step 1. graphviz をダウンロードします https://graphviz.gitlab.io/_pages/Download/Download_windows.html step 2. システム環境変数 Path に graphviz.exe の場所を追加します C:\Program Files (x86)\Graphviz2.38\bin step 3. Neural Network を図として出力します import keras from keras.models import load_model from keras.utils import plot_model import os model_dir = os.path.join(os.getcwd(), 'models') model_name = 'keras_mnist_trained_model.h5' model_graph_name = 'keras_mnist_trained_model.png' model_path = os.path.join(model_dir, model_name) if os.path.isfile(model_path): model = load_model(model_path) print('Load trained model at %s ' % model_path) model_gra

2018 Happy New Year !

あけまして、おめでとうございます。 画像は、今後、創ってみたい Sci-Fi RPG のイメージです。 タイトル Vielfältiger Effekte とは、Manifold Effects の意味です。 ドイツ語表記の理由は、響きの良さですw(え “There are days that define your story beyond your life, like the day they arrived.”  - Dr. Louise Bank, 映画 メッセージ(原題: Arrival) より 世界設定 2045年、地球は異常気象と資源の枯渇によって、食糧難となります。 AI で最適な遺伝子の組み合わせを見つけ、クローンを使った食糧の養殖を試みるものの、種々の副作用で、人口は10% までに減少して、人類は絶滅の危機に瀕します。 (AI でヒト自体のクローン案が出るものの、成長の時間が現実的ではありませんでした。かわりに、アンドロイドをデザインして生成することになります。) そこで、人類は、地球外で資源が豊かな惑星を求めて、初めての惑星探査、惑星移住を試みます。 SF といえば、未知との遭遇。この時、人類(プレイヤー)はどのような行動をとるか、で種の存続が決まっていきます。 ゲームシステム メモ程度に書き出したものです。自由度の高いシステムです。 故に、Full 3D ではなく、2.5D で実現するのが良いかも。 大きな目的は、種の存続です。それが達成できれば、手段は問いません。 プレイヤーの数だけ、人類の物語が生成される仕組みです。 一般的なプレイヤーは、まずは人類絶滅を回避する方法を探すことになるでしょう。 移住できそうな惑星が見つかったら、箱舟に相当する宇宙船を構築して脱出です。 あるいは、地球自体のテラフォーミングを行う解法もあります。 この場合は、安全な場所へ生き残った人類を誘導することになります。 地球 資源探査、惑星探査のための宇宙船を構築します。 宇宙船構築の資材集め、設計を実行します。 探査チームを組織します。 銀河と惑星 銀河の地図を作りながら、惑星を見つけて、着陸、探索します。 地球か宇宙ステーションへの帰りの燃料も考慮して探索します。 惑星の

いきなり!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