[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
PyDrawStuffはVPythonを使った、OpenDynamicsEngine用の3D描画ソフトウェアです。
今日の朝説明できなかったPyDrawStuffの仕様について説明します。
PyDrawStuffで出来ることは以下の通りです。
1. グラフ描画(複数も可、リアルタイムで描画)
2. スライダー、ボタンのGUI
3. ゲームパッド(十字キー、ジョイスティック、ボタン)
4. 効果音を鳴らす(バグあり)
実装はできますが、現在のところ未実装なことは以下の通りです。
1. 立方体、カプセル、円柱、球以外の図形の描画
2. 文字描画
3. 矢印描画
4. 多視点カメラ
5. キーボード入力
6. ヒストグラム
7. マウス入力
8. 3Dの文字表示
9. パフォーマンス測定
ほとんど実装できてないじゃないかと言う人がいるかどうかは分かりませんが、要望がない限り実装しません。
なお、本家のDrawStuffとは全く使う関数が違うので注意してください。
似ているのは名前だけです。
PyDrawStuffで使えるクラスは以下の通りです。
DrawBody : 図形描画クラス
glaph: グラフ作成クラス
controls: GUI作成クラス
Joystic: ジョイスティッククラス
Music: 音クラス
基本的に使うのはこれらのクラスのメンバ関数だけです。
DrawBody draw;
などとしてオブジェクトを作った後、
draw.init(500,200,500,500,2.5,vec);
などとして使ってください。
DrawBodyのメンバ関数は、
void init(int x, int y, double width, double height, double range, double *vec);
void init(画面のx座標, y方向の座標 画面の幅, 画面の高さ ,レンジ率, 視線の方向); 初期化(レンジ率1.0のときは、描画した物体が画面にピッタリ収まります。)
void drawBox(dBodyID body, dReal *sides, double *color);
void drawBox(ボディ 幅奥行き高さ, 色); 立方体描画
void drawSphere(dBodyID body, dReal r, double *color);
void drawSphere(ボディ, 半径 , 色); 球描画
void drawCylinder(dBodyID body, dReal r, dReal l,int direction, double *color);
void drawCylinder(ボディ, 半径 ,高さ,長軸方向, 色); 円柱描画
void drawCapsule(dBodyID body, dReal r, dReal l, int direction, double *color);
void drawCapsule(ボディ, 半径, 高さ, , 長軸方向, 色); カプセル描画
void CreateGround(double *w, double *color);
void CreateGround(幅奥行き高さ, 色); 地面作成
このうち、初期化と地面作成は毎ステップごとにする必要はないです。
続いて、glaphのメンバ関数は、
void init(); 初期化
void CreateGraph(int x, int y, double xmin, double ymin, double xmax, double ymax,double width, double height, const char *xtitle, const char *ytitle);
void CreateGraph(画面のx座標, x軸最小値, y軸最小値, x軸最大値, y軸最大値,画面の幅, 画面の高さ ,x軸タイトル, y軸タイトル); グラフの作成
void CreateCurve(double *color, int num);
void CreateCurve(線の色, 描画するグラフ); グラフに曲線を追加
void drawcurve(double x, double y, int num);
void drawcurve(点x 点y,描画する曲線); 点x,yにプロットする
なお、グラフ、曲線の番号は作成した順につきます。
続いて、controlsクラスのメンバ関数は、
void init(); 初期化
void CreateControls(int x,int y,double width,double height,double range);
void CreateControls(画面のx座標, y方向の座標 画面の幅, 画面の高さ,レンジ率); コントロールを置く画面を作成
void Createbutton(double *pos, int num,double height, double width, const char *text, int cnum);
void Createbutton(位置, 画面の番号,高さ, 幅, 名前, ボタンの番号); ボタンの作成
void Createslider(double *pos, int num,double height, double width,double *axis , int cnum);
void Createslider(位置, 画面の番号,高さ, 幅, 名前, 長軸方向,スライダーの番号); スライダーの作成
int BReturn(int num);
int BReturn(ボタンの番号); ボタンが押されていたら1,押されていなかったら0を返す。
double CReturn(int num);
int CReturn(スライダーの番号); スライダーの移動距離を返す
void interact(int num);
void interact(画面の番号); コントロールの更新
interactはステップごとに行ってください。
続いて、Joysticのメンバ関数です。
void init(); 初期化
int *ReturnJ(); ジョイスティックの傾いた方向を4つの配列で返す
int *ReturnA(); 十字キーの押した方向を4つの配列で返す
int *ReturnB(); 押したボタンを8つの配列で返す。
void execu(); 更新
execuは毎ステップ行ってください。
最後にMusicのメンバ関数です。
void init(); 初期化
void Mload(const char *c, int num);
void Mload(ファイル名, 番号); BGMをロード
void Sload(const char *c, int num);
void Sload(ファイル名 番号); 効果音をロード
void sound(int num);
void sound(番号); 効果音を鳴らす
void music(int num);
void music(番号); BGM再生
この通りです。
インストールの仕方は次の記事で。
ランキングに参加してます。押していただけると今まで経験がないくらい嬉しいです。
にほんブログ村
HPからダウンロードできます。
このソフトウェアには、
Python2.4以上
Pygame(機能を制限するならなくても可)
VPython
Boost
Open Dynamics Engine
が必要です。
・・・・多いなあ。
仕様を説明したいところですが、本気で授業に遅刻しそうなので帰ってからします。
========================================
追記
仕様とインストールの方法を書いときました。
========================================
ランキングに参加してます。押していただけると今まで経験がないくらい嬉しいです。
にほんブログ村
2月12日がROBOMECの講演申し込み締め切りで、どうせまた更新できなくなるので今のうちに蓄えておこうかと。
で、数日前から制作しているPyDrawstuffですが、骨格ぐらいはできました。
このぐらい誰でも出来るだろバーカ
と言われそうな動画ですが。まんまVPythonだろって。
とは言っても、後は細かい作業だけなので試用版ぐらいは今週中に公開できます。
さて・・・・・何人使うかな?目標は3人。
ランキングに参加してます。押していただけると今まで経験がないくらい嬉しいです。
にほんブログ村
昨日に続いてPyDrawStuff制作中です。
今回はゲームパッドの入力を受け付けるようにします。
・・・・と思ったのですが、1年半ほど前に買って、一回も使っていないUSBコントローラがどっかに失せました。
探してみると見つかったのですが、その最中
バキSAGAを発見してしまいました。
当然、見なかったことにして放置。
見つけたコントローラでやってみると、うまくいきました。
今回は、RTミドルウェアでRTコンポーネント化してみました。
ホームページからダウンロードできます。
仕様も書いときました。
Pygame入門様のソースを参考・・・というか半分ぐらい(無断で)写させていただきました。
ランキングに参加してます。押していただけると今まで経験がないくらい嬉しいです。
にほんブログ村
多分、3月ぐらいにはダウンロードできるようになります。
そんなの作らなくてもDrawStuff2とかirrDrawStuffとかあるので、役に立つことはほぼないと思いますが。
基本的には、pyODE用のDrawStuffとして作るので、ODEユーザーの方はあまり期待しない方が良いかと。
つまり、ただでさえ簡単なpyODEをさらに簡単にしてしまうかもしれないです。
・・・・pyODEユーザーが日本に何人いるのかは知りませんが。HPで布教してるのに。
DrawStuffに比べて拡張する機能としては、
フォント描画(日本語も可、太字、斜体も可)
2Dモード
BGM(wave、MP3他)
衝突音(同上)
フルスクリーンモード
pyODE対応
ゲームパッドの入力対応
画像読み込み(後述のフォーマットが可)
あとは、Pythonの他のライブラリを使って、
パフォーマンス測定(hotshot)
グラフ描画(Matplotlib)
とかできそうですが、インストールが多くなるのでやめときます。
電通大の末廣先生お勧めのVPythonなら、それだけでグラフ描画もできますが、僕が使ったことないので今回はPyOpenGLでやります。
読み込みできる画像フォーマットは
BMP
GIF
JPG
PCX
TGA
TIF
LBM
PBM
XPM
PNG
です。もしかしたら2D描画でしか使えないかもしれません。
まあ、今回は自分の学習のためにやってるので、2~3人ぐらいにつかってもらえれば満足です。
ランキングに参加してます。押していただけると今まで経験がないくらい嬉しいです。
にほんブログ村