2016-04-17 47 views
3

最近、three.jsでの作業を開始しましたが、現在はtextgeometryで問題に直面しています。 私はthree.jsバージョン75を使用しています。私はjs/helvetiker_bold.typeface.jsフォントを使用しました。フォントを読み込んでTextGeometryでレンダリングする方法

var geometry = new THREE.TextGeometry(this.txt, { 
    size: this.textSize, 
    height: this.textHeight, 
    curveSegments: 3, 
    font: this.textFont, 
    weight: "bold", 
    style: "normal", 
    bevelEnabled: false 
}); 

テストがあるため、次の問題

1キャッチされないにReferenceErrorのレンダリングされていません:889 THREE.TextGeometry:フォントパラメータがない_typeface_jsは

2.three.min.jsが定義されていません。 THREE.Fontのインスタンス

誰でも私を助けてください。

答えて

10

フォントをロードし、TextGeometryでそれをレンダリングするために、このパターンを使用します。

var loader = new THREE.FontLoader(); 

loader.load('fonts/helvetiker_bold.typeface.json', function (font) { 

    var textGeo = new THREE.TextGeometry("My Text", { 

     font: font, 

     size: 200, 
     height: 50, 
     curveSegments: 12, 

     bevelThickness: 2, 
     bevelSize: 5, 
     bevelEnabled: true 

    }); 

    var textMaterial = new THREE.MeshPhongMaterial({ color: 0xff0000 }); 

    var mesh = new THREE.Mesh(textGeo, textMaterial); 
    mesh.position.set(x, y, z); 

    scene.add(mesh); 

}); 

three.js r.82

+0

ありがとうございます。 –

+0

私はこれを使用しましたが、テキストは見えません。 –

0

あなたは同じようにJSONをロードし、FontLoaderを使用する必要はありません。

const fontJson = require("./fonts/gentilis_bold.typeface.json"); 

const font = new THREE.Font(fontJson); 
+0

MeshPhongMaterialテクスチャまたは他のもの(MeshBasicMaterialを除く)を使用する場合は、シーンにライトを追加する必要があります。あなたのシーンにこのラインを追加するだけです。 'const pointLight = new THREE.PointLight(0xffffff、1.5); pointLight.position.set(0、100、90); scene.add(pointLight); pointLight.color.setHSL(Math.random()、1、0.5); const textMaterials = [ 新しいTHREE.MeshPhongMaterial({color:0xffffff、flatShading:true})、 新しいTHREE.MeshPhongMaterial({color:0xffffff})、]; ' –

関連する問題