我的编程空间,编程开发者的网络收藏夹
学习永远不晚

threejs模型添加文字的方式有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

threejs模型添加文字的方式有哪些

这篇文章主要介绍“threejs模型添加文字的方式有哪些”,在日常操作中,相信很多人在threejs模型添加文字的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”threejs模型添加文字的方式有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

在给几何体或者导入的模型表面添加文字时,可以用如下方式

1 将文字绘制到canvas中,并将其用作Texture

给正方体某个表面添加文字为例;如下创建一个正方体

// ---------------------------------------------------------------------// 添加模型// ---------------------------------------------------------------------var geometry = new THREE.BoxGeometry( 30,30, 30 );var materials = [     new THREE.MeshBasicMaterial( { color: 'blue' } ), // right    new THREE.MeshBasicMaterial( { color: 'yellow' } ), // left    new THREE.MeshBasicMaterial( { map: new THREE.CanvasTexture(getTextCanvas1()) } ), // top    new THREE.MeshBasicMaterial( { color: 'black' } ), // bottom    new THREE.MeshBasicMaterial( { color: 'green' } ), // back    new THREE.MeshBasicMaterial( { color: 'red' } ) // front     ];var cube = new THREE.Mesh( geometry, materials );scene.add(cube);

其中正方体顶部表面,使用CanvasTexture作为材质,如下该材质可以用canvas或者img或者视频元素作为贴图,下面以canvas为例;

threejs模型添加文字的方式有哪些

 在canvas中绘制文本,可以通过filltext绘制文本,遍历可以实现换行的效果

// CanvasTexturefunction getTextCanvas1(){     let texts=[{        name:"北京",        value:323    },{        name:"杭州",        value:121    },{        name:"南京",        value:56    }]    var width=512, height=256;     var canvas = document.createElement('canvas');    canvas.width = width;    canvas.height = height;    var ctx = canvas.getContext('2d');    ctx.fillStyle = '#C3C3C3';    ctx.fillRect(0, 0, width, height);    ctx.font = 32+'px " bold';    ctx.fillStyle = '#2891FF';    texts.forEach((text,index)=>{        ctx.fillText(`${text.name}:${text.value}`, 10, 32 * index + 30);    })     return canvas;}

效果:

threejs模型添加文字的方式有哪些

优点是可以绘制任意样式文字,缺点是canvas一旦生成,因为分辨率不再改变,所以在threejs中放大时会模糊

2 用一个透明表面贴在几何体表面

这种方式适合较规范的几何体模型;仍然以上面正方体为例,跟第一种方式原理差不多,将文字绘制在一个透明几何平面上,然后把平面的位置设置在刚好覆盖正方体前表面;

代码如下

