three.js绘制二维文本失真
图一
图二
var canvas = document.createElement("canvas")
var ctx = canvas.getContext("2d")
ctx.font = "Normal 30px Arial"
ctx.lineWidth = 1
ctx.fillStyle = "#00FF00"
ctx.textAlign = "center"
ctx.textBaseline = "middle"
ctx.fillText('绘制图形文字', 110, 100)
var texture = new THREE.Texture(canvas)
texture.needsUpdate = true
var material = new THREE.SpriteMaterial({
map: texture,
// useScreenCoordinates: false,
transparent: true,
// rotation: 50
})
var textObject = new THREE.Object3D()
var sprite = new THREE.Sprite(material)
sprite.scale.set(15, 15, 0)
sprite.position.set(-7, 13, 0)
上面代码是我做图一写的,希望能达到图二的效果,但是不知道怎么修改了,请大佬指教!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
刚碰到这个问题,顺便注册解答下。
首先明确一点,canvas是一张图片,不像svg是矢量图,失真是因为canvas的分辨率低,比如你的canvas长宽都是100px,你把一张100X100的图片放大到整个屏幕这么大,肯定会失真的。
解决方案就是把canvas宽和高都设置到足够大,字体也随之放大,这样放大之后就不会失真了。
下面图片是放大后的效果