2018年01月28日

Appleseedレンダリングエンジンのテスト その11

いつの間にかAppleseed Renderer[1]のバージョンが1.8.1-betaまで上がっていました。1.7でPlastic BRDFというものが実装されていましたので、試してみました。他にもGlass BSDFとかMetal BRDFなど、色々なBRDFが増えているようでした。

実行結果

昔作っていたプログラムでPlastic BRDFのパラメータも出力できるようにしてみました。また、サンプルのCornell Boxを参考に、Cornell Boxの外側だけ出力するようにしました。モデルは以前と同じTda式改変憤怒ミクさんを使用させていただいております。

以前のもの(壁はLambertian、モデルはOren+Ashikhmin)
tda_roku_cornell_ashikhmin2.png

Plastic BRDF(壁もモデルもPlastic)
tda_roku_cornell_plastic2.png

パラメータはデフォルトのものなので調整すればもっと良くなるかもしれません。時間があくと自分で作ったプログラムの操作方法忘れてて困ったものです。

[1] https://appleseedhq.net/
web拍手 by FC2
posted by シンドラー at 18:27 | Comment(0) | Rendering | このブログの読者になる | 更新情報をチェックする

2018年01月20日

SFMLのテスト

結局使いませんでしたが、お絵かきロジックのソフトウェアをSFMLで作ろうかなと考えていたのでサンプルまでの手続きをメモっておきます。

SFMLはマルチメディアライブラリで、下記のモジュールで構成されています。
System:
コアモジュールです。2次元及び3次元ベクトルクラス、時計、スレッド、Unicode文字列などを提供します。
Window:
アプリケーションウィンドウを作成できます。マウスやキーボードなどのユーザ入力を扱えます。
Graphics:
画像やテキスト、形状や色など2次元の描画機能を提供します。
Audio:
音楽の読込やスピーカを使った再生などの機能を提供します。
Network:
ネットワークもカバーしており、HTTPやFTPのプロトコルでLANやインターネットを通じてデータを送ることができます。

モジュールの詳細についてはドキュメントを参照してください。
http://www.sfml-dev.org/documentation.php

SFMLはオープンソースで、ライセンスはzlib/libpngライセンスです。商用/非商用どちらでも使用できます。

ダウンロードとインストール
ビルド済みのライブラリをダウンロードするか、ソースコードをGitなどから取得してコンパイルすることもできます。
CMakeを使ってVisual Studio用のソリューションファイルを作成することもできます。これらの手順は下記の場所にチュートリアルがあります。
http://www.sfml-dev.org/tutorials.php

今回はCMake GUIを使ってVisual Studio 2013のプロジェクトファイルを作成しました。スタティックリンクにしました。
ソリューションを開いてALL_BUILD→INSTALLすると、インストール先に設定したディレクトリにincludeやlibが作成されます。

A minimal example
参考文献[1]のサンプルそのままです。
#include <SFML/Graphics.hpp>

int _tmain(int argc, _TCHAR* argv[])
{
    sf::RenderWindow window(sf::VideoMode(640, 480), "SFML Application");
    sf::CircleShape shape;
    shape.setRadius(40.f);
    shape.setPosition(100.f, 100.f);
    shape.setFillColor(sf::Color::Cyan);
    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        window.clear();
        window.draw(shape);
        window.display();
    }
    return 0;
}
ビルド時の注意点
今回はスタティックリンクにしましたので、プリプロセッサのところにSFML_STATICを入れる必要があります。
SFMLのモジュールのライブラリは基本的には下記のものがあります。

sfml-audio-s.lib
sfml-graphics-s.lib
sfml-main.lib
sfml-network-s.lib
sfml-system-s.lib
sfml-window-s.lib

-sはスタティックの場合について、デバッグバージョンはさらに-dが付きます。
今回は上記のものだけでは足りなかったので、下記もリンクさせました。

opengl32.lib
jpeg.lib
winmm.lib

オーディオ関係を使う場合には、さらにopenal32.lib/openal32.dllが必要になるなど、状況に合わせて追加する必要があります。

実行結果

sfml_001.png

