python
ここのところwxWidgetsを使ってc++でごりごり書いていたのだが、やっぱりGUIをc++で書くのはめんどくさすぎるのでスクリプトを導入することにした。 速度が必要なところだけc++でモジュールを書く方向。去年の年末微妙に話題になっていたBoost.pythonでやっ…
vector_indexing_suiteではまった。 shared_ptrを格納したvectorから取り出したオブジェクトのメソッド呼び出しがうまくいかずにはまる。こんなの struct VertexBuffer { std::vector<boost::shared_ptr<IndexBufferArray> > &getBuffers(); }; エラー Boost.Python.ArgumentError: Python argume</boost::shared_ptr<indexbufferarray>…
後ろにtuple作るのがめんどくさかったのだが、求めていたのに近い方法を発見。 http://python.matrix.jp/tips/container/dict.html#id8 name='hoge' print 'hello %(name)s' % vars() # "hello hoge" vars()は知らなかった。 覚えておこう。 ついでに試して…
スキニングの都合上glRotatefやglTranslatefを使わずに変換を実装する必要があるので下準備にこれらをglMultMatrixfで置き換えるテストコードを書いてみた。 さらにOpenGL3に準拠しようと思うとglMultMatrixfすらdeprecatedなので計算した行列をvertex shade…
IKの読み込みまで完了。 足もちゃんと動くようになった。まだまだ不完全だがとりあえず http://github.com/ousttrue/blender-mmd-importer (2.49bじゃないと動かない) あとはテクスチャのアルファチャンネル対応と表情の読み込みをやれば完了。
重なった骨が見にくいので八角形ボーンにしてみた。 さらに変な処理をして骨の親子関係がおかしかったところを整理した。 PMDは素直なデータ構造なので余計なことをせずにまっとうに組み立てればOK。 八角形にしたついでに、OpenGLのSELECT_MODEで骨を選択で…
http://oldriver.org/python/pep-0008j.html スペースで4vimの設定をスペース2で使っていたので放置していたが、人様のコードを切り貼りするときに非常に不便なので悔い改めることにする。pythonだけスペース4に設定する。 とりあえず情報収集。 http://d.ha…
今作っているツールに次のようなコードがあるのだがかなり遅い。 # RGB配列とAlpha配列を合成してRGBAにするコード image=wx.Image(path) w=image.GetWidth() h=image.GetHeight() # RGB rgb=image.GetData() # Alphaチャンネル alpha=image.GetAlphaData() …
いつもの自前主義が発動して夏前に書いていたMikotoモーションビューワ(頓挫中)みたいなのをまた作り始めた。 今度は、pmd/vmd形式が対象でwxPython(wx.GLCanvas)で書いている。wxAUIが使えれば何でもよかったが、OpenGLのコード残骸がディスクに残っている…
とりあえずprint debugが簡単にできるように def p(*args): for arg in args: MQSystem.println(str(arg)) p(MQSystem.getDocument()) メタセコイアのpython用にモジュールを追加する Metaseq.exeと同じディレクトリに import sys p(sys.path) に出てくるデ…
メタセコイアのスクリプトは素の状態だとエラー情報が一部しか表示されない。 例えば def p(*args): """ プリント関数 複数の引数を渡せる。 """ if len(args)==0: # 改行させる MQSystem.println("") return for arg in args: MQSystem.println(str(arg)) d…
ハードディスク発掘していたら微妙なコードが出てきたので書き直してメモ #!/usr/bin/python # -*- coding: utf-8 -*- import wx import os class ImagePanel(wx.Panel): def __init__(self, parent): super(ImagePanel, self).__init__(parent) self.bmp=No…
http://www.wxpython.org/docs/api/wx.lib.mixins.treemixin.VirtualTree-class.htmlwxLC_VIRTUALのツリー版だそうで。 これはなかなか快適そうだ。 #!/usr/bin/python # coding: utf-8 # 2009/12/8 4タブ化してVTree.SelectPath()を追記 import wx from wx.…
#!/usr/bin/python # coding: utf8 import wx app = wx.App() frame = wx.Frame(None, wx.ID_ANY, u'こんにちわ世界') frame.Show(True) app.MainLoop() unicode文字使うだけ。windowsは wxPython2.8-win32-unicode-2.8.10.1-py26.exe で試した。特に理由が…
unicode文字列をprintするとUnicodeEncodeErrorが出るのに悶絶。 今までわりとpython使ってきたけどこのエラーには遭遇したことは無かった。 調べてみると、日本語周りではわりと起こりがちなエラーでhttp://d.hatena.ne.jp/SumiTomohiko/20070120/116930062…
python-fuを弄っていると プラグインがクラッシュしました。 という何やら致命的なメッセージに遭遇するが、 これはpythonの文法エラーレベルの問題のようだ。 こんな感じでコマンドラインでpythonに食わせてチェックする。 $ python layers.py File "layers…
ディレクトリを指定してlayerをpngで保存する。 ファイル名はレイヤー名そのまま。 UTF-8で %USERPROFILE%/.gimp-2.6/plug-ins/layersplitter.py と保存する。 file_png_save_defaultsの引数がgimpのpdbで出てくるのと微妙に違ったりするのだが python向けの…
定型処理をスクリプト化するために久しぶりにやってみる。 いろいろひっかかるところがあったのでメモ。 スクリプトの配置場所 ~/.gimp-2.7/plug-ins/hoge.py 書き方 ascii文字のみで書くこと(コメントも含めて) 日本語使うときは # coding: UTF-8 を書いて…
Linux上で動く軽量なPaintツールを探していたら MyPaint http://mypaint.intilinux.com/ というのが見つかった。 PyGtkで書かれているがわりかし軽快。 細かい挙動を自分好みに改造すればよさげ。 素のままでは微妙に使いにくい。 ソースを少し読んだ gitリ…
使用環境はGentoo Linux でinkscape-0.46。まずはスクリプトの動作について。1. 起動時に ~/.inkscape/extensions/*.inx を読み込んでEffectsメニューに登録する。 2. 登録されたメニューを実行すると $ python rect.py --id=rect2383 /tmp/ink_ext_XXXXXX.s…
http://boost.cppll.jp/BDTJ_1_29/libs/python/doc/tutorial/doc/building_hello_world.html をやってみた。 環境はWindowsXP VC8(ExpressEdtion) boost-1.37.0に添付されているサンプルはそのままでは動かず結構苦労した。 過去のバージョンが放置されてい…
perlとかrubyと比べて若干使いにくいpythonの正規表現についてメモ。 とりあえずはmatchじゃなくてsearchを使う。 繰り返しが入る場合は、findall。 場合によってはsubをコールバックと一緒に使う。 import re # -*- encoding: utf-8 -*- html=""" <html> <head> <title>サンプル</title></head></html>…
何故かvimがutf-8で保存したときにbomを付加するようになってしまい、 そのせいで正規表現がうまくマッチしないのに悩まされた。 とりあえずutf-8のBOMを削除するコード。 text=open('utf8.txt').read() import re re_bom=re.compile('^\xEF\xBB\xBF') text=…
()で囲んでおくことと見つけたり。 long_long_string=( # この括弧でindentを無視する。隣あう文字列は勝手に連結されるので+無しでも可 "long long long very long long long long long long string" + "long long long very long long long long long long…
新しいマシン環境でいつも忘れるので手順を書いておく http://peak.telecommunity.com/DevCenter/EasyInstall から ez_setup.py をダウンロード。 > python ez_setup.pyと実行。 windowsなら C:\Python25\Scriptsにpathを通しておく。コマンドラインで > eas…
pythonでcursesの練習を作ってみた。 padとstdscrを混ぜて使って画面が更新されないのに2時間くらいはまる。 cursesデバッグしにくいよ。 いまいち勝手がわからない。 #!/usr/bin/python # -*- coding:utf-8 -*- import curses import locale import os # …
glewpyのサンプルから vertexShaderとfragmentShaderのソースだけを変更して試すベースを作成。 これからGLSLの中身に入る。 #!/usr/bin/env python # -*- coding:utf-8 -*- import sys from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT …
pyrexのインストール http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/ からちょっと古い Pyrex-0.9.4.1.tar.gz をゲットしてきて解凍。 DOSプロンプトで中に入って、 > setup.py install glewpyのインストール glewpy-0.7.4.tar.gz を解凍。 DOS…
http://glewpy.sourceforge.net/ を動かすのに成功。 かなり頓挫しかけでCでやろうかと思ったのだが、 いちおうvertex shaderとfragment shaderの動作まで確認できた。
思ったより大変だ(画像のほっぺのぐるぐるが透明ぶぶん)まずmqo形式の透明は、 模様画像にアルファチャンネルがついているもの(pngとかtgaで)と、 透明にグレイスケール画像(とは限らないが)を指定する2種類がある。ひとつめに対応するのは簡単で、 glEnabl…