使用three.js插件将一些obj模型从Blender导出到json会导致我的网页出现javascript错误。 错误总是像
TypeError:顶点未定义
在线上的Three.js
zLength = vertices.length;
json文件似乎没有正确格式化,要改变什么? 如何创建正确的obj文件?
json文件的格式确实不同,节点“vertices”不会显示为根节点,而是嵌入节点内部:
"embeds" :
{
"emb___9903__30_1 __9903__30_1_8.002": { "scale" : 1.000000,
"materials" : [],
"vertices" : [...]}
这种格式似乎不正确,但我不知道在json导出期间或obj文件的创建过程中会发生什么。
html / js网页似乎工作正常,因为某些文件在浏览器中正确打开
基本上我做:
function init()
{
...
var jsonLoader = new THREE.JSONLoader();
jsonLoader.load( "models/model.js", addModelToScene );
...
}
function addModelToScene( geometry, materials )
{
var material = new THREE.MeshFaceMaterial( materials );
modeltd = new THREE.Mesh( geometry, material );
modeltd.scale.set(1,1,1);
scene.add( modeltd );
}
答案 0 :(得分:0)
我和你描述的完全一样。这对我有用(尽管我的输出可能有不同的目标)我得到了导出器的最新dev分支和three.js代码,我通过zip文件加载导出器而不是仅仅复制文件。 (我提到所有这些因为它可能是相关的,但我怀疑解决方案如下)我将导出选项设置如下
进口商代码:
var loader = new THREE.JSONLoader();
loader.load(path /*<--not file system but url*/, doLoad );
console.log("success");
doLoad = function(g) {
mesh = new THREE.Mesh(g, new THREEMeshBasicMaterial(someVal));
mesh.scale.set(3,3,3); //perhaps the mesh is loaded but off the screen?
scene.add(mesh);
}
此外,它可能有助于调试,知道我能够完全删除加载器时遇到相同的错误。其中g = ({/*json blob here*/})
。