为three.js导出json的搅拌机

Posted

技术标签:

【中文标题】为three.js导出json的搅拌机【英文标题】:blender exporting json for three.js 【发布时间】:2013-09-28 02:12:32 【问题描述】:

使用 three.js 插件将一些 obj 模型从 Blender 导出到 json 会导致我的网页出现 javascript 错误。 错误总是像

TypeError: 顶点未定义

在 Three.js 的行

zLength = vertices.length;

json 文件格式似乎不正确,要更改什么? 如何创建正确的 obj 文件?

json文件的格式确实不一样,节点“vertices”不是作为根节点出现而是在embeds节点内部:

"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 );

【问题讨论】:

部分解决:问题来自导出过程中的“嵌入网格”标志,我已取消选择,格式现在恢复正确。无论如何,我已经看到人们在“嵌入”节点中使用这种格式,从哪里获取有关它的信息? 【参考方案1】:

我遇到了与您描述的完全相同的问题。这对我有用(尽管我的输出可能有不同的目标)我得到了导出器的最新开发分支和 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*/)

【讨论】:

以上是关于为three.js导出json的搅拌机的主要内容,如果未能解决你的问题,请参考以下文章

Blender 导出器 (v70) 到 json three.js 蒙皮动画

无法使用 Three.js 加载从搅拌机导出的纹理 Collada

如何正确加载three.js中的json模型?

将 Blender 粒子系统头发导出到 Three.JS

如何将 ms3d 模型转换为 three.js?

Blender 导出 three.js 动画 - 骨骼奇怪地旋转