0
我有下面的代碼生成一些網格。我想3D文本添加到現場,但是當我這樣做,我得到以下錯誤:three.js fontloader無法讀取未定義的形狀
TypeError: Cannot read property 'generateShapes' of undefined
這是代碼我必須生成網格和3D文字:
var x = 0;
var y = 0;
var finalSize = 450;
var textureLoader = new THREE.TextureLoader();
var fontLoader = new THREE.FontLoader();
的var字體是不確定的原因?
var font = fontLoader.load('css/arial_bold.json');
var fontColor = textMaterial = new THREE.MeshBasicMaterial({ color: 0x000000, overdraw: 0.5 });
for (var i = javascriptProjects.length - 1; i >= 0; i--) {
var object = {};
object.scale = javascriptProjects[i].baseImageData["0"]/finalSize;
var geometry = new THREE.PlaneGeometry(javascriptProjects[i].baseImageData["0"]/object.scale,javascriptProjects[i].baseImageData["1"]/object.scale, 10, 10);
object.texture = textureLoader.load("data/"+ javascriptProjects[i].base_image);
object.material = new THREE.MeshBasicMaterial({ map: object.texture, overdraw: 0.5, transparent: true });
object.material.opacity = 0.5;
object.mesh = new THREE.Mesh(geometry, object.material);
//下面一行生成錯誤
object.FontGeo = new THREE.TextGeometry(javascriptProjects[i].project_name , {
font: font,
size: 50,
height: 2,
curveSegments: 12,
bevelThickness: 1,
bevelSize: 1,
bevelEnabled: false
});
object.textMesh = new THREE.Mesh(object.FontGeo, fontColor);
object.textMesh.position.x = object.location.x;
object.textMesh.position.y = object.location.y;
object.textMesh.position.z = object.location.z - 100;
scene.add(object.textMesh);
object.location = new THREE.Vector3(x, 120, y);
object.id = "" + javascriptProjects[i].project_id;
object.mesh.position.x = object.location.x;
object.mesh.position.y = object.location.y;
object.mesh.position.z = object.location.z;
scene.add(object.mesh);
meshes.push(object.mesh);
objects.push(object);
x += 600;
if(i % 3 == 0){
y += 600;
x = 0;
};
};
顯然字體是未定義的。爲什麼我不明白我做錯了什麼。任何建議都會很棒。如果有什麼不清楚的,請告訴我。
預先感謝
你可以通過調試器,看看你的哪些變量是未定義的。 – gaitat
查看未定義變量的更新答案 – FutureCake