2010-04-01から1ヶ月間の記事一覧

ポリゴン読み込みライブラリの場所を確保

c++

なんとなくsourceforgeにアカウントをゲットしてみた。意外にもgmailのアドレスだけでアカウントが取れるようになっていてわりとお手軽。いろいろ機能盛りだくさんなのでおいおい見てみよう。 ライブラリの方は最低限の実装ができたのでgitリポジトリを作っ…

骨付きメッシュの読み書きライブラリを作成開始

次は、mqo, pmd, vmdの読み書きを単体のC++ライブラリとして独立させることにしようと思う。 それについての指針をメモ。 基本的にデータを読むだけで「何も足さない・何も引かない」を旨とする。既に部品はあるのでリファクタリングしてライブラリとしての…

3Dの読み込みライブラリについてのメモ

3Dプログラミングのめんどくささの1つにデータ読み込みにお手軽なライブラリが無いということがある。そのため何か作るたびにスクラッチでパーサから書く破目になったりするので本題に入る前にだいぶ燃料を使ってしまったりする。それを避けようとすると三角…

PMD用のスキンメッシュクラスをアップした

あまり需要が無さそうだがきりのいいところでいったんアップしてみる。 http://gunload.web.fc2.com/irrlicht/download.html ビルドにirrlicht-1.7.1, bullet-2.76, boost, glewが必要なのでちょっとめんどくさいが興味のある人はどうぞ。

プログラムで動画を書き出す方法を調べ中

OpenGLの動画書き出しのサンプルコード http://kiwame-soul.cocolog-nifty.com/blog/2008/08/opengl_fd84.html圧縮されたストリームとキャプチャ http://eternalwindows.jp/winmm/avi/avi00.html 上記の組み合わせでOpenGLの再生結果を圧縮されたaviファイル…

重力加速度

妙にゆっくりと落下すると思ったらワールドの縮尺がMKS単位系じゃないのに重力に9.8を指定していたからだった。 PMDだと1マスが40cmくらいとのことで9.8の2.5倍くらいにしたらいい感じになった。

bullet組み込み成功

ついにツインテールが揺れるようになった。 重力がおかしい主要な原因は、剛体の初期位置指定で位置と回転を逆に指定するというミスのせいだった。どういうことかというと剛体のオイラー角と位置の読み込みデータを同じ型の構造体(三次元ベクトル)に格納して…

btMotionStateメモ

PMDの剛体情報とbulletのMotionStateの関連性がだいたい理解できたのでその辺りについてのメモ。フォーマットはこちらを参照 http://blog.goo.ne.jp/torisu_tetosuki/e/1e25fc196f2d7a7798f5cea87a942943また、ソースはARTK_MMDを参考にしています。 btMotio…

剛体変換

