2016-11-04 1 views
0

Я использую плагин «threex.dynamictexture.js» в своем приложении и испытываю некоторые проблемы с загрузкой моего шрифта (у меня проблемы даже с использованием существующего helvetiker_bold.typeface.json). Я использую следующий шаблон:Изменить шрифт-семью для текста текстуры в three.js

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. Вы можете мне помочь? Благодаря!

+0

Чтобы использовать шрифт Helvetiker для рисования с ним на холсте, вы должны установить его в своей системе. В противном случае вы получите шрифт по умолчанию для своих произведений. – prisoner849

+0

Ohh .. Что я могу сделать для других пользователей в этом случае? – Dima

ответ

1

Кажется, вы смешиваете системные шрифты с шрифтами three.js.

helvetiker_bold.typeface.json не имеет ничего общего с Helvetiker.ttf. Он предназначен для использования для TextGeometry. Чтобы рисовать с помощью «Helvetiker» на холсте, вы должны добавить/установить Helvetiker.ttf в шрифты вашей системы.

Если вы используете его для себя, это нормально, если вы найдете и установите необходимый шрифт. Но другие пользователи, у которых нет такого шрифта в своей системе, будут видеть записи с шрифтом по умолчанию.

Решение состоит в том, чтобы найти шрифт из стандартных системных шрифтов, который более или менее похож на Helvetiker (или шрифт, который вы хотели бы использовать/видеть).

+0

действительно не способ решить проблему? Даже что-то вроде @ font-face? – Dima

+0

, честно говоря, я не вижу проблем, чтобы найти стандартный шрифт, похожий на Helvetiker, и использовать его. 'dynamicTexture.drawText ('Hello', 100, 300, 'black', 'bolder 90px Arial');' – prisoner849

+1

@DmitriyKirillov Вы пытались использовать \ @ font-face с файлом шрифта, подобным Helvetica? Я не вижу причин, почему это не сработает. (Имейте в виду, что, как говорит заключенный849, файл helvetiker-typeface.json не имеет абсолютно никакого отношения к ThreeX DynamicTexture или конкретной проблеме, которую вы пытаетесь решить.) – msun