Threejs加载字体加载FontLoader与TTFLoader

devtools/2024/9/24 19:53:31/
htmledit_views">

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

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

html" title=javascript>javascript">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格式字体

html" title=javascript>javascript">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 专门用于为文本创建基础几何图形的类,它的使用方法及自定义选项如下:

html" title=javascript>javascript">TextGeometry(text : String, parameters : Object)

其中

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

另附Threejs材质类型:

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


http://www.ppmy.cn/devtools/16472.html

相关文章

Spring从零开始学使用系列(三)--依赖注入(DI)

目录 1.DI的核心概念 1.1优势 2. Spring中的DI实现 2.1 构造器注入 2.1.2 优势和缺点 2.2 设置器注入 2.2.1 如何使用设置器注入 2.2.2 示例代码 2.2.3优势和使用场景 2.3 字段注入 2.4 方法注入 2.4.1 方法注入的概念 2.4.2 找方法注入 2.4.3 Lookup 注解的作用 2…

C#从入门到精通:一场深入浅出的编程之旅【文末送书】

文章目录 C#从入门到精通入门篇进阶篇精通篇模式探索C#从入门到精通(第7版)(软件开发视频大讲堂)【文末送书】 C#从入门到精通 在当今数字化的时代,编程已经成为一项至关重要的技能。而在众多编程语言中,C…

sentinel-1.8.7与nacos-2.3.0实现动态规则配置、双向同步

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: sentinel-1.8.7与nacos-2.3.0实现动态规则配置、双向同步 ⏱️ 创作时…

IntelliJ IDEA - 10 款 IDEA 宝贝插件,YYDS!

好久没发这种实用贴了,最近用到了一些能提升工作效率的IDEA插件,给小伙伴们分享一下。相信我,我分享的这些插件,都是实实在在能解决实际开发场景中痛处的。 1、POJO to JSON 开发工作中,常常在设计完API后&#xff0c…

vue快速入门(四十四)自定义组件

注释很详细,直接上代码 上一篇 新增内容 全局注册自定义组件并应用局部注册自定义组件并应用 此篇使用了axios模块没有安装导入的先看这一篇 axios模块下载与导入 源码 main.js import Vue from vue import App from ./App.vue//全局引入axios // 引入axios impor…

ffmpeg ffplay 基于h264中SEI信息进行双摄画面拆分播放实践

1.背景 工作中用到IPCamera支持双摄(即一个IPCamera带两个摄像头),IPC端将两个摄像头的画面上下拼接成了一个画面发布dash到云端,并且携带SEI信息。SEI信息中带两个frame(x, y, width, height),…

leetcode题目69:x的平方根【python】

题目描述 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数部分,小数部分将被舍去。 输入格式 x:一个非负整数。 输出格式 返回整数部分的平方根。 示例 示例 1 输入: x 4 输出: 2示例 2 …

Vim学习笔记01~04

第01章: 遁入空门,模式当道 1.什么是vim Vim是一个高效的文本编辑工具,并且可以在编程开发过程中发挥越来越重要的作用。 事实上,有不少编程高手使用他们来进行代码的开发,并且对此赞不绝口。 2.本系列目的 但是让…