提问者:小点点

在处理中绘制3D文本


我正在Java使用处理API处理一个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个答案

匿名用户

您显示的一点点代码一切都很好。您可以在此处看到运行的修改版本:

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();
}

一路上可能还有别的东西。想分享更多信息吗?

匿名用户

填充颜色控制文本颜色,默认为白色。因此,如果您在白色背景上绘制白色文本,它将不会显示。在绘制文本之前添加填充(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