ThreeJS 模型中内嵌文字

news2025/1/22 14:50:53

之前有过模型中内嵌html网页,地址☞threeJS 模型中加载html页面_threejs 加载dom元素_小菜花29的博客-CSDN博客

这次是纯粹的在模型中嵌入文本信息,进行简单的文字展示

展示效果图

 1. 使用FontLoader文字加载器

引入文本json文件,代码如下

loadFont() {
      return new Promise(function (resolve, reject) {
        const loader = new THREE.FontLoader();
        loader.load('fonts/Microsoft YaqiHei Light_Regular.json', function (response) {
          try {
            resolve(response);
          } catch (error) {
            reject(error);
          }
        });
      });
    },

着重注意的两点:

  • 文本文件位置,放在public文件下

  •  threejs不支持中文,需要我们转换下

转换方式可以从该地址下载所需的文字文件ttf微软雅旗黑ttf下载 微软雅旗黑 Light 细体 字体下载-脚本之家 (jb51.net)

在这里进行转换成json文件,将文件放入public下面即可,上述代码中的Microsoft YaqiHei Light_Regular.json文件就是转换后的文件,文件已上传,在资源可以查看,地址☞【免费】微软雅黑文字的json文件资源-CSDN文库

2. TextureLoader创建文本

代码如下

 async createBoard() {
      const _this = this;
      const font = await _this.loadFont();
      const fontOption = {
        font: font,
        size: 20,
        height: 1,
        curveSegments: 1,
        bevelThickness: 1,
        bevelSize: 0,
        bevelEnabled: false,
        bevelSegments: 0
      };
      const textureLoader = new THREE.TextureLoader();
      // 导入纹理贴图基础贴图
      const img = require('@/assets/img/workbreachWhite2/bg.png');
      const imgLoader = textureLoader.load(img);
      // 给文本内容一个背景图,创建一个带纹理的平面(示例图中蓝色的背景)该段根据实际情况进行取舍
      const planeGeometry = new THREE.PlaneGeometry(400, 150);
      const planeMater = new THREE.MeshPhongMaterial({ map: imgLoader });
      const planeMesh = new THREE.Mesh(planeGeometry, planeMater);
      // 创建文字内容
      const txtMater = new THREE.MeshBasicMaterial({ color: 0xffffff });
      const txtGeometry = new THREE.TextGeometry('你好~Hello world !', fontOption);
      const txtMesh = new THREE.Mesh(txtGeometry, txtMater);
      _this.scene.add(txtMesh);
      _this.scene.add(planeMesh);
    },

细节方面,位置和旋转角度根据自己实际情况进行调整

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

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

相关文章

会话技术之Cookie和Session

一、会话技术 1、概念 会话:一次会话包含多次请求和响应。一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止。 2、功能 用于在多次请求之间跟踪和管理用户状态,实现数据连续性、数据共…

掉了无数头发成地中海后,我整理出了这套40+的大屏模板,快收藏!

最近又有不少粉丝后台问我接不接做可视化大屏,看来可视化大屏是越来越火啦,但老李还是要说一下,老李本身工作就很忙,实在是顾不过来,但老李会在自己体验过后为大家挑选合适的工具和模板,提升大家做大屏的效…

『PyQt5-Qt Designer篇』| 07 Qt Designer中栅格布局和表单布局的使用

07 Qt Designer中栅格布局和表格布局的使用 1 栅格布局1.1 按钮布局1.2 栅格布局中拖入控件1.3 保存并调用2 表单布局2.1 标签+输入控件2.2 保存并调用3 组合水平和垂直布局1 栅格布局 1.1 按钮布局 拖入几个按钮,如图: 选中所有按钮,右键点击布局-栅格布局: 之后可以看到…

日志开源组件(六)Adaptive Sampling 自适应采样

业务背景 有时候日志的信息比较多,怎么样才可以让系统做到自适应采样呢? 拓展阅读 日志开源组件(一)java 注解结合 spring aop 实现自动输出日志 日志开源组件(二)java 注解结合 spring aop 实现日志tr…

navicat连接数据库的方法(易懂)

1.首页要先下载Navicat 官网下载即可 2.下载完点击进入 找到左上角的连接 3.点击选择MySQL... 4.点击进入开始连接数据库

Linux常用命令——declare命令

在线Linux命令查询工具 declare 声明或显示shell变量 补充说明 declare命令用于声明和显示已存在的shell变量。当不提供变量名参数时显示所有shell变量。declare命令若不带任何参数选项,则会显示所有shell变量及其值。declare的功能与typeset命令的功能是相同的…

XPloteCAD开发实录-第一阶段

