python

配列から逆引きマップを作る

memo boneMap=dict([(b.name, i) for i, b in enumerate(bones)])

swigbullet作成中・・・

swigを使ってbulletのpythonバインディングを作っていて、BasicDemoがある程度動くところまでできた。 1フレーム50msくらいかかっていて、C++だと1フレーム5msくらいなので10倍くらい遅い2msくらいなので25倍くらい遅かった。 OpenGLの描画をC++に埋めてもま…

freetype-py

http://code.google.com/p/freetype-py/pythonのfreetypeラッパ。ctypesで実装されているので別途freetypeのバイナリが必要となる。Windowsの場合、 http://gnuwin32.sourceforge.net/packages/freetype.htm からバイナリを入手して、中の bin/freetype6.dll…

OpenGL ES2.0相当のAPIでユーティリティを開発中

OpenGL ES2.0 プログラミングガイドを参考にして、新しいAPIだけを使ってモデルビューワを作成中。 https://github.com/ousttrue/glbase zipファイルの中のモデルを表示 GLSL vbo interleavedな頂点配列 自前のpersepective行列 attribute変数の取り回し uni…

setup.pyの雛形

だいたい同じパターンで書けるので流用できるようにメモ。 githubとかbitbucketにリポジトリを作ってpypiで公開する想定。 setup.py, README.rst, MANIFEST.inの3つからはじめる。setup.py #!/usr/bin/env python # coding: utf-8 from setuptools import s…

ZipFileのsjis対策

zipの中身を見れるツールを作っていたところ、SJISで作られた(Windowsで作られた)アーカイブでは文字化けが発生することがわかった。 調べてみるとファイルパスにマルチバイト文字が使われているときにutf-8決めうちの処理があるのがまずくて、2箇所修正す…

oauthなtwitter実験

「入門ソーシャルデータ」を読んでいたら1章のサンプルコードの認証でこけた。なんか2010年の6月くらいにtwitter apiの認証方法がoauthオンリーになって、その後さらにoauth2.0に変わったらしく、それでうまくいかないようだ。 2012年1月の時点でpythonから…

pyOpenGL向けの便利ライブラリ作ってみた

OpenGLで何がしか書くときにはGUIとOpenGLを連結する部分でいわゆるボイラープレートコードが大量発生するのでそれをライブラリ化してみた。 OpenGLのControllerクラスを規約に沿って作ることで各種GUI間で使い回しができる設計。 http://pypi.python.org/py…

ctypesでWindowのクラス化をやってみる

http://hp.vector.co.jp/authors/VA025927/prog/winclass.html と http://code.activestate.com/recipes/208699-calling-windows-api-using-ctypes-and-win32con/ を合体してみた。c++でwin32apiを使っているとなんとなくやりたくなるウィンドウをクラス化す…

swigサンプル

swigのサンプル。 typemap(in) char * + int lenの引数をStringとして扱う typemap(ignore)とtypemap(argout) 出力用のポインタを返り値で返す(複数あったらtupleにつめる) numpyのarray入出力 downcast などexample.h #include <string> #include <array> class String { s</array></string>…

IrrlichtMLを取り込むところまでできた

先週は忙しくて全然できなかったが、今日から作業再開。 IrrlichtMLのfreetypeを使ったフォント表示と日本語入力のところを合体するところまでできた。 irrlichtをswigを使ってpythonバインディングにしたもので、 01.HelloWorld.py 02.Quake3Map.py 03.Cust…

irrlichtのpythonラップその2

Irrlichtのexampleの10番までがだいたい動くようになった。https://bitbucket.org/ousttrue/onibi/src/tip/swigirr/python/examplesswigに慣れてきたので、あっさりglslのサンプルを動かすことができた。あと、pythonラッパをirrlichtのnamespace毎に分割し…

irrlichtのpythonラップ

irrlicthのpythonラップができた。 とりあえず、HelloWorldがそのまま動くようになった。 当面は、Irrlichtのexampleの動作を確認しながら足りない要素のラップを進める方針。あと、データの読み込みが不便なので、python側でデータをロードしてirrlichtのメ…

pmx版のpmcaを作った

だいたいジオングくらいの完成度になったので公開してみる。http://matosus304.blog106.fc2.com/blog-category-7.html で配布されているPMCA的なものをpmxベースで作った。今回はなんとなくBitbacketにリポジトリを作ったのでこちらで配布しております。 htt…

epydocのreStructuredText

ディレクトリ指定で中身を全部処理するタイプのものがこれしか無かったので、docstringをhtml化するツールとしてepydocを選択している(sphinxとかpydocでもできるのかしら?)。 で、マークアップ方式にrestructuredTextを指定すると途中で死ぬ。 > epydoc.py…

1要素のtuple

