Ich habe versucht, Text in Three.js mit TextGeometry zu rendern, aber einen leeren schwarzen Bildschirm bekommen. Ich vermutete, das war ein Problem mit der Kamera und ich habe einfach eine grüne Box hinzugefügt, diese Box wurde richtig gerendert.Text wird nicht korrekt gerendert mit TextGeometry (Three.js)
// tslint:disable-next-line:no-var-requires
const fontJson = require("./fonts/gentilis_bold.typeface.json");
import "./index.scss";
import * as THREE from "three";
(window as any).THREE = THREE;
import "./controls/OrbitControls";
const scene = new THREE.Scene();
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
const camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);
camera.position.set(0, 0, 5);
camera.lookAt(scene.position);
const textMaterial = new THREE.MeshPhongMaterial({ color: 0x00ff00 });
console.log(new THREE.Font(fontJson))
const textGeometry = new THREE.TextGeometry("Hello amigo", {
font: new THREE.Font(fontJson),
size: 80,
height: 5,
curveSegments: 12,
bevelEnabled: true,
bevelThickness: 10,
bevelSize: 8,
});
const textMesh = new THREE.Mesh(textGeometry, textMaterial);
// const geometry = new THREE.BoxGeometry(1, 1, 1);
// const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
// const mesh = new THREE.Mesh(geometry, material);
// scene.add(mesh);
scene.add(textMesh);
const controls = new THREE.OrbitControls(camera, renderer.domElement);
controls.addEventListener("change",() => {
renderer.render(scene, camera);
});
renderer.render(scene, camera);
Three.js Version 89 THREE.WebGLRenderer –
https://stackoverflow.com/questions/36676274/how-to-load-a-font-and-render-it-with-textgeometry – WestLangley
Ist es wirklich notwendig? In Three.js Quellcode haben wir einfache Ajax-Request und analysieren Methode \t \t Parse: function (json) { \t \t \t Rückkehr neue Schriftart (json); \t \t}, var font = scope.parse (json); if (onLoad) onLoad (font); Ich mache das gleiche, aber ohne FileLoader. –