サンプルなので円が表示されているだけです。
web拍手 by FC2
posted by シンドラー at 02:30 | Comment(0) | OpenGL & Metasequoia | このブログの読者になる | 更新情報をチェックする

2017年12月28日

お絵描きロジックのテスト その3

昨日の続きです。

下記のような流れで画像からお絵描きロジックの数値に変換しました。縮小しているだけなのでもう少し工夫したいところです。

1.ファイルオープンダイアログを使って画像の選択・読込み
2.25x17に縮小
3.大津の2値化で2値化
4.白画素の数を数えて問題を作成
5.正解したらタイムを表示して終了

4.のコードは下記のような感じです。
piclogic_006.png

実行結果

フリーアイコンの画像などで試してみました。

piclogic_005.png
piclogic_007.png
piclogic_008.png

最後ピラミッドの写真か何かですが全然わからないですね。一応一通りの動作を3日で作れたので思ったより早かったです。
web拍手 by FC2
posted by シンドラー at 16:56 | Comment(0) | OpenGL & Metasequoia | このブログの読者になる | 更新情報をチェックする

2017年12月27日

お絵描きロジックのテスト その2

昨日の続きです。

スタティックテキストのUIを追加しました。あまりお絵描きロジック固有のクラスにはしたくなかったのですが、

1
10
5

のように、縦書きだけれど各行は横書きみたいなこともできるようにしたら少し特殊になりました。

piclogic_003.png

実行結果

サンプルはネットで探したものなので著作権的に問題があるかもしれません。

piclogic_004.png

とりあえずUI的にはできた気がしますので、後は画像を読み込んでエッジ抽出して問題作成とかその辺を試してみたいと思います。
web拍手 by FC2
posted by シンドラー at 21:42 | Comment(0) | OpenGL & Metasequoia | このブログの読者になる | 更新情報をチェックする

お絵描きロジックのテスト その1

気が付くと年末です。最近あまりプログラム書いていなかったので、リハビリとしてお絵描きロジックでも作ろうと思います。

最近使っているGUIであるAntTweakBarは、あまり今回のようなボタンは向いていないと思いますので、他のUIライブラリを使用することを考えていました。UIライブラリについては[1]が参考になります。

ただ、ユーザインタフェースとしては、画像とボタンと数字の表示ぐらいなので、他のライブラリを準備せずに自前で作ることにしました。

piclogic_000.png

一応汎用性を持たせるために、クリックされたときの動作は関数ポインタを渡すようにしました。今回で言えば一回塗りつぶしたマスをもう一回クリックしたら初期状態に戻すとかそういった細かい動作を別関数で定義してボタンクラスに渡します。

実行結果

piclogic_001.png

割とあっさりできました。後はドット絵でも読み込んで数字表示してゲームとして動くようにしたいと思います。

[1] OpenGL な UI を作るライブラリ一覧
web拍手 by FC2
posted by シンドラー at 00:43 | Comment(0) | OpenGL & Metasequoia | このブログの読者になる | 更新情報をチェックする

2017年11月06日

Unityで簡易映画館

いつの間にか11月ですね。amazonのプライムビデオをOculus Riftで見たかったのですが、Oculus Videoは動画用でブラウザなどは見られない?ようでしたので、Unityでデスクトップ表示をすることにしました。

Oculus VideoのCinemaが映画館っぽくていい感じでしたので、デスクトップ表示は凹みtips様のuDesktopDuplication[1]をそのまま使用させていただき、フリー素材を使って壁と椅子を作りました。どうも空中にディスプレイが浮いていると、大きな画面に見えないというか違和感があるのと、暗めにしていれば手抜きでもあまり目立たないのでとりあえず満足です。

実行結果

unity_ss_001.png

[1] http://tips.hecomi.com/?page=1482504118
web拍手 by FC2
posted by シンドラー at 23:23 | Comment(0) | Unity 5 | このブログの読者になる | 更新情報をチェックする

2017年10月05日

Google Financeからのデータ取得

Gain Capitalは1週間が終わったらデータが公開されるようですので、最新データの取得は恐らくできないと思います。直近のデータを取得する場合、Google Financeの非公式APIを使うのが良いみたいです[1]。

実行結果

rosoku_005.png

