ThreeJS将画布中的文本渲染为纹理,然后应用于平面
ThreeJS render text in canvas as texture and then apply to a plane?
我一整天都在寻找一种方法,以程序化的方式生成包含文本的2d纹理,这样我就可以将它们作为纹理应用于平面。基本上,我希望能够更改WebGL页面中显示的文本,而不必只使用图像编辑程序中制作的纹理。我的目标是能够像编辑一个完全二维的页面一样轻松地编辑页面的内容,只需编辑代码和bam,它就在那里。
我见过的实现这一点最有前途的方法是用CSS在空白画布中渲染文本,将该画布用作ThreeJS非常容易制作的纹理,然后将该纹理应用于一个平面,我可以将其放置在三维环境中的任何位置。我试图通过根据自己的需要调整这个例子来实现这一点:http://jsfiddle.net/sSD65/28/
然而,我最终得到了一个完全黑色的页面,表明某个地方出现了错误。这是一个我一生都无法发现和纠正的错误。我有一种感觉,我错过了一些东西,因为我缺乏ThreeJS和Javascript的经验,所以我来这里寻求你的帮助。
我真的很感激在这里能得到的任何帮助。这里有一个页面链接,尽管我认为如果不在本地托管它,你就无法正确查看它,因为我正在从那里的文件夹加载图像,但Python在这方面非常棒。导航到该文件夹后,只需在控制台中使用Python-m SimpleHTTPServer,它将在本地托管该文件夹,以便您可以从"http://localhost:8000/homepage.html":https://dl.dropbox.com/u/40043006/WebGLTest.zip
这是一个将画布中的文本添加为纹理的简单代码:
//create image
var bitmap = document.createElement('canvas');
var g = bitmap.getContext('2d');
bitmap.width = 100;
bitmap.height = 100;
g.font = 'Bold 20px Arial';
g.fillStyle = 'white';
g.fillText(text, 0, 20);
g.strokeStyle = 'black';
g.strokeText(text, 0, 20);
// canvas contents will be used for a texture
var texture = new THREE.Texture(bitmap)
texture.needsUpdate = true;
它需要一些工作。。。比如将输出文本大小设置为画布的大小。
相关文章:
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- Javascript运行php文件,然后下载文件
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 弹出窗口出现,然后退出
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 将值输入到对象,然后该对象推送到数组
- 如何临时暂停浏览器渲染,然后恢复整个页面
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 在threejs中使用纹理网格和线框网格
- 滚动然后捕捉到顶部而不是取消捕捉
- AngularJS加载JSON数据,然后从中解析/加载HTML
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- 点击相同的按钮打开模型,然后提交表单
- ThreeJS将画布中的文本渲染为纹理,然后应用于平面
- 将display属性更改为visible flicks,然后再次消失
- 什么是“;选择“;然后触发事件
- 等待300毫秒,然后使用jQuery向下滑动菜单
- 转到另一个页面,然后立即触发ScrollTo