我最近开始与ThreeJS合作,我无法解决这个问题。 我想加载我自己的字体以在场景中显示3D文本对象,我跟着this example并且一切顺利,但现在当我只更改"字体:" TextGeometry对象中的选项,一切都崩溃了,没有显示任何内容(错误是字体未定义)
我使用typeFace来创建字体,包括脚本似乎很好, 我个人觉得有一些字体的名字,我输错了,因为我读到某处.typeface.js之间的所有内容都是threeJS正在寻找的实际字体名称,应该包括在内(小写),但在示例中,没有_regular。 或者font-name和font-family之间的区别......不知道!
谢谢。
<script type="text/javascript" src="mrdoob-three.js-1769fbf/examples/fonts/helvetiker_regular.typeface.js"></script>
<script type="text/javascript" src="trebuchet_ms.typeface.js"></script>
var textGeo = new THREE.TextGeometry( "THREE.JS", {
size: 50,
height: 10,
curveSegments: 50,
// font: "helvetiker", works fine
font: "trebuchet_ms",
// weight: "bold",
// style: "normal",
bevelThickness: 11,
bevelSize: 0,
bevelEnabled: true
});
textGeo.computeBoundingBox();
var textMaterial = new THREE.MeshPhongMaterial( { color: 0xff0000} );
var mesh = new THREE.Mesh( textGeo, textMaterial );
mesh.position.set(0,0,0) ;
mesh.castShadow = true;
mesh.receiveShadow = true;
scene.add( mesh );
Uncaught正常重量和正常风格的字体投石机是 丢失。
答案 0 :(得分:9)
以下是如何找到要使用的字体名称:
"font_family_name":"Trebuchet MS"
所以在你的特定例子中:
var textGeo = new THREE.TextGeometry( "THREE.JS", {
size: 200,
height: 50,
curveSegments: 12,
font: "trebuchet ms",
// weight: "normal",
// style: "normal",
bevelThickness: 2,
bevelSize: 5,
bevelEnabled: true
});
提示:如有疑问,请在出现错误时在浏览器控制台中评估THREE.FontUtils.faces
。这将为您提供所有当前注册字体的名称。