当前位置: 首页 > news >正文

旅游网站开发目的网址大全最安全实用的网址

旅游网站开发目的,网址大全最安全实用的网址,html网页设计案例和代码,织梦文章采集到wordpress目录 🐝前言 🐝canvas创建文字 🐝将canvas作为纹理贴图加载到sprite中 🐝封装方法 🐝前言 在Three.js中精灵Sprite是一个总是面朝摄像机的平面,它通常和纹理贴图结合使用,贴图可以是一张图…

目录

🐝前言

🐝canvas创建文字

🐝将canvas作为纹理贴图加载到sprite中 

🐝封装方法


🐝前言

在Three.js中精灵Sprite是一个总是面朝摄像机的平面,它通常和纹理贴图结合使用,贴图可以是一张图片,也可以是我们使用canvas绘制出来的任何东西。所以我们可以先使用canvas绘制文字,然后将它作为纹理贴图贴到精灵平面上,就可以创建面朝相机的文本标注了。

🐝canvas创建文字

// 创建canvas标签
const canvas = document.createElement('canvas')
// 获取canvas上下文对象
const context = canvas.getContext('2d')
// 设置画布大小
canvas.width = 150
canvas.height = 100
// 设置画布背景颜色
context.fillStyle = '#f0f0f0'
context.fillRect(0, 0, canvas.width, canvas.height)
// 绘制文字
context.font = '28px 宋体'
context.fillStyle = '#ff0000'
context.fillText('测试文字', 10, canvas.height / 2)
// 添加到页面上
document.body.appendChild(canvas)

context.fillText(text, x, y, maxWidth) : 用于在画布上绘制文字,它的四个参数分别是:

text:需要绘制的文本

x:开始绘制文本的x坐标

y:开始绘制文本的y坐标

maxWidth:(可选)允许的最大文本长度

 

🐝将canvas作为纹理贴图加载到sprite中 

 将canvas创建为threejs纹理对象

const texture = new THREE.Texture(canvas)
texture.needsUpdate = true // 触发纹理更新

创建Sprite对象并添加贴图材质

const material = new THREE.SpriteMaterial({map: texture,color: '#f0f0f0'
})
const sprite = new THREE.Sprite(material)

设置精灵对象大小、位置和旋转

👉注意:我们无法直接对精灵平面做旋转操作,但是可以通过对材质做旋转来实现相同的效果。

sprite.scale.set(2, 1, 1)
sprite.position.set(1, 0, 0)
sprite.material.rotation = Math.PI / 4
scene.add(sprite)

🐝封装方法

const createSpriteTextLabel = (data) => {const {text, position, direction, size, color} = {...data}const canvas = document.createElement('canvas')const context = canvas.getContext('2d')const fontSize = 36const font = `${fontSize}px Arial`const padding = 10const textWidth = context.measureText(text).widthcanvas.width = textWidth * 3.5 + padding * 2canvas.height = fontSize * 2 + padding * 2context.font = fontcontext.fillStyle = colorcontext.fillText(text, padding, canvas.height / 1.6)const texture = new THREE.Texture(canvas)texture.needsUpdate = true// 获取贴图的宽度和高度const textureWidth = canvas.widthconst textureHeight = canvas.heightconst material = new THREE.SpriteMaterial({map: texture,transparent: true,})const sprite = new THREE.Sprite(material)// 根据贴图的宽高比调整精灵的比例,保持贴图不变形const aspectRatio = textureWidth / textureHeightsprite.scale.set(size * aspectRatio, size, 1)sprite.position.copy(position)// 计算精灵的旋转角度sprite.material.rotation = Math.atan2(direction.y, direction.x)return sprite
}// 使用
const spriteText = createSpriteTextLabel({text: '测试文字', position: new THREE.Vector3(1, 0, 0),   // 文本位置direction: new THREE.Vector3(1, 1, 0),  // 文本方向size: 1,                                // 文本大小color: '#00ff00'                        // 文本颜色
})
scene.add(spriteText)

http://www.yayakq.cn/news/919576/

相关文章:

  • 我要外包网站重庆seo
  • 比较好的做网站的公司网站组成费用
  • html5 微网站布局电商网站毕业设计论文
  • 四川省住房与建设厅网站网站建设技巧
  • 专业网站建设品牌策划公司网站更换域名流程
  • 建设银行滇龙行网站如何将图床作为wordpress的插件
  • 7款优秀网站设计欣赏麦进斗网站建设
  • 茂名市制作网站的公司自驾游网站模板
  • 网站网络设计是怎么做的南通网页设计培训
  • 苏州高端网站建设设计公司响应式网站实例
  • 浙江华企网站做的咋样简洁高端网页
  • 土地流转网站开发房产网站建设公司
  • 西安企业建站在哪里做百度建网站
  • 驻马店做网站公司android开发平台
  • 戴尔的网站建设拉新app推广平台
  • 为什么搜索不到刚做的网站南通关键词优化平台
  • 电子商务网站建设的目标做团购网站的公司
  • 做 网站 技术支持 抓获 互助儋州网站建设培训学校
  • 珠海网站制作服务百度刷搜索词
  • 如何自己建设淘宝网站首页wordpress 查询页面
  • seo快速排名站外流量推广php网站建设程序
  • 阿里云网站建设好用吗网络营销教学大纲
  • 网站列表页内容wordpress 右边栏
  • 布吉附近做网站网站设计哪家专业
  • 网站建设方案书 个人备案品牌建设的最高境界是培育客户成为什么购买者
  • 电子商务网站规划 分析 设计英雄联盟手游小程序被投诉
  • 电商网站界面规范wordpress点击显示微信二维码
  • 济南模板建站软件网站建设公司小程序开发
  • 杭州网站建站平台小程序订货系统
  • 网站外链发布平台赣州网站建设哪家便宜