プログラミング

データ解析

続MMD(PMD,VMD)をロードして描画してみた

前回からまだ不足していた物理演算部分を実装してみましたが、どうにもうまく再現できない状況が続いています。 今まではデータが左手系で格納されているために右手系に変換してロード&描画していましたが、物理演算においてはこのあたりの変換で失敗しているのかもしれません。一度右手系で無変換の方法でやってみたほうがいいのかな・・・。 世間からはかなり遅れて始めたMMDロー...
DirectX

D3DXでERROR_MOD_NOT_FOUND

ある環境でプログラムを動かそうとしたら、D3DXAssembleShaderFromFile 関数で ERROR_MOD_NOT_FOUND というエラーコードが返ってきた! こんなエラーは初めてで、エラーメッセージのログも何もなくとても困った・・・。 よくよく調べてみるとこのエラーは、必要なモジュール(DLL)がロードできなくてエラーとなったことを意味して...
データ解析

MMD(PMD,VMD)をロードして描画してみた

ネット上の先人の情報からMMDのデータ(PMDとVMD)のデータをロードして、DirectX11を使って描画してみることに成功しました。 色々と厄介な点もありましたが、今のところなんとか動いているようです。 基本形状を出すまでは結構早くに実現できたのですが、モーションデータの再生にとても時間を食われました。 特に、足の部分のIK処理と表情についてのモーフィン...
サーバー構築

GitLab

GitLab 4.1が先日公開されました。この4.1がなかなか魅力的だったのでここで紹介したいと思います。 今までのGitLabは無料のGitHubで出来ない、プライベートなリポジトリを持つことを前提として、 公開リポジトリに関してはサポートしないという位置づけでした。 これが今回の4.1では、パブリックなリポジトリをGitLab上で管理できるように機能が拡...
データ解析

MMDのデータをロードする(メモ)

MMDのデータ(PMDとVMD)をロードするということをやっていて、 今現在苦労中です。ここまでくるにも色々と気をつけなくてはいけない点がありました。防備録というかメモというか記しておきたいと思います。すごく今更ですが・・・。 座標系 データは左手座標系で格納されている。 右手座標系で処理している場合には、Z値の反転とポリゴン面の表裏が反転するので その補正...
プログラミング

Catmull-Clarkのサブディビジョン

先日のmqoでの曲面のこともあり、DX11世代ではテセレーションによる曲面分割のこともありとで、ちょっとCatmull-Clarkのサブディビジョンを計算するようなコードを書いてみました。詳しい理論はさておき以下のように実装できました。 なめらかな曲面が出来てくるのでなかなか楽しいです。最初はテセレーションの部分ってほとんど興味が無かったのですが、今回のよう...
プログラミング

mqo形式の読み込みにチャレンジ

2013年、あけましておめでとうございます。 今年はDirectX11世代(OpenGL含む)の勉強をしておかないとな、と思っています。 そんな2013年1つめのネタとして、メタセコイアのモデル形式mqoを読み込んで描画してみるということをやってみました。 mqoはファイルフォーマットが公開されていますし、単に形状を出すならそんなに難しいことはないと思います...
OpenGL

(OpenGLの)シェーダーバイナリ(GLSL Binary)

そういえばOpenGL 4.xでシェーダーのコンパイル結果をバイナリとして取得、ロードできる機能が追加されたのですが、当時ドライバがまだ対応していなくて見送っていました。ようやくこれについて調べてみることが出来たので、ここに書いておこうと思います。 まず、DirectXではシェーダーをコンパイルすると各ベンダで共通なシェーダーアセンブリ状態になります。このア...
OpenGL

DirectXとOpenGLのテクスチャ圧縮対応付け

最近のDirectXはDXT1,DXT3,DXT5 という言い方をしなくなりました。 これらはそれぞれBC1, BC2, BC3 と呼ぶようです。 そして、このBCのナンバリングは続いて BC7まであります。 このBC4からBC7までOpenGLではどのような拡張が対応付くのかを調べてみました。 BC4GL_EXT_texture_compression_l...
プログラミング

JavaScriptをC++からのスクリプトとして使う(クラス編)

C++で定義してあるクラスをJavaScript側で使いたいことがあります。今回はその説明をしてJavaScript編を終了にしたいと思います。 var hoge = new Point(1,2); hoge.x = 100; hoge.y = 250; var foo = new Point; foo = null; こんな感じのJavaScriptを実行...