2017年03月30日

ライフゲームのテスト

油断すると1か月以上更新していなくて困ったものです。今回はリハビリということで簡単なライフゲームを実装してみました。アルゴリズム的には下記3点のみです。

1. 3x3近傍の8マスに3個生物がいれば増える
2. 3x3近傍の8マスに2個生物がいれば現状維持
3. それ以外の時は減少

実行結果

面白いパターンになるグライダー・ガンで動作確認してみました。想定通りのパターンになっているので問題ないと思います。見つけた人はすごいですね。

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

2017年01月15日

麻雀プログラムの作成 その8

寒いですね。チャンタ系(清老頭、純チャン、チャンタ)とトイトイ系(対々和、三暗刻、四暗刻、三槓子、四槓子)の判定を実装しました。後は混一色系と、三色同順など順子系の判定を実装すれば、大体の役判定は終わりです。七対子判定はバグがありますが…。

実行結果

副露が多いと右にはみ出します…。

mj_result_012.png

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

2017年01月07日

麻雀プログラムの作成 その7

前回の続きです。とりあえず親の連荘と得点計算を実装しました。点数表示も付けたので後は役判定を実装していけばとりあえず一人で四人打ちは完成で、後はAIなどをどうするか考えたいです。

実行結果

mj_result_011.png

画像で見ると小さいですが、一応東とか南とかの自風の下に得点を表示しています。
web拍手 by FC2
posted by シンドラー at 03:52 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2017年01月04日

麻雀プログラムの作成 その6

明けましておめでとうございます。冬休みがもう終わってしまいました。年始も一応コツコツ作ってはいて、3割ぐらいの役判定と得点計算を実装しました。まだまだ残りの役判定もバグもいっぱい残っています。麻雀プログラムの作成は大変ですね。

実行結果

mj_result_010.png

メンタンピンツモで20符判定なども一応はうまくいっているようです。点数は表示しているだけで反映していないので、その辺も実装しないといけないですね。
web拍手 by FC2
posted by シンドラー at 22:58 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2016年12月31日

麻雀プログラムの作成 その5

大晦日ですね。昨日の続きで国士無双の判定と、日本語文字の表示を行いました。国士無双に関しては、么九牌13種全て揃っているということと、頭1つで14枚揃っているという二つの条件が必要です。そのため、完成までの牌数の計算にちょっと迷いました。

日本語表示に関しては、画像の読込みにOpenCVを使用していましたので、そのままOpenCV使ってやることにしました。ただ、OpenCVも2系の段階では日本語表示に対応していないようでしたので、[1]のヘッダファイルを使用させていただきました。

実行結果

mj_result_009.png

国士無双は4人打ちで揃えるのは大変ですので、1人打ちにしてデバッグしました。日本語表示するとかなりましになった気がしますね。特殊な判定が必要な国士無双と七対子が終わりましたので、後はその他の役を少しずつ追加していきたいと思います。

[1] OpenCV で日本語を出力しようパート2
web拍手 by FC2
posted by シンドラー at 18:50 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

麻雀プログラムの作成 その4

もう年末ですね。テレビを見ながらゆっくり実装です。今回は七対子の判定を追加しました。七対子は、名前の通り対子が7個ですので、それぞれの種類の牌の数を数えて、2個のものが7個あれば完成となります。分割したパターンでは、槓子を対子2つと区切る場合もありますが、4枚使いの七対子は無しの方針なので、そこの判定にだけ注意が必要です。

後は[1]の背景画像を使用させていただき、上がった時に表示される画面を追加してみました。次は他の役判定と点数計算です。今使っているビットマップフォントはアルファベットのみなので、役の表示とかどうしましょうかね。

実行結果

mj_result_007.png

[1] 4K バックグラウンド 無料素材
web拍手 by FC2
posted by シンドラー at 00:32 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2016年12月28日

麻雀プログラムの作成 その3

続きです。リーチ判定ができるようになっていたので、ツモ及びロン判定はすぐできました。ツモの時は手牌の14枚、ロンの時は手牌13枚+捨て牌の組を作成し、それの待ちが1個(対子)のみであれば上がれるという判定です。七対子と国士無双は後回しです。

実行結果

mj_result_006.png

これで後は役判定ができれば、一人で四人打ち麻雀ができるようになります。役判定も基本的には力押しで組み合わせパターンを列挙して一番役数が多いものを採用になると思います。
web拍手 by FC2
posted by シンドラー at 03:31 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2016年12月25日

麻雀プログラムの作成 その2

前回の続きです。リーチ判定をするためには、役が揃うまでに後何手か判定できる必要があるので、まずは役判定の前にリーチ判定を実装しました。

