three.js - 重载解析失败?
问题描述
我正在尝试使用 Promise 在平面上渲染 TTF 字体加载器并将其转换为纹理,然后在 index.js 上将其映射到 MeshBasicMaterial 但给了我上述错误
目标是在 3D 透明对象上折射下面创建的文本,当我在普通画布 filltext 上创建文本但想使用 three.js fontloader 时我成功了,请谁能告诉我错误可能是由什么引起的?
很多帮助将不胜感激。
谢谢
字体加载器.js
const loader = new TTFLoader();
export default function loadFonts(url) {
return new Promise(resolve => {
let font = null;
let text = 'three.js';
let group, textMesh1, textMesh2, textGeo, material;
loader.load(url, function(json) {
font = new THREE.Font(json);
textGeo = new THREE.TextGeometry(text, {
font: font,
size: 70,
height: 0,
bevelThickness: 0,
bevelSize: 0,
bevelEnabled: false
});
textGeo.computeBoundingBox();
textGeo.computeVertexNormals();
const centerOffset = -0.5 * (textGeo.boundingBox.max.x - textGeo.boundingBox.min.x);
textMesh1 = new THREE.Mesh(textGeo, material);
textMesh1.position.x = centerOffset;
textMesh1.position.y = 0;
textMesh1.position.z = 0;
textMesh1.rotation.x = 0;
textMesh1.rotation.y = 0;
var texture = new THREE.Texture(textMesh1);
texture.needsUpdate = true;
resolve(texture)
});
});
}
index.js
async createBackground() {
// const tex = await loadTexture("test.JPG");
const tex = await loadFonts("/fonts/kenpixel.ttf");
var material = new THREE.MeshBasicMaterial({
map: tex
})
material.map.minFilter = THREE.LinearFilter;
const quad = new THREE.Mesh(new THREE.PlaneBufferGeometry(), material);
quad.layers.set(1);
quad.scale.set(this.vp.width, this.vp.height, 1);
return quad;
}
解决方案
var texture = new THREE.Texture(textMesh1);
不支持此工作流程。您不能将网格用作纹理的图像。
推荐阅读
- angular - 没有使用角度中的ngrx redux从api调用中获取列表
- kubernetes - 是否可以删除服务帐户令牌量投影?
- git - 对订单感到困惑 git commit 问题
- django - 如何在 Django 注释中返回列表?
- android - Andorid 10 安卓设备的唯一标识
- openlayers - 如何在OL6中获得一个圆的距离
- javascript - xterm.js@3.14.5 有时无法显示任何内容
- python - 从 C 调用 Python 函数并在 C 中使用 2D Numpy 数组
- html - 如何使第N列填充表格中的空白宽度
- xss - AWS WAF XSS 检查阻止表单在表单字段值中使用“ON”关键字