Gain Capitalにデータがある場合はcsvからデータ取得をして、Gain Capitalにない最新データに関してはGoogle Financeから取得するようにしてみました。

データの取得は大体できるようになったので類似チャート検索でも試してみようかと思います。時系列データの機械学習でいいライブラリとかあるんでしょうか。

[1] Real-Time Google Finance API を使って株価を取得する

web拍手 by FC2
posted by シンドラー at 20:31 | Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2017年09月18日

ローソク足と指数平滑平均について

株価のサイトなどでよく見るグラフですが、ローソク足というみたいですね[1]。始値、終値、高値、安値の4つを表したものということで、特に難しい計算は必要ないですね。もう一つは移動平均で、指数的な重みを使うものを指数移動平均とか指数平滑平均というみたいです[2][3]。

実行結果

rosoku_004.png

計算が合っているのかわかりませんが、とりあえず図示してみました。USD-JPYのBidですが、為替の取引は土曜日がないみたいで空いています。休みを挟んで終値と始値が一致していないのがよくわからないですが。後BidとAskのデータがあるのですが、普通のサイトに載っているのはどっちなんでしょうね。

[1] http://toushi-kyokasho.com/fx-chandle-chart/
[2] http://toushi-kyokasho.com/idouheikinnsenn/
[3] Wikipedia - 移動平均
web拍手 by FC2
posted by シンドラー at 23:06 | Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2017年09月14日

文字コード対策メモ

GAIN Capitalから取得したcsvファイルですが、文字コードがShift_JIS系とUTF-16LE(BOM付き)が混ざっていて困りました。BOMが付いていなければ仕方ないですが、付いていれば対応はできるので、[1]を参考にとりあえずBOMが付いているかどうか確認して、付いていてUTF-8かUTF-16であれば[2][3]を利用させていただいてstd::stringに変換するサンプルプログラムを作成してみました。

ソースコード
char_code.cpp

ソースコードを使用して損害等が発生したとしても責任は取りません。

Pythonの方は試してないですが、文字コードとかもうまく処理してくれるんですかね。

[1] バイトオーダーマーク
[2] C++でShift-JIS, UTF-8, UTF-16 BOM有無とエンディアンを考慮してファイルの読み込みをする
[3] Visual C++における文字コード変換
web拍手 by FC2
posted by シンドラー at 22:39 | Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2017年09月13日

C++でWeb上のデータ取得のテスト

PythonではWeb上のデータを取得して統計解析するようなことが簡単にできるみたいですね[1]。あまり意味はないですがC++で同じようなことを試してみます。

1.Web上のデータの取得
httpもしくはhttpsでアクセスしてデータ取得できるサイトも多いようです。C++でURLからデータ取得ということで、[2]のlibcurlを使用しました。404 Not foundの判別などはしたかったので、[3]を参考にさせていただき、Zaif[4]のサイトからJSONデータを取得するようにしてみました。

2.JSONデータの解析
解析というほど複雑ではないですが、自前で分割したりするのは面倒でしたので、C++でJSONを取り扱えるライブラリを探しました。[5]のサイトで[6]のμjsonが紹介されていましたので、それを使用して取得したデータを解析しました。大体サンプルそのままですが、構造体を定義してそこにデータを入れていく感じです。

3.ZIPファイルの解凍
[1]によると、為替レートのデータがGAIN Capital[7]にまとめられているようですが、zipファイルで置かれていますので、curlでダウンロードして解凍してcsvファイルを取得する必要があります。unzipできるライブラリとして、今回はzlib[8]とそれを使ったclx[9]を使って解凍しました。

4.グラフの描画
いつものようにOpenGL+AntTweakBarを使って描画してみました。

unzip_001.png

割と手間がかかりましたのでやっぱりPythonだと簡単ですね。

[1] 個人投資家のためのFinTechプログラミング (日経BPムック)
[2] https://curl.haxx.se/libcurl/
[3] libcurl 404 detection
[4] Zaif Exchange APIドキュメント
[5] C++ 向けの扱いやすい json ライブラリ μjson
[6] μjson
[7] GAIN Capital
[8] zlib
[9] CLX C++ Library

web拍手 by FC2
posted by シンドラー at 22:30 | Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする