锻造函数 generateTexture()
Forge function generateTexture()
在下面的示例中,有一个名为 generateTexture()
的函数。
是否可以将文本(数字)绘制到像素阵列中?或者是否可以在该着色器上绘制文本(数字)?
我们的目标是画一个圆圈,里面有一个数字。
https://forge.autodesk.com/blog/using-dynamic-texture-inside-custom-shaders
更新:
我们注意到每个圈子不能使用唯一的 generateTexture()
。 generateTexture()
结果被他们中的每一个使用。每个对象唯一可以自定义的是颜色,加上使用的纹理。
我们可以为此创建一个解决方法,即生成从 0 到 99 的每个纹理,然后让每个对象根据我们要显示的编号选择正确的纹理。我们不知道这是否足够有效以正常工作。否则,它可能必须是 0 到 9+ 或那个方向的东西。非常感谢有关我们更新问题的任何指南。谢谢
这是可能的,但您需要自己实施。着色器是一个非常低级的功能,因此无法直接绘制数字或文本,但您可以将给定字符转换为二维像素数组的表示形式。
我能够使用以下代码成功显示文本,只需将 generateTexture() 替换为 generateCanvasTexture() 在示例中,您应该得到以下结果:
const generateCanvasTexture = () => {
const canvas = document.createElement("canvas")
const ctx = canvas.getContext('2d')
ctx.font = '20pt Arial'
ctx.textAlign = 'center'
ctx.textBaseline = 'middle'
ctx.fillText(new Date().toLocaleString(),
canvas.width / 2, canvas.height / 2)
const canvasTexture = new THREE.Texture(canvas)
canvasTexture.needsUpdate = true
canvasTexture.flipX = false
canvasTexture.flipY = false
return canvasTexture
}
在下面的示例中,有一个名为 generateTexture()
的函数。
是否可以将文本(数字)绘制到像素阵列中?或者是否可以在该着色器上绘制文本(数字)?
我们的目标是画一个圆圈,里面有一个数字。
https://forge.autodesk.com/blog/using-dynamic-texture-inside-custom-shaders
更新:
我们注意到每个圈子不能使用唯一的 generateTexture()
。 generateTexture()
结果被他们中的每一个使用。每个对象唯一可以自定义的是颜色,加上使用的纹理。
我们可以为此创建一个解决方法,即生成从 0 到 99 的每个纹理,然后让每个对象根据我们要显示的编号选择正确的纹理。我们不知道这是否足够有效以正常工作。否则,它可能必须是 0 到 9+ 或那个方向的东西。非常感谢有关我们更新问题的任何指南。谢谢
这是可能的,但您需要自己实施。着色器是一个非常低级的功能,因此无法直接绘制数字或文本,但您可以将给定字符转换为二维像素数组的表示形式。
我能够使用以下代码成功显示文本,只需将 generateTexture() 替换为 generateCanvasTexture() 在示例中,您应该得到以下结果:
const generateCanvasTexture = () => {
const canvas = document.createElement("canvas")
const ctx = canvas.getContext('2d')
ctx.font = '20pt Arial'
ctx.textAlign = 'center'
ctx.textBaseline = 'middle'
ctx.fillText(new Date().toLocaleString(),
canvas.width / 2, canvas.height / 2)
const canvasTexture = new THREE.Texture(canvas)
canvasTexture.needsUpdate = true
canvasTexture.flipX = false
canvasTexture.flipY = false
return canvasTexture
}