javascript - 无法在 Three.js 场景中创建 3D 文本
问题描述
我可以在场景中创建和渲染任何图元,Three.js
除了Text
. 我正在使用称为字体,它位于文件所在helvetiker_bold
的同一目录中。index.html
这是一个代码:
// index.html
var uploader = new THREE.FontLoader();
uploader.load( '/helvetiker_bold.typeface.json', ( font ) => {
options = {
size: 80,
height: 5,
weight: 'normal',
font: font,
style: 'normal',
bevelThickness: 2,
bevelSize: 4,
bevelSegments: 3,
bevelEnabled: true,
curveSegments: 12,
steps: 2
};
textGeo = new THREE.TextGeometry( "Motion Graphics", options );
material = new THREE.MeshNormalMaterial();
textMesh = new THREE.Mesh( textGeo, material );
textMesh.position.z = -2;
textMesh.scale.set(0.2, 0.2, 0.2)
scene.add( textMesh );
});
我的代码有什么问题?为什么我不能生成 3D 文本?
解决方案
我遇到的问题现在已经解决了。起初我将helvetiker_bold.typeface.json
字体文件放在文件所在的同一目录中index.html
。今天我将一个字体文件拖到另一个文件夹中docsDir
,并稍微重构了我的代码:
var loader = new THREE.FontLoader();
loader.load( '/docsDir/helvetiker_bold.typeface.json', function ( font ) {
var textGeo = new THREE.TextGeometry( 'Motion Graphics', {
font: font,
size: 40,
height: 20,
curveSegments: 10,
bevelEnabled: true,
bevelThickness: 5,
bevelSize: 2,
bevelOffset: 0,
bevelSegments: 5
});
var textMaterial = new THREE.MeshNormalMaterial();
var textMesh = new THREE.Mesh( textGeo, textMaterial );
scene.add( textMesh );
});
现在它按预期工作。我的 3D 文本在场景中呈现。
推荐阅读
- try-catch - Try/Catch 对转换错误不起作用,同时在 X++ 中从 excel 导入数据
- html - 引导轮播不使用角度
- r - 更改 R 中每个堆栈条形图中部分的顺序
- monitoring - 对于大型数据集,Grafana 在 60 秒后不显示任何 InfluxDB 数据(无法获取)
- javascript - 在 iPadOS 14 Safari 上触发 keydown 事件时设置输入值不正确
- java - 调用 super make 必须是方法中的第一个语句
- bitbake - 如何将文件添加到构建根文件系统?
- javascript - ReactJs:图像更新后刷新 img 标签,其中 url 保持不变,但来自该 url 的图像发生变化
- java - 无法达到 spring-boot-starter-parent 依赖项
- javascript - 打字稿无法在没有扩展的情况下导入