[英]Three JS - How to access the object loaded from .obj by name?
我有一個函數可以通過以下方式從.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文件訪問每個加載的對象。
var object = scene.getObjectByName( "objectName" );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.