首页 > 其他分享 >Threejs渲染3D字体介绍

Threejs渲染3D字体介绍

时间:2024-11-03 18:49:39浏览次数:3  
标签:Threejs font 渲染 geometry 加载 字体 boundingBox 文本 3D

概述

本文主要介绍如何通过 Three.js 生成 3D 文本。

效果展示

在这里插入图片描述

代码分析

核心代码部分就是通过 Three.js 中的 FontLoaderTextGeometry 来加载字体并创建 3D 文本。

核心代码如下:

const loader = new FontLoader();

loader.load(textFamily.value, function (font) {
   
  const geometry = new TextGeometry(text.value, {
   
    font: font, //字体
    size: 120, //文本字体大小
    height: 10, //文本厚度
    curveSegments: 4, //定义曲线细节的段数
    bevelEnabled: true, //启用斜面效果
    bevelThickness: 10, //控制斜面的厚度
    bevelSize: 8, //控制斜面的大小
    bevelSegments: 5, //控制斜面的段数
  });
  geometry.computeBoundingBox();
  const xOffset = (geometry.boundingBox.max.x - geometry.boundingBox.min.x) / 2;
  textMesh = new THREE.Mesh(geometry, materials);
  textMesh.position.set(-xOffset, 0, 0);
  scene.add(textMesh);
});

逐行分析如下:

  • FontLoader 实例化
const loader = new FontLoader(); //创建了一个 FontLoader 的实例,用于加载字体文件。
  • 加载字体:
loader.load(textFamily.value, function (font) {
   

使用 loader.load() 方法加载字体,textFamily.value 是字体文件的路径。当字体加载完成后,会调用回调函数,参数font是加载的字体对象。

  • 创建文本几何体:

使用 TextGeometry 创建一个几何体。text.value 是要显示的文本内容,通过选项定义了文本的样式,各选项说明如上。

  • 计算边界框:
geometry.computeBoundingBox(); //计算文本几何体的边界框,以便后续使用。
  • 计算 X 偏移量:
const xOffset = (geometry.boundingBox.max.x - geometry.boundingBox.min.x) / 2;

计算文本的 X 轴偏移量,使文本在场景中居中。boundingBox.max.xboundingBox.min.x分别代表边界框的最大和最小 X坐标。

  • 创建网格并设置位置
textMesh = new THREE.Mesh(geometry, materials);
textMesh.position.set(-xOffset, 0, 0);

创建一个 Mesh</

标签:Threejs,font,渲染,geometry,加载,字体,boundingBox,文本,3D
From: https://blog.csdn.net/m0_46281382/article/details/143386418

相关文章

  • unity3d————坐标转换(世界转本地)
    this.transform.InverseTransformPoint1. 世界坐标系与局部坐标系世界坐标系:Unity3D中的全局参考框架,所有游戏对象的位置、旋转和缩放都是相对于这个框架来定义的。局部坐标系:每个游戏对象都有自己的局部坐标系,这个坐标系是相对于该游戏对象的位置、旋转和缩放来定义的。2......
  • unity3d——Time
    在Unity3D中,Time类是一个非常重要的工具类,它提供了一系列与时间相关的属性和方法,帮助开发者在游戏中实现各种时间相关的操作。以下是一些Time类常用的方法及其示例:一、常用属性Time.time含义:表示从游戏开始到现在的时间,以秒为单位。该时间会随着游戏的暂停而停止计算。示例......
  • unity3d——Vector3
    在Unity3D中,Vector3是一个非常重要的结构体,用于表示三维空间中的位置和方向。以下是关于Vector3的一些关键知识点:一、Vector3的基本概念和属性定义:Vector3是一个包含三个浮点数的结构体,分别代表X、Y和Z轴上的分量。它用于描述具有大小和方向两个属性的物理量,如速度、加速度......
  • three.js+vue智慧社区web3d数字孪生三维地图
    案例效果截图如下:具体案例场景和功能,详见b站视频:https://www.bilibili.com/video/BV1Bb421E7WL/?vd_source=7d4ec9c9275b9c7d16afe9b4625f636c 案例场景逻辑代码:<template><divid="whole"><!--threejs容器--><divid="three"ref="co......
  • BEVDet4D: Exploit Temporal Cues in Multi-camera 3D Object Detection阅读小结
    BEVDet4D:ExploitTemporalCuesinMulti-camera3DObjectDetectionBEVDet4D:在多相机三维目标检测中利用时间线索摘要背景:单帧数据包含有限信息,限制了基于视觉的多相机3D目标检测性能。BEVDet4D提出:提出BEVDet4D范式,将BEVDet从仅空间的3D扩展到时空4D工作空间。改进:通过......
  • CF573D Bear and Cavalry
    原题链接比较简单的\(\text{dp}\)题。看见题目的\(\sumw_ih_i\)式子,很容易想到排序不等式,所以我们先对\(w,h\)排序,然后分情况讨论。若\(w_i,h_i\)对应的编号不相等,肯定是把它们配对。若\(w_i,h_i\)对应的编号相等,考虑这样的连法:若是这种情况也不合法,或者它......
  • vfx特效有多烧钱?云渲染农场减少vfx特效成本
    ​特效制作一直是电影制作中的烧钱大户,尤其是视觉特效(VFX)的高昂成本让许多项目望而却步。但随着云渲染农场技术的发展,VFX特效的成本得到了有效控制,为电影工业带来了革命性的变化。在电影工业中,VFX特效是创造视觉奇观的关键。从《阿凡达》的潘多拉星球到《复仇者联盟》中的纽约大......
  • 学习threejs,导入OBJ格式和MTL的格式的模型
    ......
  • pacdora3D设计网站用这个码充值,果然便宜很多
     pacdora包装设计网站会员折扣码保存好,字母用大写,中间不要有空格键          【 pacdora会员折扣码:JYC20】       注意:需要手动充值!充值时输入折扣码就能享受折扣价!!!!连续包月自动扣费无法享受折扣价,所以,充值完记得取消连续包月,下次继续......
  • Fusion Studio 19.0.3 (macOS, Windows) - 视觉特效、3D、VR 及动态图形解决方案
    FusionStudio19.0.3(macOS,Windows)-视觉特效、3D、VR及动态图形解决方案BlackmagicDesignFusionStudio请访问原文链接:https://sysin.org/blog/blackmagic-design-fusion/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgFusion19登场卓越领先的视觉特......