前から書きながら気になっていたtupleと演算の優先度変更の括弧の区別をどうしているのかという問題があったのだが、今日気付いた。 >>> (1) 1 >>> (1,) (1,)1要素のtupleは上記のように カンマを打たないといけないのであった。 逆にカンマが無いと一切tup…

pyc掃除

findコマンドあればわざわざ書かなくてもよいのだけどwindowsだったので #!/usr/bin/env python #coding:utf-8 import os def visit(arg, d, files): for f in files: if f.lower().endswith(".pyc"): pyc=os.path.join(d, f) print(pyc) os.remove(pyc) os.…

python3.2でnoseインストール

インストーラがこける。setup.pyの63行付近以下のように改造。contents引数がstrのときとbytesのときの両方があるみたいだ。 def wrap_write_script(self, script_name, contents, *arg, **kwarg): if type(contents) is bytes: bad_text = re.compile( b"\n…

OpenGL.TKのメモ

部品なのでこれだけでは動かないが、tkinterとの接続方法について。 OpenGL.Tk.RawOpenglを使うのがミソで、OpenGL.Tk.Openglはマウス操作等が最初から組み込まれた便利Widgetなのだった。 RawOpenglのコード量は少ないので、直接tkinter.Widgetを継承しよう…

Windows上のPython3でOpenGL.TKを使う

続き。 C:\PyOpenGL-Demo-3.0.1b1\PyOpenGL-Demo\tom>Line.py Traceback (most recent call last): File "C:\PyOpenGL-Demo-3.0.1b1\PyOpenGL-Demo\tom\Line.py", line 9, in <module> __version__ = string.split('$Revision: 1.1.1.1 $')[1] AttributeError: 'modu</module>…

Windows上のPython3でpyOpenGLを使う

PyOpenGL-3.0.2a2.zip を > C:\Python32\python setup.py install したら特に修正しなくても動いた2012/01/20追記 Windows7 64bit python3.2 32bit でpyOpenGLを使う段取りのメモ。 まず、普通にpython3.2をインストール。 http://pyopengl.sourceforge.net/…

Windows上でのpython3のsetuptools

http://code.google.com/p/python-incompatibility/downloads/detail?name=setuptools-0.7a1dev-r66.tar.gz&can=2&q=http://old.nabble.com/setuptools-0.7a-for-Python-3-fails-to-build-on-Windows-td22957712.html

numpy野良ビルド

Windows版python-2.7-amd64向けのnumpyをビルドした手順。環境 Windows7 64bit C:\Python27に64bitの方がインストールされている C:\Program Files (x86)\Microsoft Visual Studio 9.0(Visual C++ 2008 Express Edition) C:\Program Files (x86)\Microsoft V…

scons on windows その6(独自Toolの定義)

カスタムのツールを定義するには、pythonスクリプトを所定の位置に置いてexistsとgenerateの2つの関数を定義すればいい。$HOME/.scons/site_scons/site_tools/msvc10.py import os vs_path='C:\\Program Files (x86)\\Microsoft Visual Studio 10.0' vc_pat…

scons on windows その5(64bit build)

vc2010 express editionをwindows7(64bit)にインストールしている場合 import os vs_path='C:\\Program Files (x86)\\Microsoft Visual Studio 10.0' vc_path=vs_path+'\\VC' sdk_path='C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1' AddOption('--arc…

scons on windows その3(Tool)

sconsにはToolという概念があって、これがコンパイラやリンカのセットを表している。WindowsだとvcやMinGWなどがあり、Linuxだとgccだ。さらに32bitと64bitがあるのでWindowsのCは環境がいろいろあるぞと。 # 無指定 env = Environment() # Default。たぶん…

scons on windows その2(tolua++のSConstructを読む)

tolua++がSConstructを使っているので読んでみる。 とりあえずビルドしてみる。 「Visual studio コマンドプロンプト」で開始。 > cd \work\tolua++-1.0.93 > scons scons: Reading SConscript files ... scons: warning: The Options class is deprecated; …

scons on windows その1

blenderとかtolua++のビルドシステムに使われているsconsを調べているのでメモ。sconsはプロジェクトビルドのうち、makeの機能を代替するpython製のツールだ。依存性を解決してコンパイラを呼び出して、リンカを呼び出すというあれ。blenderだとsconsに加え…

scons on windows その4(Blender)

blenderのsconsをvc10対応させる --- build_files/scons/tools/mstoolkit.py (リビジョン 35779) +++ build_files/scons/tools/mstoolkit.py (作業コピー) @@ -67,6 +67,8 @@ # look for toolkit if os.environ.has_key('VCToolkitInstallDir'): MSToolkitDi…

SJIS zipの解凍

http://enbug.tdiary.net/20090626.htmlさらに、ディクトリを掘るように追加。 import os # print ' inflating... の次に挿入 dir=os.path.dirname(name) if not os.path.exists(dir): print ' mkdir: %s' % (dir) os.makedirs(dir) 必要十分。