【问题标题】:How do I draw 2D fonts in processing P3D mode?如何在处理 P3D 模式下绘制 2D 字体?
【发布时间】:2015-08-14 10:21:53
【问题描述】:

我正在运行一个草图,其中包含 3D 空间 (P3D) 中的点数组。我想通过绘制文本来为其添加一个界面,就好像它是“屏幕上”/2D,只使用“X,Y”参数。

当我尝试添加 "text("!@#$%", width/2, height/2);"它在 3D 空间中渲染。

有可能吗?我尝试了“textMode(SCREEN) 但在处理 2 中不再存在。

【问题讨论】:

  • “还有吗?” Processing 2 已经有好几年的历史了,Processing 3 目前处于公开测试阶段,准备发布...... Processing 1.x API 已经非常长时间有效=)跨度>
  • 大声笑我刚回来,我安装的仍然是 1.x。不过我会看看Processing 3,看看它是否有任何解决方案。
  • 如果您将MCVE 与您的问题一起发布,您将会有更好的运气。这可以只是一个显示 3D 点和您尝试显示文本的简单草图,因此我们可以在我们自己的机器上运行它来玩。

标签: text fonts 3d processing


【解决方案1】:

这是我发现的,我猜是在处理论坛上

你可以使用:

  • 用于 3D 内容的 PMatrix3D
  • 并以简单的旧方式编码您的 2D 内容

希望对你有帮助

    PMatrix3D baseMat;
    float alpha =0;

    void setup() {
      size(400, 400, P3D); 

      // Remember the start model view matrix values
      baseMat = getMatrix(baseMat);
    }

    void draw() {
      background(40);

      pushMatrix();
      camera(0, 0, 400, 0, 0, 0, 0, 1, 0);
      directionalLight(255, 255, 255, -100, 150, -100);
      ambientLight(40, 40, 40);

      // 3D drawing stuff here
      rotateY(alpha);
      box(100);
      alpha += 0.05;
      popMatrix();

      // Restore the base matrix and lighting ready for 2D
      this.setMatrix(baseMat);
      ambientLight(255, 255, 255);

      // draw 2D stuff here
      rect(10, 10, 50, 10);
      textSize(25);
      text("voila", mouseX, mouseY);
    }

【讨论】:

    【解决方案2】:

    想到的解决方法是创建一个与您的草图具有相同宽度/高度的 2D PGraphic,为其提供透明背景,在您想要的位置绘制文本,然后将 PGraphic 绘制到您的真实草图上就像复制图像源数据一样。

    【讨论】:

    • 这是一个很好的解决方法,但我需要它是动态的:((ps:需要显示一些变量等)
    • 为什么不行?您可以全局创建 PGraphic 缓冲区,例如PGraphic buffer,然后在设置中通过createGraphic 创建具有相同大小尺寸的它,然后在绘图期间您可以简单地更新缓冲区,绘制为图像,下一帧更新缓冲区,绘制作为图像,只要你的草图运行就重复
    猜你喜欢
    • 2021-02-28
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多