鳴き判定をするために、萬子、索子、筒子、字牌それぞれで対子や順子、両面待ちなどの数を数えていますので、それで判定します。リーチできるのは後2つ必要な牌が来れば上がれる状態ですので、頭の対子を除いて待ちの数が2の場合リーチ可能とします。そして、リーチ可能となる捨て牌の判定ですが、これも力業で(最大)14個の手牌のうち、それぞれ1個取り除いて待ちの数が1になるものを見つけました。

実行結果

mj_result_004.png
リーチするための捨て牌候補を赤枠表示

mj_result_005.png
リーチ後

少し試した範囲では問題なく判定できているようですので、次はロンやツモできるようにしたいと思います。
web拍手 by FC2
posted by シンドラー at 19:59 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2016年12月23日

麻雀プログラムの作成 その1

いつの間にか年末ですね…。今回は麻雀プログラムの作成です。役判定とかAIとかかなり面倒な実装が必要ですね。参考文献は[1][2]などです。本はあまりなく、ネットで検索した方が色々情報がありそうでした。言語としてはC++でOpenGL使っています。OpenGLは一枚の平面に画像貼って表示してるだけです。

とりあえずは役判定やAIは後回しにして、配牌や自摸切り、鳴きを実装してみました。牌画像は[3]のものを使用させていただいております。

実行結果

mj_result_001.png

縦に手牌と捨て牌並べているので見えづらいですね。加槓が捨て牌に重なってたり文字表示もビットマップフォント使っていたり手作り感満載です。

ここまでで問題になったのは、鳴けるかどうかの判定処理です。これをするためには、手牌を解析してトイツや両面待ちなどがあるかどうか調べておく必要があります。最近は計算機の性能が上がっていてゴリ押しでも十分速いので、スタックを使ってすべての組み合わせを列挙して保持しておくことにしました。

mj_algo_001.png

最初に上記のように1個だけ、一番左を処理候補としたデータをスタックに積みます。

mj_algo_002.png

その後、1個取り出して取りうる候補(A〜F)を列挙して、またスタックに積みます。次はFを取り出して…とFILO方式ですべての候補がなくなるまで繰り返します。

上の方法の場合、対子―単騎と単騎―対子などの組み合わせがダブってしまいますが、とりあえず列挙して後で被っているものは削除しました。ちゃんと考えれば被らずに一度で終わらせる方法もあるとは思います。

チーの場合は複数候補が考えられますので、それを表示して選択するようにしました。ここまでで上がれないけれど一応打つことはできるようになったので、次は役判定に入りたいと思います。

mj_result_003.png

[1] 有馬元嗣著,"ゲームプログラミング 遊びのレシピ", ソフトバンク株式会社,1997
[2] 石畑恭平著, "コンピュータ麻雀のアルゴリズム", 株式会社工学社,2007
[3] 【保存版】商用無料の高クオリティーの麻雀画像の無料素材まとめ
web拍手 by FC2
posted by シンドラー at 21:41 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2015年07月09日

MeshLabのスクリプトについてのメモ

MeshLabは色々機能があって便利ですね。あまり知られていないかもしれませんが、MeshLabはコマンドラインからバッチ処理ができたりします。その処理内容についてですが、GUI上で行った操作をスクリプトとして出力できて、それをコマンドライン実行時に引数で指定してあげればいいという優れものです。

やり方については[1]に書かれています。

で、バッチ処理する際のバッチファイル(Windows用)のメモです。
  set PATH=%PATH%;C:\Program Files\VCG\MeshLab

  for %%V in (*.obj) do (
    meshlabserver -i %%V -o output\%%V -s default.mlx
  )
  pause
最初にmeshlabserver.exeがあるディレクトリへのパスを設定します。次に、そのディレクトリ内にある全ての.objファイルに、default.mlxで指定したフィルタリング処理を行って、outputディレクトリに出力する、ということをしています。

ファイルフォーマットの変換だけなら、スクリプトなしで下記のようなバッチファイルで行けます。
  set PATH=%PATH%;C:\Program Files\VCG\MeshLab

  for %%V in (*.ply) do (
    meshlabserver -i %%V -o %%~nV.obj
  )
  pause
ディレクトリ内の.plyを.objに変換するサンプルです。%%~nVで拡張子なしファイル名になるので、それに.objを付けてあげれば出力ファイル名になります。

[1] http://www.andrewhazelden.com/blog/2012/04/automate-your-meshlab-workflow-with-mlx-filter-scripts/
web拍手 by FC2
posted by シンドラー at 18:56 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2015年06月09日

VOXファイルをMinecraftへImportするメモ

ちょっとだけMinecraftもやっていたので.voxをMinecraftに導入するためのメモです。(Minecraftでコツコツ作る楽しみが半減してしまいますのでオススメしません)

MagicaVoxel0.96では、slab形式のvoxでExportできます。(右下のExport→slab)Exportすると、Exportフォルダに○○.slab.voxというファイルができています。

このslab形式のvoxですが、slab6[1]というソフトウェアで読み込むことができます。File→Openで○○.slab.voxを開き、そのままFile→Save Asで○○.KV6で保存します。

続いて、kv6ToSchematic.jar[2]を実行します。Javaの実行環境が必要ですので、ダブルクリックしても起動しなければインストールしてください。とりあえず今回はUse Default Palette→Use Wool Blocksで羊毛として出力しました。後は○○.KV6を開いて、○○.schematicとして保存します。

最後に、MCEdit[3]でワールドをEditして、Importで○○.schematicを配置してSaveすれば完了です。

実行結果

MagicaVoxel[4]のサンプルをテストで読み込んでみました。問題がありましたらお知らせください。

minecraft_002.png

256x256x256のようなボクセルも一応試してみましたが、大きいのはちょっと大きすぎて微妙でした。

[1] http://advsys.net/ken/download.htm
[2] http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-tools/1265323-kv6toschematic-import-3d-models-with-textures
[3] http://www.mcedit.net/
[4] https://voxel.codeplex.com/
web拍手 by FC2
posted by シンドラー at 02:26 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2012年11月30日

Visual Studioのプロジェクトのプロパティシートの使い方について

オレオレライブラリを作って色々使いまわしているんですが、新しいプロジェクトを作成するたびに行うプロパティ設定が面倒でしたので、プロパティシートの使い方をメモしておきます。

[1] プロパティシート(C++)
http://msdn.microsoft.com/ja-jp/library/a4xbdz1e.aspx
[2] OpenCV 2.2 を Visual C++ 2010 Express で使うための準備から動作確認までの手順とプロジェクトサンプルとプロパティシートサンプル
http://d.hatena.ne.jp/Guernsey/20101205/

プロジェクトのプロパティ シートを作成するには([1]より抜粋編集)

1.Visual Studio IDE でソリューションを開く。
2.[表示]→[プロパティ マネージャー]で[プロパティ マネージャー]ウィンドウがIDEの左側にドッキングした状態で表示される。
3.[プロパティ マネージャー]で、新規プロパティ シートを含めるプロジェクトを右クリック→[新しいプロジェクト プロパティ シートの追加] をクリックする。
4.[新しい項目の追加] ダイアログ ボックスの [名前] ボックスに、新規プロパティ シートの名前を入力する。
5.[追加]をクリックする。

追加したプロジェクトのツリーを開くと、Release | Win32といった感じの項目が並んでいて、さらに開くと4.で入力した名前のプロパティシートが追加されています。

6.↑のプロパティシートを右クリック→プロパティで一般的なプロジェクトのプロパティ設定画面のようなものが表示されるので、既に設定済みのプロジェクトと比較しながら設定する。(見比べてみると結構デフォルトの設定が異なっています)
7.設定が終わったら、プロパティシートを右クリック→○○の保存をすれば、○○.vspropsという名前のプロパティシートが更新されます。(テキストエディタなどで開けば確認できます)

新しく作成したプロジェクトにこのプロパティシートを適用するためには、
1.[表示]→[プロパティ マネージャー]でプロパティマネージャーを表示する。
2.追加したいプロジェクトを右クリック→[既存のプロパティ シートの追加]をクリックすれば、ファイル選択のダイアログが表示されますので、作成した○○.vspropsを読込めば設定が反映されます。

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

2012年09月16日

離散フーリエ変換による海面の生成 その4

GLSLでレンダリングしてみました。

フレネルの式の近似で反射率を計算して、反射したベクトルはスカイドームから、屈折分はただ単に水色を合成しています。

スカイドームは下記のデータを使用させていただきました。
ttp://www.nicovideo.jp/watch/sm10968092

実行結果



スカイドームの使い方を間違えている気がしますので、少し微妙です。
白波やコースティクスなどもできていないので、もうちょっとレンダリング方法をちゃんと調べる必要がありそうです。

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

2010年06月05日

STLのvectorのメモ

いつもやり方忘れてグーグル先生に尋ねているのでメモしておきます。

// vectorの宣言
std::vector<int> test;

for (int i=0; i<10; i++)
{
test.push_back(i);
}

// イテレータの宣言
std::vector<int>::iterator it;

