【发布时间】:2017-11-29 01:27:40
【问题描述】:
我正在尝试将 Blender 设计的网格导入到 three.js 项目中。
我添加了 io_three 插件,现在可以为 Blender 导出 json 文件。
当我尝试加载网格(使用 THREE.JSONLoader)时,我从 three.min.js 的第 684 行收到“未捕获的类型错误:无法读取未定义的属性‘长度’” - 这听起来像一个数组是不确定的。
我已经读到,在 Blender 中,应该在 three.js 导出器中选中“面部材料”复选框,但对我来说,该选项是灰色的。另外我注意到,在三个导出器的几何部分中,导出面的选项未选中并显示为灰色。我怀疑这是问题所在,但为什么我无法选中这些复选框?
有人知道为什么 Blender 可能会阻止我在 three.js 导出器中启用“面部材质”和“面部”选项吗?
编辑
为了完整起见,这是我用来加载网格的代码:
var loader = new THREE.JSONLoader();
// load a resource
loader.load( 'assets/meshes/cube.json', function ( geometry ) {
var material = new THREE.MeshLambertMaterial( { color: 0x006666 } );
mesh = new THREE.Mesh(geometry, material);
scene.add( mesh );
}
)
cube.json 文件确实位于 assets/mesh 文件夹中。
而且我还尝试将其加载为“cube.js”(更改 Windows 中的文件扩展名),但我想解决的最初问题是从 Blender 导出的问题。谢谢。
这里是 cube.json 文件,它不是在玩球......
{
"data":{
"index":{
"type":"Uint16Array",
"array":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],
"itemSize":1
},
"attributes":{
"uv":{
"type":"Float32Array",
"array":[1,0,0,1,0,0,0.999999,1,0,0,1,0,0.999999,1,0,0,1,0,0.999999,1,0,0,1,0,1,0,0,1,0,0,0.999999,1,0,0,1,0,1,0,0.999999,1,0,1,0.999999,1,0,1,0,0,0.999999,1,0,1,0,0,0.999999,1,0,1,0,0,1,0,0.999999,1,0,1,0.999999,1,0,1,0,0],
"itemSize":2
},
"normal":{
"type":"Float32Array",
"array":[-7.10543e-15,-1,2.98023e-08,-7.10543e-15,-1,2.98023e-08,-7.10543e-15,-1,2.98023e-08,7.10543e-15,1,-2.98023e-08,7.10543e-15,1,-2.98023e-08,7.10543e-15,1,-2.98023e-08,1,-2.38419e-07,7.10543e-15,1,-2.38419e-07,7.10543e-15,1,-2.38419e-07,7.10543e-15,-5.96046e-08,-2.98023e-07,1,-5.96046e-08,-2.98023e-07,1,-5.96046e-08,-2.98023e-07,1,-1,-1.49012e-07,-2.38419e-07,-1,-1.49012e-07,-2.38419e-07,-1,-1.49012e-07,-2.38419e-07,2.38419e-07,1.78814e-07,-1,2.38419e-07,1.78814e-07,-1,2.38419e-07,1.78814e-07,-1,-1.77636e-15,-1,2.98023e-08,-1.77636e-15,-1,2.98023e-08,-1.77636e-15,-1,2.98023e-08,1.5099e-14,1,-2.98023e-08,1.5099e-14,1,-2.98023e-08,1.5099e-14,1,-2.98023e-08,1,3.27825e-07,5.66244e-07,1,3.27825e-07,5.66244e-07,1,3.27825e-07,5.66244e-07,-5.0664e-07,1.49012e-07,1,-5.0664e-07,1.49012e-07,1,-5.0664e-07,1.49012e-07,1,-1,-1.19209e-07,-2.08616e-07,-1,-1.19209e-07,-2.08616e-07,-1,-1.19209e-07,-2.08616e-07,2.38419e-07,1.78814e-07,-1,2.38419e-07,1.78814e-07,-1,2.38419e-07,1.78814e-07,-1],
"itemSize":3
},
"position":{
"type":"Float32Array",
"array":[1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,0.999999,1,1,1,1,-1,1,1,-1,1,-1,1,1,-1,-1,0.999999,1,1,-1,-1,1,1,-1,1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,0.999999,1,1,1,1,-1,0.999999,1,1,1,-1,1,0.999999,1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1],
"itemSize":3
}
}
},
"metadata":{
"normal":36,
"type":"BufferGeometry",
"uv":36,
"generator":"io_three",
"position":36,
"version":3
}
}
【问题讨论】:
-
您能否确认您使用的是最新的构建 r87 以及最新的导出器?
-
我在上周末(2017 年 6 月 22 日)下载了 three.js-master.zip 和 io_three 插件。现在只是再次查看拉链;我如何确定它是哪个版本?
-
来自 chrome 的控制台读数。在 chrome 中点击 ctrl-shift-i 以检查控制台读数。三个总是先吐出版本号
-
谢谢。第一个控制台日志是“THREE.WebGLRenderer 86”,所以我猜是 r86?如果您知道 Blender 中发生了什么,那也很高兴(这是 2.77 版,仅供参考)
-
我仍然没有在您的帖子中看到链接到您的代码的小提琴。我无法调试我看不到的东西。向我展示它失败的最简单版本,我可以进行故障排除。我不相信这不是代码问题。