bulletのbtTransformが扱うのは剛体変換で内部に3x3の回転行列と3次元ベクトルを持つ。 bulletは縦ベクトルモデルのようなので区分行列で書くと となりRが回転行列でTが移動要素となる。 なので bulletのソースsrc/LinearMath/btTransform.h /**@brief Mult…

回転が合わない

Irrlichtとbulletで回転が合わない?というか何があっていないのか良く判っていないのだが、髪などの物理演算の影響下にあるボーンがすべてコンストレイントの限界まで上昇している。重力を逆にしても関係なかったのでもっと他のところではまっている。 Irrl…

IKまで完了

テクスチャと表情モーフィングとIKを実装 IKのひざの特別処理で回転をオイラー角に分解してから、角度に制限を加えた後でオイラー角を回転に戻す処理があるのだがそこで使った core::matrix4::setRotationRadians か core::quaternion::quaternion(const cor…

FKまで実装完了

テクスチャ未処理(目) 足のIKが未解決 ひとまずFKの実装まで完了。 踏んだ地雷について。 core::quaternion::getMatrixがおかしい 今まで見たことのない微妙な歪み具合に2時間くらいはまる。結局Irrlichtの方に問題があったみたい。quaternionから回転行列…

剛体表示(修正)

Irrlichtに乗せるにあたってBulletを調べていたら前の剛体表示はミスってたことが判明。 PMDにある3種類の剛体のうちボーン追従タイプが出ていなかった。 Cスタイルのキャストには注意しないといかん。dynamic_castを使っていればすぐに気付いたのに。 btMo…

pmdとvmdがちゃんと動くようにしてみよう

MMD本体付属の初音ミクVer2.pmdを読み込んでみた図 とりあえず、SAnimatedMeshにSMeshをのせて中身をSMeshBufferとSSharedMeshBufferで充填するところまでやってみた。 SSharedMeshBufferは2chのIrrlichtスレにあるとおり既に放置されているらしく仮想関数が…

剛体表示

モーション再生の積み残しになっていたBulletの使い方について調べ中。 ARTK_MMD http://ppyy.hp.infoseek.co.jp/artk_mmd.html のソースを組み合わせてSDLのOpenGLで再生するところまでできた。 今からbullet部分の調査に入る。 pmdフォーマット http://blo…

モデリング

blender2.5への乗り換え訓練を兼ねてまたこんなものをモデリング開始。 斜めの面を揃えるのに良い手は無いものか。 2.4系とそんなに違わないがところどころ違うところで戸惑うのでメモ。 画面分割・統合方法 各分割領域右上の三角地帯を左ドラッグする。 外…

スクリプト

また、2.5に戻ってきた。 で、スクリプトなんだがテキストエディタから実行するとメッシュの状態が更新されていないことがあった。 obj=(bpy.context.object) mesh=obj.data # mesh.verts.selected()は無くなった for v in mesh.verts: print(v.selected) 頂…

モデリング2

へっぽこテクスチャを貼ってみた。 字が書いてあると左右対称でなくなるからミラーリング解除が必要だな。 あと車輪UV展開失敗。あとでやりなおす。

2.49b向けのマルチバイトパッチ更新

レンダリング結果書き込みに日本語パスを指定できるようにした。 (連番、avi, ffmpegで確認) http://gunload.web.fc2.com/blender/download.htmlとりあえずパッチを本家に投げてみた。 当初の予定よりだいぶ長くなったのでつらいような気がするが通ればいい…

面張り

どうも思っているのと違ったようなので確認してみた。 テキストエディタで次のコードを実行してから3D viewで法線を確認してみると、 import Blender scene=Blender.Scene.GetCurrent() def createRectangle(): mesh = Blender.Mesh.New("MeshName") mesh.ve…

xmlビューワー

見るだけだけどちょいと必要だったので作った。 とりあえず貼り。 #!/usr/bin/python # coding: utf-8 import wx from wx.lib.mixins import treemixin import xml.sax import xml.sax.handler import sys import os FS_ENCODING='cp932' class Node(object)…

wxRubyでexeを作る方法

mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe を使っている。http://www.up-cat.net/wxRuby%2B%252B%2Bocra%2B2009.html

vmdの回転読み込みが分かった

slerpで短い方の弧で補完させるためには2つのクォータニオンの内積が非負になるようにしてやる必要があった。 今フレームと1つ前のフレームの回転クォータニオンの内積をチェックして負だったときにフラグを立てて以降のフレームのクォータニオンを[-w, -x…

GLSLマテリアルにもバックカリングが必要だ

ちょっと改造しよう。 改造した source/blender/src/drawview.c void drawview3dspace(ScrArea *sa, void *spacedata) ↓ source/blender/src/drawobject.c draw_object ↓ draw_mesh_object ↓ draw_mesh_fancy 2287行付近 if(draw_glsl_material(ob, dt)) { g…

lensが視野角だとなぜか思っていた

30(度のつもり)に設定してやけにパースがきついのにずっと頭をひねっていたw 焦点距離なのかな。http://je-pu-pu.jp/blog/archives/2005/04/blender_2.html

2.49b向けのマルチバイトパッチ更新

http://gunload.web.fc2.com/blender/download.htmlシーケンスエディタのフォント対応、シーケンスエディタのaudio読み込み、前からある不要な日本語翻訳をしてしまうバグの修正をした。シーケンスエディタでFTGLを使うのが予想外に面倒(特殊な投影になって…

2.49b向けのマルチバイトパッチ更新

MSGOTHIC以外の描画が遅い件を修正した。原因は、文字列の幅を指定幅まで削る関数で末尾1文字を削るたびに文字列のをピクセル幅をFTGLに問い合わせていることだった。これがMSGOTHIC以外だと遅かった。プロポーショナルフォントだからかもしれない。元はた…

MSGothic以外だと日本語の描画が遅い件

を調べていたのだけど、辿っていくとsource/blender/src/drawimasel.c:draw_file source/blender/src/language.c:BIF_DrawString source/blender/ftfont/intern/FTF_Api.cpp:FTF_DrawString source/blender/ftfont/intern/FTF_TTFont.cpp:FTF_TTFont::DrawSt…

vcでビルド

http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Ruby+Install+Guide%3A%3Amswin32+%28%A5%BD%A1%BC%A5%B9%A4%AB%A4%E9%29