ThreeJs通过canvas和Sprite添加标签

        在3D场景中很多时候会用到给模型添加标签,以表示这个模型的代号,尤其是大量重复模型的时候,添加标签是为了更直观的看到场景中每个模型的数据和名称,比如在仓库中有很多货架,就会需要查看每个货架的编号,如果某个货架出问题便可以通过编号快速定位是哪一个货架。

        这节就讲如何用sprite和canvas添加标签,之前有讲过Sprite绘制下雨的场景,是先加载图片,然后封装为Sprite对象,再随机放置到场景中,但是现在情况很显然不适合使用固定的图片,因为每个货架的名称是动态变化的,需要根据字符串实时生成一个Sprite,这里就用到了Canvas,可以先用canvas设置字符串并绘制成图片,再将图片放置到Sprite中并定位到模型的位置,基于模型的位置往上添加一定的高度,这样就完成了对模型的标识,下面提供核心代码

//传入模型的坐标轴和货架的高度
addShelfLabel(rackX,rackY,rackz,rack){//创建一个canvas元素const canvas = document.createElement('canvas');//新增一个2d的绘图对象const context = canvas.getContext('2d');//设置绘图对象汇总的字体演示context.font = 'bold 30px Arial';//设置绘制的样式context.fillStyle = '#1296db';//设置货架的名字以及在2D场景中位置context.fillText(rack.rackName, 10, 50);//通过threejs的贴图,将canvas的内容转化为贴图图片const texture = new THREE.Texture(canvas);texture.needsUpdate = true; // 确保纹理更新//将带有贴图的图片转为Sprite的材质const spriteMaterial1 = new THREE.SpriteMaterial({map: texture});//新建Sprite对象,并设置好贴图材质const sprite = new THREE.Sprite(spriteMaterial1);//设置sprite的位置为货架的xy,并给z轴新增10的高度sprite.position.set(rackX, rackY, rackz+10)//根据需要缩放sprite大小sprite.scale.set(25, 25, 1); //只需要设置x、y两个分量就可以//最后添加到场景中显示scene.add( sprite );
},

这种标签的好处是,从任何方向查看都是对着摄像机的

效果

给模型添加标签

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/599054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink Connector 开发

Flink Streaming Connector Flink是新一代流批统一的计算引擎,它需要从不同的第三方存储引擎中把数据读过来,进行处理,然后再写出到另外的存储引擎中。Connector的作用就相当于一个连接器,连接Flink计算引擎跟外界存储系统。Flin…

长亭牧云主机管理助手——免费轻量的服务器管理软件初体验

优点 安装十分简单,新手友好,一行命令搞定界面简洁,操作流畅无需公网 IP,可以面对复杂 NAT 环境进行救急可以统一管理大量主机,无需记住主机秘钥 地址 https://rivers.chaitin.cn/app/collie 安装 安装很简单&…

基于 listmonk 的电子邮件营销解决方案

背景 电子邮件营销(EDM)在广告、电商、供应链物流等行业应用广泛,亚马逊云科技的市场部门持续不断的收到客户反馈,希望可以提供简单便捷的方案。 亚马逊云科技产品体验链接:点击我立即体验 对于发送邮件的需求&…

深耕汽车检测设备领域,引领行业技术革新

在汽车工业飞速发展的今天,汽车检测技术作为保障车辆安全、提升维修效率的重要手段,日益受到行业内外的高度关注。康士柏汽车检测线设备厂家,作为这一领域的佼佼者,凭借其深厚的技术积累和卓越的产品品质,正引领着行业…

c# 学习笔记 - 委托(Delegate)

文章目录 1. 委托1.1 委托概述1.2 委托使用1.3 委托的传播 2. 匿名方法2.1 匿名方法概述2.2 匿名方法 1. 委托 1.1 委托概述 委托简介 委托就是对方法的引用,可以理解为例如整型变量的容器可以存储整形数据,委托就是某种方法的容器,可以用来…

数据库基础知识1

关系模型的程序员不需熟悉数据库的存取路径 在3层模式结构中,___I___是数据库的核心和关键,___Ⅱ___通常是模式的子集,数据库模式的描述提供给用户,____Ⅲ__的描述存储在硬盘上。Ⅰ.模式Ⅱ. 外模式Ⅲ. 内模式 数据库中,数据的物理独立性是指用户的应用程序与存储在磁盘上数据库…

D6208双向直流马达驱动芯片 用于IPC产品,可兼容BA6208,噪声低 ,工作电源电压范围宽。

