Webots 使い方まとめ

13. 画面に文字を表示する

wb_supervisor_set_label()を用いると、3D window上に文字列を表示することができる。
これを利用すると、シミュレーション状況の把握が容易になる。サッカーゲームのスコアの表示などにも使用できる。

.1 関数

supervisor.hで定義されている wb_supervisor_set_label()を使用する。

#include<webots/supervisor.h>
void wb_supervisor_set_label(int id , const char *text , double x , double y , double size , int color , double transparency);

引数のidはラベルの個体番号であり、0から65535の範囲から選択する。よって同じidを指定して再度関数を使用すると、上書きされる。
*textは表示する文字列である。
xyはテキストの左上の座標を指定する。これは3D window の横幅と高さにおけるパーセントで表現される。よって値の範囲は0から1の間である。
sizeはテキストのサイズを指定し、yと同様の比率となる。よって値の範囲は0から1の間である。
colorは色をRGBで指定する。 transparencyは透過性を指定する。0のとき不透明、1のとき透明(目に見えない)となる。

.2 使用例

次のサンプルは変数scoreの値を3D windowの左上に表示するプログラムである。
文字列配列scoreboardを用意しておき、sprintfを用いて文字列を書き込む。
そしてwb_supervisor_set_labelの引数*textに、scoreboardを指定する。

#include <webots/supervisor.h>
#include <webots/robot.h>
#include <stdio.h>
#define TIME_STEP 16

int main(int argc,char *argv[]) {
  
  char scoreboard[10];
  int score =0;

  wb_robot_init(); //ロボットの初期化
  
  while(wb_robot_step(TIME_STEP*2)!=-1)
  { 
    wb_robot_step(TIME_STEP*7);
    sprintf(scoreboard, "score:%d",score); //文字列の生成
    wb_supervisor_set_label(0,scoreboard,0,0,0.1,0xff0000,0); //ラベルのセット
  }
  
  wb_robot_cleanup();
  return 0;
}

文字の座標(x,y)=(0,0)、文字サイズは0.1、色は赤(0xff0000)、透過性は0を指定している。




HOME > Webots 使い方まとめ > 13. 画面に文字を表示する