2015-11-03 74 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

相關問題