在Processing中绘制3D文本

时间:2012-04-17 15:24:57

标签: java 3d processing

我正在使用Processing API处理Java中的3D场景。它是一种力导向的图形布局算法(尽管这并不太重要)。我已完成所有图形绘制 - 节点,边缘,布局等看起来很好。但是,图表上的每个节点都有一个标签,我希望能够将所述标签显示为节点旁边的文本。我尝试使用text()函数,但到目前为止,我的代码似乎不起作用。我在场景中看不到任何文字。

我的代码如下所示:

pushMatrix();
translate(width/2, height/2, 0); // put 0,0,0 at the center of the screen
text("foo!", 20, 20, 20);
popMatrix();

我什么都没看到。只是图表。那我错过了什么?

2 个答案:

答案 0 :(得分:0)

您显示的一小段代码一切都很好。您可以看到运行here的修改后的版本:

void setup() {
    size(400,400,P3D);    
    textSize(20);
} 

void draw() {  
    background(0);
    translate(width * .5, height*.5,0);
    rotateY(map(mouseX,0,width,-PI,PI));
    rotateX(map(mouseY,0,height,-PI,PI));
    pushMatrix();
    text("foo!", -20, 0, 20);
    popMatrix();
}

沿途可能还有别的东西。关心分享更多信息?

答案 1 :(得分:0)

填充颜色控制文本颜色,默认为白色。因此,如果您在白色背景上绘制白色文本,它将不会显示。添加填充(0);在你画文字之前。

还要记住,将文本发送到屏幕后绘制的形状可能会覆盖您的文本。绘制中的最后一个“隐藏”语句是绘制屏幕。

这是一个绘制一系列垂直线(2D)并在顶部有一排标签的示例:

   int startX;

   void setup() {
      size(400,400);
      textSize(12);
      startX = width/10; 
    }

    void draw() {
      background(255);
      int curX = startX;
      fill(0);            // Set the text color
      while (curX < width)
      {
        line(curX, 30, curX, height-10);
        text(curX, curX-(curX/20), 20);
        curX += width/10;
      }
    } // end draw