Геометрия китайского текста Threejs генерируется с помощью newTextGeometry(), который существует как отдельный класс в Threejs const txtGeo = new TextGeometry("threejs", { ...opts, Font: Font });
Давайте сначала посмотрим на эффект:
<template>
<div>
</div>
</template>
<script setup>
import { ref } from "vue";
import * as THREE from "three";
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
import { TextGeometry } from "three/examples/jsm/geometries/TextGeometry";
import { FontLoader } from "three/examples/jsm/loaders/FontLoader";
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(
75,
window.innerWidth / window.innerHeight,
0.1,
1000
);
// const font = new THREE.Font("Arial");
camera.position.set(0, 0, 10);
let opts = {
size: 3,
height: 5,
// fontWeight: "bold",
bevelSize: 3,
bevelEnabled: false,
steps: 7,
font: "",
bevelThickness: 1
};
const ftloader = new FontLoader();
ftloader.load("/src/assets/fonts/helvetiker_regular.typeface.json", font => {
const txtGeo = new TextGeometry("sean", { ...opts, font: font });
const mesh = new THREE.Mesh(
txtGeo,
new THREE.MeshBasicMaterial({ color: "#e6c" })
);
scene.add(mesh);
});
const renderder = new THREE.WebGLRenderer();
renderder.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderder.domElement);
renderder.setClearColor("#eee");
const control = new OrbitControls(camera, renderder.domElement);
const render = () => {
requestAnimationFrame(render);
renderder.render(scene, camera);
};
render();
</script>
<style scoped>
/* body {
font-family: Arial, Helvetica, sans-serif;
} */
</style>
Что здесь требует особого внимания:
Примечание: 1. Необходимо ввести шрифт геометрии текста. Вы можете использовать шрифты по умолчанию из трех библиотек. Шрифт находится в папке Three/example/fonts/. Шрифт по умолчанию использует формат файла json
2. При добавлении средств в TextGeometry параметр шрифта является не обычным объектом шрифта, а объектом шрифта в Three. То есть шрифт — это новый FontLoader(). загрузить загруженный объект шрифта