python

"cannot begin a template-argument list"対策

ubuntu上のswig-1.3.40でpythonモジュールをコンパイルしようとして遭遇。どういうエラーかというとswigで自動生成したc++ソースで std::vector<::meshio::la::Vector3,std::allocator< meshio::la::Vector3 > > こういうソースが生成されていて、" distutilsに介入して 文字列置換する swigの呼び出しは、setup.pyから自</::meshio::la::vector3,std::allocator<>…

easy_installの後継

http://pypi.python.org/pypi/distribute easy_installからforkしたらしく、python3にも対応している。 python2, python3両方共これでOK。

Sphinxいいよ

http://sphinx.shibu.jp/index.htmlhttps://docs.google.com/fileview?id=0B8X4zWf2QEfqYzk5OTMxYzMtMGEzMC00ZTkyLTg4YzktYjg4ZjRmMTZiYjgy&hl=ja&pli=1ドキュメントツール。 木構造増の静的なサイトをつくるのにはとてもよさげだ。 webby, nanocと渡り歩い…

bytesからchar*への変換

python3のマルチバイト文字列であるところのbytearraybytesをcのchar buf[20]に代入したい。textbuffer.h struct TextBuffer { TextBuffer(); char buf[20]; };textbuffer.cpp TextBuffer::TextBuffer() { } textbuffer.i %module textbuffer %{ #include "t…

pytnon3はsortの引数が変わっている

python3では微妙にsortの引数が変わっていた。 http://pythonconquerstheuniverse.wordpress.com/2009/01/07/moving-to-python-3-0-part1/ キーワード引数で、keyとかcmpを与えるように拡張されたみたいだ。それよりも、strがunicodeであることがswigとの絡…

twistedその4

HTMLのフィルタリング機能を実装する。 参考コードはこちら http://blog.somethingaboutcode.com/?p=155 +-------+ |reactor| +-------+---------+ +-----+ +-----------------+ +10080 HTTPFactory|->|Proxy|->|UpperProxyRequest| +-----------------+ +--…

twistedその2

ただのproxy。 from twisted.web import http, proxy from twisted.internet import reactor from twisted.python import log if __name__=="__main__": import sys log.startLogging(sys.stdout) f=http.HTTPFactory() f.protocol=proxy.Proxy reactor.list…

twistedその1

やっと使い方がわかってきたのでメモ。 twistedはイベントドリブンなネットワークフレームワークとか説明されるのだが、最初は何のことか分からんわけであります。 何かすごそうな気がするのだが妙に敷居が高い(3回は習得が頓挫している)。 twistedの部品…

twistedその3

上位プロキシ。上位プロキシにはProxomitronを使った。 ソースは http://lab.hde.co.jp/python/twisted/ で紹介されているものほぼそのままデス。 だいぶショートカットできました。感謝です。 from twisted.web import http, proxy from twisted.internet i…

twisted勉強中・・・

ちょいと上流にproxyをもつproxyサーバをpythonで書いてみたくなったので勉強中。これ読んだらだいたい判りそうだ。 http://twistedmatrix.com/documents/current/core/howto/tutorial/index.html 参考 http://akadav.sourceforge.net/twistedhowto/async.ht…

distutilsメモ

vcでpythonエクステンションをビルドするときにスタティックCランタイムを選択(cl.exeのオプション/MT)してマニフェスト無用の方法を模索したがそんなオプションは無いみたいだ。 distutilsは内部ではsetupのコール以降だいたい以下のように呼び出される dis…

mqo, pmdインポータがほぼ完了

ようやくpmdインポータでメッシュ、shape key、Armatureの読み込みまでができた。blender2.5向けのスクリプト情報が不足していて一部難航したがなんとかなった。夜に今バージョンを整理してアップロードする予定。 特に頂点選択からオペレーション(不要頂点…

スクリプト情報メモ

Blender2.5向けのスクリプト情報。 主に http://wiki.blender.org/index.php/Doc:2.5/Manual/Extensions/Python から辿れるところ。 Scripting examples http://blenderartists.org/forum/showthread.php?t=164765 Blending Into Python/2.5 quickstart Cont…

importer移植中

2.4系と互換性が無いのでバージョンアップじゃなくて移植。 python2がpython3になったことでいろいろ変えないといかん。 文法的に必要だった変更は、 print文がprint関数になった exceptの書き方が変わった(as) xrangeが無くなった くらいだったが、strがpyt…

python3の文字列

python2から3で unicode -> str str -> bytesに変わってswigでのstd::stringの中身がutf-8決め打ちになっている。 http://docs.python.org/py3k/c-api/unicode.htmlswigのhoge_wrap.cpp #if PY_VERSION_HEX >= 0x03000000 return PyUnicode_FromStringAndSiz…

python3向けのエクステンションを作る

python2向けと同じ手順で準備してsetup.pyをpython3で実行するだけ。 python2とpytnon3の両方にパスを通してpython3のpython.exeをpython3.exeにリネームしておいた。 $ python3 setup.py build これでblender2.5向けに使える。 python3向けにするのに-py3と…

std::vectorがどうなっているか

vertices.h #include <vector> struct Vertex { float x; float y; float z; }; struct Container { std::vector<Vertex> vertices; }; に対してswigインターフェース vertices.i %module vertices %{ #include "vertices.h" %} %include "vertices.h" %include "std_vector.</vertex></vector>…

メソッド追加

元となるc++のソースを改造せずにswigクラスのみにメソッドを追加する。 いくつか方法がある。 c++で追加する http://blog.ssktkr.com/swig-jp/_/Python.html#n43 pythonで追加する http://old.nabble.com/Python:-Adding-Pure-Python-Methods-to-Shadow-Cla…

swigでpython bindingのメモ

ポリゴン読み込みライブラリのswigを使ったpythonバインディング実験が完了した。 これを使ってBlenderのmqo, pmd, vmdのインポータのデータ読み取り部分を置き換えての動作も確認できたので、今回は予定通りswigを採用することにする。使ってみて気付いたこ…

distutilsの使い方

distutilsを使ったモジュールの作り方。 http://www.python.jp/doc/2.5/dist/dist.html pythonのcモジュールはエクステンションと呼ぶらしい。 distutilsのエクステンション http://docs.python.org/distutils/apiref.html#distutils.core.Extension

swig(python編)

とりあえずpython2から。 VC9ExpressEditionで本家のcpythonバージョン2.6向けのモジュールをビルドしたメモ。swigは最初cygwinのものを使ったが、バージョンが1.3.38とちょっと古かったのでswigのサイトでwindows向けビルド(1.3.40)を落としてきた。ついで…

面張り

どうも思っているのと違ったようなので確認してみた。 テキストエディタで次のコードを実行してから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)…

やっとハードウェアスキニングに成功

どうにも気になるのでいろいろ試していたがやっとできた。 pythonでpmdのスキニングをやっても40FPSくらい出るようになった。元が7FPSくらいだったのでだいぶよい。モーフィングとIK解決はやっていないが。とりあえず、使ったシェーダー。PMD用に2ボーンきめ…

バイナリ書き込み

struct.packの仕様について。 デフォルトがアライメント付きという罠仕様だった。 アライメントを回避するにはフォーマットの先頭に'='を入れる。 import struct s=struct.Struct("BI") print s.size # 8 s_no_alignment=struct.Struct("=BI") print s_no_al…

チュートリアルを書きはじめた

はじめはC++でやろうかと思ったのだが、コード量が多いとつらいのでpython+OpenGLにしておいた。部分的にC++モジュール化して高速化するのはあるかもしれない。 チュートリアルというよりはサンプルコードの羅列になりそうだが、 とりあえず最初の頂点配列の…

numpyインストーラの罠

http://d.hatena.ne.jp/name-3333/20090423/1240491995 日本語パスにインストーラ置くと失敗する。 あのエラーメッセージじゃわからん。 Windowsのデスクトップをカタカナにしたやつぁ誰だw

boost.pythonでC++からpythonの関数オブジェクトをコールする。

boost.pythonのFAQにはこんなの http://www.boost.org/doc/libs/1_41_0/libs/python/doc/v2/faq.html#funcptr が載っているがそりゃ無理だろうとw そうじゃなくて、普通にpythonのオブジェクトを取り出してコールする方法について。 #include <boost/python.hpp> #include <iostream> vo</iostream></boost/python.hpp>…

pyOpenGLをpy2exeする

すんなりとはいかなかった。インストール http://www.xucker.jpn.org/pc/pythonexec.htmlまず、こちらを参考にvcランタイムの問題をクリアする。 http://d.hatena.ne.jp/AMENOHI/20090202/1233575464exeを実行するとpyOpenGLのエラーがでる。 $ ./dist/gui.e…

tinyさん読み込み

去年から作ろうしていたモーション再生プログラムがやっと形になりそうだ。mmdのモーションを読み込んで遊びたい ↓ blenderのimporterを発見して改造(python) ↓ なんとなくデータ構造がわかったのでスタンドアロンの再生プログラムを作ろうとする(python) ↓ …