我正在为WebGL和Three.js开发的体积渲染工具上传一系列.obj和.mtl文件。在代码的一部分中,我使用OBJMTLLoader上传文件:
scapula = new THREE.OBJMTLLoader();
scapula.load( 'obj/scapulaTWO.obj', 'obj/scapulaTWO.mtl',
function ( object ) {
object.name = "scapula";
object.scale.set (4,4,4);
vertices = object.geometry.vertices;
scene.add(object);
});
但是我无法访问顶点。调试器说object.geometry是未定义的。我也试过
vertices = new THREE.Mesh(object);
但它不起作用。如果你能帮助我,我将非常感激。
提前致谢。
答案 0 :(得分:3)
three.js中导入的3d模型的节点结构取决于OBJ文件的结构以及o
或g
(http://www.fileformat.info/format/wavefrontobj/egff.htm#WAVEOBJ-DMYID.2)等分组元素。
您可以使用浏览器调试器来了解three.js如何构建您的结构。在我的情况下(我在OBJ文件中声明了几个对象),结构如下所示:
model(THREE.Group)> children(Array)> child [i](THREE.Object3D)> children(Array)>孩子[j](THREE.Mesh)>几何(THREE.Geometry)>顶点(数组)
在这里,您可以访问object3d i中的Mesh j的顶点k:
var vertexK = object.children[i].children[j].geometry.vertices[k];