忍者ブログ
ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
[176]  [170]  [165]  [157]  [148]  [147]  [145]  [144]  [143]  [142]  [140
×

[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再生

この通りです。

インストールの仕方は次の記事で。

 

 





ランキングに参加してます。押していただけると今まで経験がないくらい嬉しいです。
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
フリーエリア
最新CM
[08/31 ysuga]
[08/31 Nobu]
[08/31 ysuga]
[12/11 Nobu]
[12/11 Kanamura]
最新TB
プロフィール
HN:
Nobu
年齢:
36
性別:
男性
誕生日:
1988/09/22
職業:
あれ
趣味:
妄想、自堕落
バーコード
ブログ内検索
P R
カウンター
忍者ブログ [PR]