D6208 是一块单片双向马达驱动电路,它使用TTL电平的逻辑信号就能控制卡式录音机和其它电子设备中的双向马达。该电路由一个逻辑部分和一个功率输出部分组成。逻辑部分控制马达正、反转向及制动,功率输出部分根据逻辑控制能提供100mA(典型值&a…

迅腾文化观察:从“占位”到“心智”,从“借势”到“锁定”—— 高增长市场的企业战略之道

迅腾文化观察:从“占位”到“心智”,从“借势”到“锁定”—— 高增长市场的企业战略之道 在当今世界,市场环境瞬息万变,企业若想在激烈的市场竞争中立足并持续发展,必须不断地调整和优化自身的战略。在迅腾文化观察中…

electron进程通信之预加载脚本和渲染进程对主进程通信

主进程和预加载脚本通信 主进程 mian,js 和预加载脚本preload.js,在主进程中创建预加载脚本, const createWindow () > {// Create the browser window.const mainWindow new BrowserWindow({width: 300,height: 300,// 指定预加载脚本webPreferences: {preload: path.j…

web3 : blockscout剖析

Blockscout 是第一个功能齐全的开源区块链浏览器,可供任何以太坊虚拟机 (EVM) 链使用。项目方可以下载并使用Blockscout作为其链的浏览器,用户可以轻松验证交易、余额、区块确认、智能合约和其他记录。 目录 Blockscout可以做什么主要特征blockscoutDocker容器组件Postgres 1…

队列的数据结构实验报告

实验目的: 1、理解队列数据结构的概念和特点。 2、熟悉队列的应用场景和算法实现。 二、实验内容(实验题目与说明) 实现了一个循环队列,具有功能: 初始化队列。判断队列是否为空。判断队列是否已满。入队。出队。…

CSS基本知识

文章目录 1. CSS 是什么2. 基本语法规范3. 引入方式3.1 内部样式表3.2 行内样式表3.3 外部样式 4. 选择器4.1 选择器的功能4.2 选择器的种类4.3 基础选择器4.3.1 标签选择器4.3.2 类选择器4.3.3 id 选择器4.3.4 通配符选择器 4.4 复合选择器4.4.1 后代选择器4.4.2 伪类选择器 5…

【fiddler】fiddler抓包工具的使用

前言:我们可以通过fiddler软件,捕获到http请求,并修改请求参数 修改返回内容 fiddler下载,官网如下图 启动fiddler软件,点击file 选择 Capture Traffic 修改入参 (我们以谷歌浏览器发起请求为例) 此时会出现一个向上的箭头,点击…

Linux第8步_USB设置

学习完设置“虚拟机的电源”后,接着学习通过鼠标点击操作U盘,目的是了解USB设置。 1、在桌面,双击“VMware Workstation Pro”图标,得到下图: 2、点击“编辑虚拟机”,得到下图: 只要点击编辑虚…

Rockchip平台双屏异显功能实现(基于Android13)

Rockchip平台双屏异显功能实现(基于Android13) 1. 异显实现方案 Rockchip SDK平台支持两种不同的异显方案:Android Presentation和Android Activity指定屏幕启动。 使用Android Presentation方案,需要在APP开发中调用相应接口以使指定视图&#xff08…

【软件测试】2024年准备中/高级测试岗技术面试...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、软件测试基础知…

建设数字工厂管理系统解决方案需要哪些技术

随着科技的快速发展,数字化转型已成为工厂提升生产效率、降低成本、增强竞争力的关键。数字工厂管理系统作为这一转型的核心,集成了各种先进的技术,以确保工厂运行的流畅和高效。本文将深入探讨建设数字工厂管理系统解决方案所需的关键技术。…

利用Fastcgi+PHP-FPM非授权访问实现代码执行

目录 Fastcgi Record Fastcgi Type PHP-FPM(FastCGI进程管理器) Nginx(IIS7)解析漏洞 security.limit_extensions配置 漏洞演示 今天要和大家分享的是利用Fastcgi和PHP_FPM实现未授权访问实现代码执行,首先我们需…

element-ui组件DatePicker日期选择器移动端兼容

element-ui组件DatePicker日期选择器移动端兼容 css /** 移动端展示 **/ media screen and (max-width: 500px) {.el-picker-panel__sidebar {width: 100%;}.el-picker-panel {width: 400px!important;}.el-picker-panel__content {width: 100%;}.el-picker-panel__body{marg…