// 全ての要素の参照
for (it = test.begin(); it != test.end(); )
{
std::cout << *it << std::endl;

// データの削除(戻り値が次の要素を指している)
it = test.erase(it);
}

メモでもいいのでコマメに更新したいものです。
web拍手 by FC2
posted by シンドラー at 15:56 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2010年01月20日

IrrlichtとODEのdrawstuffについて

ODEの簡易描画ライブラリであるdrawstuffのIrrlichtバージョンがいつの間にか公開されていたようです。

http://demura.net/9ode/5892.html

ODEのオブジェクトを作るだけで描画コードを書かなくても描画してくれるdrawstuffの上位互換ライブラリということで、便利そうですね。

以上。今日も紹介のみでした。

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

2010年01月17日

MikuMikuDanceのバージョンアップ

MMDがバージョンアップして、セルフシャドウ機能が入ったようですね。



近いところほど高解像度の影ということはPerspective Shadow Mapでやっているんですかね?

既にいくつか使用した動画が出てきているようですね。



結構薄めの感じですが、これぐらいの方が違和感でなくていいんですかね。

まぁ紹介というような感じで。

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

2009年12月31日

年末ですね

時間が経つのが早すぎて困ったものですね。

ニコニコ技術部のランキングを見ていたらこんなのがありました。



変換元はともかく完成すればMMDのモデルがさらに増えそうな感じですね。

後はDXライブラリでPMDファイルやVMDモーション読込み、Xファイル出力とかもできちゃうみたいですね。DXライブラリはオープンソースみたいだし素晴らしいことです。



この他にもMMDモーションの全自動生成とかモーションの切り貼りとか「MMD技術部」のタグが付いているものは結構面白そうなものが多いですなぁ。

まーCG系はしばらく置いておいて別の勉強をしないと…。

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

2009年11月06日

Unreal Development Kitについて

ちょっと油断すると2,3カ月経っていて恐ろしいことです。

ついったーなどでUnreal Development Kit(UDK)の話題があったのでダウンロードしてみました。
PhysXやHavokがフリーになってきたと思ったら今度はゲームエンジンがフリーですか。
教育・非商用利用でフリーとはありがたいことです。メニューなどは日本語になってますし。
http://udk.com/index.html

それにしても色々なツールが入ってますねぇ。開発環境として出すにはこれぐらいは必要なんですかね。

とりあえずダウンロード
http://developer.nvidia.com/object/udk.htmlのClick here to get UDK now!をクリックしてインストール

デモは3つ
http://udk.com/showcase-ut-game.html
UT DemoはUDKをインストールすれば入っているようです。

WhizzleはPDFのドキュメントがついています。
http://udk.com/showcase-whizzle.html

The Ball
http://udk.com/showcase-the-ball.html

この2つのデモはインストールしたフォルダのBinariesのUDK.exeを実行すれば動くはずです。多分。
それにしても結構PCのスペックが要りますね。

UDKをインストールすると、スタートメニューのプログラムのUnreal Development KitにEditorとかGameとかSpeedTreeとかが追加されます。

Gameを選ぶとUT Demoが起動するようです。

Editorを選ぶとUDKのEditorが起動します。ゲームを作る場合はこれを使うんですかね。

SpeedTreeは木を生成するみたいですね。面白そうですねぇ。
http://blendermoe.blogspot.com/2009/11/etc-udk.html

土日に元気があれば色々試してみたいと思います。
続きを読む
web拍手 by FC2
posted by シンドラー at 19:09 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年07月16日

移植作業中 その3

MMD関係の進歩は速いですねぇ。

ARTK_MMDの拡張ですね。インタラクティブですね。


BVHもそのうちやろうかと思っていましたが・・・。


他に何かすることありましたかねぇ。

まぁそれはそれとして、とりあえず移植作業の続きです。
モーフィング関係が怪しかったので書き直してみました。
まだ怪しいです。

実行結果



次はIKの修正ですかね・・・。
web拍手 by FC2
posted by シンドラー at 20:03 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年07月10日

移植作業中 その2

VMDファイルを読み込んで再生まで移植しました。

適当なIKじゃ駄目駄目ですね。ひどいことになってます。はちゅねじゃないと見れたもんじゃないです。

くるっと一回転できなかったり一瞬消えたり、IK以外の部分にも問題がありそうです。

ついでにFPS30で動かすのもぎりぎりで、録画していると30切っちゃいますね。高速化もちゃんとしないといけないんですかね・・・。

実行結果

エナメルP様のはちゅねモデルとわさびP様のLove&Joyモーションデータを使用させていただいております。




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