Threejs加载字体加载FontLoader与TTFLoader

在 Three.js 中使用自定义字体进行 3D 文本渲染。它最初是以 JSON 格式加载字体,现在Three.js已经有一个 TTFLoader 类,可用于加载 TTF 字体文件并将它们用作 TextGeometry !

1、最初使用FontLoader加载json字体方法如下

const loader = new THREE.FontLoader();
loader.load( './fonts/fontfile.json', function ( font ) {
    const textGeo = new THREE.TextGeometry( "测试文字", {
        font: font,
        size: 18,
        height: 5,
        curveSegments: 32,
        bevelEnabled: true,
        bevelThickness: 0.5,
        bevelSize: 0.5,
        bevelSegments: 8,
    } );
    textGeo.computeBoundingBox();
    
    const textMaterial = new THREE.MeshPhongMaterial( { color: '#ffe4a6', specular: 0xffffff} );
    const mesh = new THREE.Mesh( textGeo, textMaterial );
    mesh.position.x = -55;
    mesh.position.y = 4.95;
    mesh.position.z = -14.55;
    
    mesh.castShadow = true;
    mesh.receiveShadow = true;
    scene.add( mesh );
})

免费在线ttf转json字体格式:

Facetype.js

2、现在可以直接使用TTFLoader加载ttf格式字体

var loader = new THREE.TTFLoader();
loader.load('./fonts/fontfile.ttf', function(font) {
    var textGeometry = new THREE.TextGeometry('Hello, World!', {
        font: font,
        size: 10,
        height: 1
    });
    var textMaterial = new THREE.MeshBasicMaterial({ color: 0xffffff });
    var textMesh = new THREE.Mesh(textGeometry, textMaterial);
    scene.add(textMesh);
});

TextGeometry 专门用于为文本创建基础几何图形的类,它的使用方法及自定义选项如下:

TextGeometry(text : String, parameters : Object)

其中

text:要显示的字符串
parameters:
  font — 字体格式
  size — 字体大小,默认100
  height — 字体的深度,默认50
  curveSegments — 曲线控制点数,默认12
  bevelEnabled — 斜角,默认fasle
  bevelThickness — 斜角的深度,默认10
  bevelSize — 斜角的大小,默认8
  bevelSegments — 斜角段数,默认3

另附Threejs材质类型:

MeshBasicMaterial:为几何体赋予一种简单的颜色,或者显示几何体的线框 
MeshDepthMaterial:根据网格到相机的距离,该材质决定如何给网格染色 
MeshNormalMaterial:根据物体表面的法向量计算颜色
MeshFaceMaterial:这是一种容器,可以在该容器中为物体的各个表面上设置不同的颜色
MeshLambertMaterial:考虑光照的影响,可以创建颜色暗淡,不光亮的物体
MeshPhongMaterial:考虑光照的影响,可以创建光亮的物体
ShaderMaterial:使用自定义的着色器程序,直接控制顶点的放置方式,以及像素的着色方
LineBasicMaterial:可以用于THREE.Line几何体,从而创建着色的直线
LineDashedMaterial:类似与基础材质,但可以创建虚线效果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

采用php vue2 开发的一套医院安全(不良)事件管理系统源码(可自动生成鱼骨图)

采用php vue2 开发的一套医院安全(不良)事件管理系统源码(可自动生成鱼骨图) 医院安全(不良)事件管理系统采用无责的、自愿的填报不良事件方式,有效地减轻医护人员的思想压力,以事件…

项目上线流程(保姆级教学)

01:注册阿里云账户 02:登录阿里云 03:在桌面新建记事本保存个人账号密码等信息 04:完成重置密码 05:安装宝塔面板 命令行 yum install -y wget && wget -O install.sh http://download.bt.cn/install/instal…

Maya vs Blender:制作3D动画首选哪一个?

就 3D 动画而言,有两款3D软件引发了最多的争论:Blender 与 Maya。这两个强大的平台都提供强大的工具集,使动画故事和角色栩栩如生。但作为一名3D动画师,您应该投入时间学习和创作哪一个呢?下面我将从以下六点给您一个清…

spring boot中的标注@Component、@Service等

让我告诉你什么叫水货。 一、水货横行 一直以来,我对Spring Boot项目中的标注,像Component啦、Service啦、Configuration啦,甚至Autowired啦,等等,都似懂非懂。Autowired与Resource有什么区别也不清楚。 个中原因&a…

分享:抖音阳哥说的人力RPO项目有哪些优势?

在数字化浪潮的推动下,人力资源行业也迎来了前所未有的变革。抖音平台上,阳哥以其独到的见解和丰富的经验,对人力RPO(招聘流程外包)项目进行了深入解读。今天,我们就来探讨一下人力RPO项目究竟有哪些优势。 人力RPO项目的一大优势…

get和post的区别?get不安全-post安全|面试官:好,你走吧

get和post的区别?get不安全-post安全|面试官:好,你走吧 开个小玩笑,面试官肯定是想知道更详细的内容,那面下面就是相对详细的内容,请收下吧(* ̄︶ ̄) 1、url可见性 get,参…

