首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >三个JS -如何通过名称访问从.obj加载的对象?

三个JS -如何通过名称访问从.obj加载的对象?
EN

Stack Overflow用户
提问于 2018-07-26 05:30:59
回答 1查看 731关注 0票数 0

我有一个函数,它以这种方式从.obj文件中加载对象:

function loadObject(obj, mtl, clr, opc, px, py, pz, rx, ry, rz, cs, rs, name) {
    switch(mtl) {
        case 'transparent':
            var material = new THREE.MeshLambertMaterial({
                color: clr,
                transparent: true,
                opacity: opc,
            });
            break;
        case 'web':
            var material = createElementMaterial('img/web.png');
            break;
        case 'basic':
            var material = new THREE.MeshBasicMaterial({ color: clr });
            break;
        default:
            var material = new THREE.MeshLambertMaterial({color: clr, transparent: true, opacity: opc});
            break;
    }
    var objLoader = new THREE.OBJLoader();
    objLoader.load(obj, function(mesh) {
        globalobject = mesh;
        globalobject.name = name;
        mesh.traverse(function(node) {
            if(node instanceof THREE.Mesh) {
                node.castShadow = cs;
                node.receiveShadow = rs;
                node.material = material;
                node.position.x = px;
                node.position.y = py;
                node.position.z = pz;
                node.rotation.x = rx;
                node.rotation.y = ry;
                node.rotation.z = rz;           }
        });
        scene.add(mesh);
    });
}

现在,我需要命名每个加载的对象,并使用getObjectByName()控制其属性,如不透明度等。对象被加载并遵循函数规则,但是当我加载一个对象并尝试通过名称访问它时,我从控制台得到一个未定义的输出,并且当我通过直接键入向控制台发送查询时可以打印该对象。因此,从另一方面来说,我正在寻找一种方法,允许我从.obj文件访问每个加载的对象。

EN

回答 1

Stack Overflow用户

发布于 2018-07-26 06:53:11

var object = scene.getObjectByName( "objectName" );
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51527961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档