function getTextCanvas2(){ //用canvas生成图片  let canvas = document.createElement("canvas");  let ctx = canvas.getContext('2d')  canvas.width = 300  canvas.height = 300  //制作矩形  ctx.fillStyle = "gray";   ctx.fillRect(0, 0, 300, 300)  //设置文字  ctx.fillStyle = "white";  ctx.font = 'normal 20px "楷体"'  ctx.fillText('这个平面将被贴在正方体前表面', 0, 20)   //生成图片  let url = canvas.toDataURL('image/png');  //将图片构建到纹理中  let geometry1 = new THREE.PlaneGeometry(30, 30)  let material1 = new THREE.MeshBasicMaterial({    map: new THREE.TextureLoader().load(url),    side: THREE.DoubleSide,    opacity: 1  })  let rect = new THREE.Mesh(geometry1, material1)  rect.position.set(0, 0, 25.1)  scene.add(rect)}getTextCanvas2();

效果: 

threejs模型添加文字的方式有哪些

可以看到没有贴到表面,需要调整z值为15.1, rect.position.set(0, 0, 15.1),看最后效果

threejs模型添加文字的方式有哪些

 但是平面的颜色将原本正方体颜色覆盖

 将canvas矩形的颜色和材质颜色都设置为透明即可

  //制作矩形  ctx.fillStyle = "transparent";  // 设为透明    //将图片构建到纹理中  let geometry1 = new THREE.PlaneGeometry(30, 30)  let material1 = new THREE.MeshBasicMaterial({    map: new THREE.TextureLoader().load(url),    side: THREE.DoubleSide,    opacity: 1,    transparent: true, // 设为透明  })

threejs模型添加文字的方式有哪些

3 使用threejs提供的文字几何体接口

通过THREE.TextGeometry生成文字几何体。在一个立方体表面遍历添加一排文字,效果如下:

threejs模型添加文字的方式有哪些

 代码如下:

// ---------------------------------------------------------------------// 添加文字模型// ---------------------------------------------------------------------let texts1=[{    name:"北 京",    value:23},{    name:"杭 州",    value:23},{    name:"南 京",    value:23},{    name:"南 京",    value:23} ,{    name:"杭 州",    value:23},{    name:"南 京",    value:23},{    name:"南 京",    value:23} ]texts1.forEach((text,index)=>{    addTextGeometry(text,index);})  // 添加文字geometryfunction addTextGeometry(text,index){    var loader = new THREE.FontLoader();     loader.load("/statics/fonts/chinese.json", function (res) {         var geometry = new THREE.TextGeometry(`${text.name}: ${text.value}`, {            font: res,          // 字体格式            size: 13,           // 字体大小            height: 1,          // 字体深度            curveSegments: 11,  // 曲线控制点数            bevelEnabled: true, // 斜角            bevelThickness: 0.1,  // 斜角的深度            bevelSize: 1,       // 斜角的大小            bevelSegments: 1    // 斜角段数        });        var mat = new THREE.MeshPhongMaterial({            color: "white",            opacity: 0.8,            shininess: 1,        });        var mesh = new THREE.Mesh(geometry, mat);        mesh.rotation.y=-Math.PI/2        mesh.position.set(-151,150-40*index, 15.1);        scene.add(mesh);    }); }

其中chinese.json是字体文件,如下 three提供了几中默认的字体格式,但是都支持英文,如果要添加中文文字,需要借助转换工具,将ttf的文字格式转换为json文件

threejs模型添加文字的方式有哪些

转换很简单:

首先下载字体

然后使用在线转换工具Facetype.js,转换为json文件后下载即可。也可以将该工具下载到本地,直接运行;

如果在使用过程中,报错找不到stylename的情况,可能是因为下载的ttf某些属性缺失,那么可以适当调整main.js代码,如下

threejs模型添加文字的方式有哪些

到此,关于“threejs模型添加文字的方式有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

threejs模型添加文字的方式有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

threejs模型添加文字的方式有哪些

这篇文章主要介绍“threejs模型添加文字的方式有哪些”,在日常操作中,相信很多人在threejs模型添加文字的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”threejs模型添加文字的方式有哪些
2023-07-05

threejs 模型添加文字的多种方式汇总

这篇文章主要介绍了threejs 模型添加文字的几种方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-03-06

MySQL数据表添加字段的方式有哪些

这篇文章主要介绍“MySQL数据表添加字段的方式有哪些”,在日常操作中,相信很多人在MySQL数据表添加字段的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL数据表添加字段的方式有哪些”的疑
2023-07-05

Mysql添加外键的方式有哪些

本篇内容介绍了“Mysql添加外键的方式有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Mysql添加外键的几种方式注意:添加外键是给从
2023-07-05

jquery添加样式的方法有哪些

jQuery添加样式的方法有以下几种:1. .css():用于设置或返回被选元素的一个或多个样式属性。示例:$("p").css("color", "red");2. .addClass():向被选元素添加一个或多个类。示例:$("p").
2023-08-09

mysql视图添加字段的方法有哪些

在MySQL中,可以通过以下方法为视图添加字段:1. ALTER VIEW语句:使用ALTER VIEW语句可以修改视图的定义,包括添加字段。语法如下:```ALTER VIEW view_name ASSELECT column1, co
2023-09-08

mongo数组添加字段的方法有哪些

在MongoDB中,我们可以使用以下方法给数组添加字段:使用$addFields操作符添加字段:$addFields操作符可以用于向文档中的数组添加新字段。例如,假设我们有一个名为"students"的数组,我们可以使用以下查询来向每个学生
2023-10-22

tensorflow模型搭建的方式有哪些

Sequential模型:使用Sequential模型,可以直接将一系列层按顺序堆叠起来,构建神经网络模型。Functional API:使用Functional API,可以更加灵活地构建神经网络模型,可以定义多个输入、多个输出以及具有分
tensorflow模型搭建的方式有哪些
2024-03-12

Spring容器中添加bean的方式有哪些

这篇文章主要介绍“Spring容器中添加bean的方式有哪些”,在日常操作中,相信很多人在Spring容器中添加bean的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring容器中添加bean
2023-06-20

sql添加约束条件的方式有哪些

SQL中可以使用以下方式添加约束条件:1. PRIMARY KEY约束:用于唯一标识一条记录,确保表中每个记录都具有唯一的标识。在创建表时,可以将某列指定为主键,也可以在已存在的表中使用ALTER TABLE语句添加主键约束。2. FORE
2023-09-05

jquery添加文本内容的方法有哪些

jQuery添加文本内容的方法有以下几种:1. .text()方法:设置或返回所选元素的文本内容。例如:`$("p").text("新的文本内容");`2. .html()方法:设置或返回所选元素的HTML内容。例如:`$("p").htm
2023-08-09

mysql中添加字段的用途有哪些

在MySQL中,添加字段的主要用途包括:扩展数据模型:添加新的字段可以用于存储新的信息或属性,以满足数据模型的扩展需求。数据分析和报表生成:如果需要进行数据分析或生成报表,可以通过添加字段来存储计算结果或特定的指标。数据完整性和一致性:通过
2023-10-24

java添加数据的方法有哪些

在Java中,添加数据的方法有以下几种:1. 使用数组:可以使用数组来添加数据。首先需要定义一个数组,然后使用索引来添加数据。例如:int[] arr = new int[10]; arr[0] = 1;2. 使用ArrayList:Arr
2023-08-09

MySQL添加外键的方法有哪些

MySQL添加外键的方法有以下几种:在创建表时添加外键约束:可以在创建表时,使用FOREIGN KEY关键字来添加外键约束。例如:CREATE TABLE 表名 (列名 数据类型,列名 数据类型,FOREIGN KEY (外键列名) RE
MySQL添加外键的方法有哪些
2024-04-09

oracle添加主键的方法有哪些

在Oracle中,可以通过以下几种方法添加主键:1. 使用CREATE TABLE语句时,在定义列时使用PRIMARY KEY约束。```sqlCREATE TABLE table_name ( column1 datatype co
2023-09-28

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录