如何在Three.js场景中添加二维实时动态文字?

问题描述 投票:0回答:1

我需要一个更好的解决方案来为我的Three.js场景添加2D文本。我试过使用TextGeometry,但我不能实时更新文本(不会影响性能),而且我也不希望必须绘制三角形。有谁知道有什么库或替代方案可以将二维文本添加到场景中?我需要能够轻松地实时更新文本。如果你知道一个库,如果你能提供一个代码示例,我会非常感激。谢谢。

javascript text three.js 2d
1个回答
1
投票

你可以使用一个 CanvasTexture,它支持可更新的画布作为源。

var canvas = document.createElement("canvas");
canvas.width = 128;
canvas.height = 128;
var ctx = canvas.getContext("2d");
var texture = new THREE.CanvasTexture(canvas);
var material = new THREE.MeshBasicMaterial( { map: texture } );

let i = 0;
setInterval(() => {
  ctx.fillStyle = "red";
  ctx.fillRect(0, 0, 128, 128);
  ctx.fillStyle = "black";
  ctx.font = "80px sans-serif";
  ctx.fillText(i, 50, 90);
  texture.needsUpdate = true;
  i++;
}, 1000);

请看本笔的全部内容。https:/codepen.iodawkenpenYzydEza?editors=1000。

你可以用一个面向摄像头的平面来代替立方体来使它看起来是2D的。


0
投票

如果你使用的是webgl(webgl2)上下文,你必须创建一个新的画布,在那里写上你的文字(在2D上下文中),然后把你的画布变成img,并使用这个img,这是一个最好的解决方案,所有的框架都使用它。


0
投票

我又做了一些研究,发现这个 图书馆. 我能够将其整合到我的项目中,没有任何问题。它完全按照我的需要工作。

© www.soinside.com 2019 - 2024. All rights reserved.