Three.js(12)——3D text(一)

336 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第13天,点击查看活动详情 >>

今天,我们来实现下面这种效果:

微信截图_20220819152549.png

文字效果 text

TextGeometry 文本缓冲几何体

一个用于将文本生成为单一的几何体的类。它是由一串给定的文本,以及由加载的font(字体)和该几何体ExtrudeGeometry父类中的设置所组成的参数来构造的。

TextGeometry可以用来创建三维文本。其实是通过指定字体创建字符,然后像拉伸几何体那样把文字拉伸,继而得到三维文本。创建TextGeometry文本几何体有很多参数与ExtrudeGeometry几何体一样,具体如下:

属性必须描述
size该属性指定文本大小,默认值是100
height该属性指定文本可以厚度,默认值是50
font该属性指定文本的字体,是一个THREE.Font对象
bevelEnabled该属性指定文本拉伸时是否启用斜角,默认false
bevelThickness该属性指定文本拉伸体斜角的厚度,默认值是10
bevelSize该属性指定文本拉伸体斜角的高度。默认值是8
bevelSegments该属性指定文本拉伸体斜角的分段数,段数越多斜角越光滑,默认值是3
curveSegments该属性指定文本拉伸时拉伸曲线的分段数,段数越多曲线越光滑,默认值是4

FontLoader 字体加载器

一个用于加载JSON格式的字体的类。返回font, 返回值是表示字体形状的数组,在内部使用文件夹在其来加载文件。

// 引入FontLoader
import { FontLoader } from "three/examples/jsm/loaders/FontLoader";
// 初始化一个字体加载器
const fontLoader = new FontLoader();
// .load(),第一个参数为文件路径
fontLoader.load("./fonts/helvetiker_regular.typeface.json", (font) => {
    // 设置文字几何体为文本缓冲几何体
    const textGeometry = new TextGeometry("hello Three.js", {
        font: font,
        size: 0.5,
        height: 0.2,
        curveSegments: 10,
        bevelEnables: true,
        bevelThickness: 0.03,
        bevelSize: 0.02,
        bevelOffset: 0,
        bevelSegments: 5,
    });
    // 设置文字材质
    const textMaterial = new THREE.MeshMatcapMaterial({
        matcap: matcapTexture,
    });
    const text = new THREE.Mesh(textGeometry, textMaterial);
    scene.add(text);
});