瀑布VS敏捷,看看哪种研发管理模式更适合你的团队

软件开发是一个复杂且极具挑战性的过程,需要有合适的研发管理模式。瀑布模型和敏捷开发是两种常见的研发管理模式,它们在项目管理和团队合作方面有着截然不同的理念和实践方式。本文将介绍这两种开发模式的特点、优缺点及对比,提供如何选择适…

【论文速读】|大语言模型(LLM)智能体可以自主利用1-day漏洞

本次分享论文: LLM Agents can Autonomously Exploit One-day Vulnerabilities 基本信息 原文作者:Richard Fang, Rohan Bindu, Akul Gupta, Daniel Kang 作者单位:无详细信息提供 关键词:大语言模型, 网络安全, 1-day漏洞, …

“我也想和月牙一样,把不满写在脸上”

贪吃蛇的初级实现 1. Win32 API介绍1.1 Win32 API1.2 控制台程序1.3 控制台屏幕上的坐标COORD1.4 GetStdHandle1.5 GetConsoleCursorInfo1.5.1 CONSOLE_CURSOR_INFO 1.6 SetConsoleCursorInfo1.7 SetConsoleCursorPosition1.8 GetAsyncKeyState 2. 贪吃蛇游戏设计与分析2.1 地图…

替换windows11 c:/windows/system32/下的dll

找到注册表中的这一项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\icssvc\Settings 添加 WifiMaxPeers dword 值 32位 最大值是128 设置完成后重启icssvc服务 sc stop icssvc sc start icssvc 由于win11不小心装了preview版本,貌似这个8个最大的已经限定…

输入influx但是无法进入influxdb

问题描述: 博主想通过DockerJmeterInfluxDBGrafana搭建性能测试可视化平台,但是按照别的教程输入influx却无法进入inluxdb,输入输出如下: NAME:influx - Influx ClientUSAGE:influx [command]HINT: If you are looking for the I…

Cgicc搭建交叉编译环境(移植到arm)

Cgicc GUN Project官网连接:Cgicc- GNU Project - Free Software Foundation 1. 下载源码 Cgicc下载地址: [via http] Index of /gnu/cgicc [via FTP] ftp://ftp.gnu.org/gnu/cgicc/ 目前最新版:3.2.20 2. 源码构建原理 一般&#xff…

冰箱、保险柜门不要对准外面

风水真的和我们的生活息息相关,它会影响到我们的事业财运、婚姻感情、健康平安等等。很多人在不知情的情况下,触犯了风水里的禁忌,那结果可想而知! 峰民特别提示您:千万不要将冰箱、保险柜的门对准外面。冰箱是不能与…

虚拟化与Docker基本概念与Docker的安装

Docker Docker 是一个开源的应用容器引擎,它最初是用 Go 语言开发的。Docker 允许开发者将应用程序及其依赖、库和环境打包到一个可移植的容器中,这个容器可以在任何支持 Docker 的 Linux 或 Windows 机器上运行,保证了应用在不同环境之间的…

JdbcTemplate详解

1 概述 为了使JDBC更加易于使用,Spring在JDBC API上定义了一个抽象层,以此建立一个JDBC存取框架。 作为Spring JDBC框架的核心,JDBC模板的设计目的是为不同类型的JDBC操作提供模板方法,通过这种方式,可以在尽可能保留…

主食冻干哪个国家的好?全网热销款品控好的主食冻干必买

主食冻干哪个国家的好?谈及主食冻干哪款好,进口的主食冻干总是能被提名。不论是在哪个电商平台搜索“主食冻干”,都会发现那些备受推崇是进口主食冻干。从销售数据上看,这些进口冻干在大型促销活动如双11、618中的销量一直居高不下…

【面试题】java后端开发实习(含答案)

java后端开发实习生-常见面试题 1)JDK,JRE,JVM的关系 JDK JRE java开发工具JRE JVM java核心类库 2)String类的常用方法 1.关于字符串获取方面 length 获取长度charAt 获取指定索引的字符indexOf 获取字符所在的索引位置lastIndexOf 获取字符所在…

printjs打印表格的时候多页的时候第一页出现空白

现象:打印多页的时候第一页空白了,一页的时候没有问题 插件:printjs 网上搜索半天找到的方式解决: 1. 对于我这次的现象毫无作用。其他情况不得而知,未遇见过。(这个应该是大家用的比较多的方式&#xf…

像人脑一样工作!在量子计算机上运行强大的人工智能

内容来源:量子前哨(ID:Qforepost) 文丨王珩 浪味仙 排版丨沛贤 深度好文:2500字丨8分钟阅读 摘要:Transformer 确实可以在简单的量子硬件上工作,这至少从理论上表明:量子人工智能的…

库存数据可视化分析按这个做,赚大了!

今天我们来看一张库存数据可视化分析驾驶舱,全面了解库存资金占用情况,物料周转情况,库存趋势情况、以及占库存金额最高的商品有哪些等。 为更好地实现以上效果,并且增强报表的可读性、易读性,我们采用了按分析场景选…