在该解阶段,主要的工作内容: 1.完成了框架引擎的设计代码设计工作; 2.完成了矩阵库,线性,微分几何等第三方数学库的封装; 3.完成了XPloteFrameWork 等设计和代码,里面包含不限于AutoFac,AutoMap,Serilog等封装以及各种模块的工具化; 这是目前用这个框架搭建完成的操作界面:…

IDEA遇到 git pull 冲突的几种解决方法

1 忽略本地修改,强制拉取远程到本地 主要是项目中的文档目录,看的时候可能多了些标注,现在远程文档更新,本地的版本已无用,可以强拉 git fetch --all git reset --hard origin/dev git pull关于commit和pull的先后顺…

iTOP-STM32MP157开发板应用层和内核层传递数据

我们的应用层和内核层是不能直接进行数据传输的。我们要想进行数据传输,要借助下面的这两个函数。 static inline long copy_from_user(void *to, const void __user * from, unsigned long n) static inline long copy_to_user(void __user *to, const void *fro…

基于java Swing 和 mysql实现的购物管理系统(源码+数据库+说明文档+运行指导视频)

一、项目简介 本项目是一套基于java Swing 和 mysql实现的购物管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过…

他们朝我扔泥巴(scratch)

前言 纯~~~属~~~虚~~~构~~~(同学看完短视频要我做,蟹蟹你) 用scratch做的,幼稚得嘞( ̄_ ̄|||)呵呵(强颜欢笑) 完成视频 视频试了好久,就是传不上来,私信我加我…

19 个最佳Three.JS 示例

推荐:使用 NSDT编辑器快速搭建3D应用场景 在浏览器中创建动画三个JS模型创建 3D 动画文本从 3D 图像创建 2D 模型制作 3D 模型动画添加 3D 效果创建 3D 游戏和交互式体验编程 3D 虚拟现实体验将颜色应用于 3D 几何体控制 3D 渲染性能与 3D 环境交互修改 3D 环境的照…

向量数据库(第 4 部分):分析权衡

在本系列的上一篇文章中,我们介绍了向量数据库中通常使用的不同类型的索引。然而,索引只是向量数据库中更大问题中的一小部分。回想一下,在第二部分中,我们描述了什么是向量数据库。为了区分目前市场上的各种向量数据库产品&#…

19.(地图工具篇)ArcMap合并与分割Shape

地图之家总目录(订阅之前必须详细了解该博客) 一:Arcgis合并shape文件 1.使用Merge工具 2.配置 3.等待合并完成 二:Arcgis分割shape文件 1:选择split by attribute工具 2:配置(根据COUNTYNAME分割…

看这里,iOS备忘录恢复的3个简单高效方法

想问iPhone用户们一个问题:你们知道手机上哪个软件最了解自己吗?答案是:ios备忘录。为什么说是备忘录呢?因为备忘录记录了大家各种软件的账号密码、日常计划、朋友的生日,甚至是非常重要的银行卡密码。 由此看来&…

QT6添加第三方模块的cmake配置和qmake配置(以串口模块qserialport为例)

参考1,参考2 qmake建立的工程:https://mar-sky.blog.csdn.net/article/details/132487461, 模块安装:https://mar-sky.blog.csdn.net/article/details/132483421 简单的使用介绍 在qmake创建的项目工程中,使用外部模…

国标视频融合云平台EasyCVR视频汇聚平台的应用场景及其功能说明

一、平台简介 EasyCVR国标视频融合云平台是一款基于端-边-云一体化架构的视频融合AI智能分析网关平台。EasyCVR平台支持视频汇聚、融合管理,兼容多类型设备、多协议接入。其提供的视频功能包括:视频监控、无插件直播录像、云存储、检索回放、智能告警、…

信息化发展9

智能制造 智能制造( Intelligent Manufacturing , IM) 是基于新一代信息通信技术与先进制造技术深度融合, 贯穿于设计、生产、管理、服务等制造活动的各个环节, 具有自感知、自学习、自决策、自执行、自适应等功能的新型生产方式…

Spring Cloud Nacos 和 Eureka区别,包含实战代码

目录 一、Spring Cloud Eureka详解二、Spring Cloud Nacos详解三、Spring Cloud Nacos和Eureka区别 Spring Cloud Nacos 和 Spring Cloud Eureka 都是 Spring Cloud 微服务框架中的服务注册和发现组件,用于帮助开发者轻松地构建和管理微服务应用。它们之间的主要区别…

电脑中毒的症状有哪些?电脑中毒数据没了能恢复吗

电脑中病毒想要恢复数据,怎么办??急!!!电脑D盘里有很多高三时候的照片,很珍贵!!求助啊!!? ——互联网的不断发展和普及使得电脑已经成为我们生活…