2015-11-03 76 views
2

如何通过从完整场景.blend文件导出的元素访问元素!Three.js:如何计算在场景中添加的对象

在这个测试中,我出口搅拌机场景四个立方体。现在,用three.js,我想将这些立方体(对象)存储在一个javascript数组中。我试过这个:

<html lang="pt-BR"> 
<head> 
    <meta charset="UTF-8" /> 
</head> 
<script src="./js/three.min.js"></script> 
<script src="./js/OrbitControls.js"></script> 
<script type="text/javascript" src="./js/dat.gui.min.js"></script> 
<script src="./js/OBJLoader.js"></script> 

<div id="render"> 
</div> 

<script> 
// VARIÁVEIS 

var qtd = 0; 
var tam = 0; 
var Modelo; 
var Elementos = []; 

// OBJETOS 
var Render = new THREE.WebGLRenderer(); 
var Cenario = new THREE.Scene(); 
var Cam = new THREE.PerspectiveCamera(); 
var LuzDir; 
var controles; 

// modelo 3d com .ObjectLoader() 
var Modelo3d_Object = new THREE.ObjectLoader(); 
Modelo3d_Object.load('modelo3d_teste.json', funcaoCarregaJSON); 

// INI FUNCOES 
inicio(); 
animacao(); 
console.log(Cenario); 
console.log(Cenario.__webglObjects); 
Elementos = Cenario.__webglObjects; 
console.log(Elementos.length); 

// FUNÇÕES 
function inicio(){ 
    Render.setSize(600,600); 
    document.getElementById('render').appendChild(Render.domElement); 
    Cam.position.z = 100; 
    Cenario.add(Cam); 
    Cenario.add(new THREE.GridHelper(100,10)); 
    LuzDir = new THREE.DirectionalLight(0xffffff, 1); 
    LuzDir.position.set(100, 100, 50); 
    Cenario.add(LuzDir); 
    controles = new THREE.OrbitControls(Cam, Render.domElement);  
} 

// Carrega arquivo JSON 
function funcaoCarregaJSON(geometry){ 
    geometry.position.x = 0; 
    geometry.position.y = 0; 
    geometry.position.z = 0; 
    Cenario.add(geometry); 
} 

function animacao() { 
    requestAnimationFrame(animacao); 
    render_modelo(); 
} 

function render_modelo(){ 
    // Renderizar 
    Render.render(Cenario, Cam); 
}  
</script> 
<html> 

但是在这种情况下,我只能看到一个元素。

1 or 4 elements in ".__webglObjects"?

我在哪里出了错?

Download: .JSON File

回答

0

在你funcaoCarregaJSON()之前你回来,我会做:

var numOfMeshes = 0; 
geometry.traverse(function(child) { 
    if(child instanceof THREE.Mesh) 
     numOfMeshes++; 
}); 
+0

谢谢Gaitat,我试过,但没有奏效。 作为全局变量的“numOfMeshes”在_callback函数中未更新。 我试图找出如何通过_cenario访问我的四个立方体。任何人都可以在这方面帮助我。 – user4659257

相关问题