0

我在我的应用程序中使用插件 «threex.dynamictexture.js» 并且在加载我的字体时遇到了一些问题(即使使用现有的 helvetiker_bold.typeface.json 也有问题)。我使用以下模式:

function loadFont() {

                var loader = new THREE.FontLoader();
                loader.load('/threejs/fonts/helvetiker_bold.typeface.json', function (font) {

                    dynamicTexture  = new THREEx.DynamicTexture(canvasWrapper.offsetWidth,canvasWrapper.offsetHeight);
//                    dynamicTexture.context.font  = 'bolder 90px Helvetiker';
                    var geometry2    = new THREE.SphereGeometry( 5, 100, 100);
                    var material2    = new THREE.MeshBasicMaterial({
                        map : dynamicTexture.texture
                    });
                    var mesh2    = new THREE.Mesh( geometry2, material2 );
                    console.log(font);

                    dynamicTexture.texture.needsUpdate  = true;
                    mesh2.position.set(10, 10, 10);
                    scene.add( mesh2 );

                    dynamicTexture.drawText('Hello', 100, 300, 'black', 'bolder 90px helvetiker');


                });
            }

之后,我可以在几何体上看到渲染的文本纹理,但字体系列仍然是默认设置。如果我使用 Arial 而不是 Helvetiker(或 helvetiker),则呈现的文本将变为 Arial。

我到处找,但只找到有关 TextGeometry 解决方案。顺便说一句,我可以使用 TextGeometry 加载器加载我的字体系列。你能帮助我吗?谢谢!

4

1 回答 1

1

似乎您将系统字体与 three.js 字体混合在一起。

helvetiker_bold.typeface.json与 没有任何共同之处Helvetiker.ttf。它旨在用于TextGeometry. 要在画布上使用“Helvetiker”进行绘制,您必须在Helvetiker.ttf系统上添加/安装字体。

如果你自己用,找到并安装你需要的字体就可以了。但是其他用户,他们的系统上没有这种字体,将看到使用默认字体的文字。

解决方案是从标准系统字体中找到一种与 Helvetiker 或多或少相似的字体(或您想使用/查看的字体)。

于 2016-11-04T17:20:32.550 回答