2011-12-05 16 views
15

Ho una geometria del cubo e una mesh e non so come modificare la larghezza (o l'altezza ... posso cambiare x, ye z). Ecco un frammento di ciò che ho in questo momento:Come modificare la larghezza di CubeGeometry con Three.js?

geometry = new THREE.CubeGeometry(200, 200, 200); 
material = new THREE.MeshBasicMaterial({ color: 0xff0000, wireframe: true }); 
mesh = new THREE.Mesh(geometry, material); 
// WebGL renderer here 

function render(){ 
    mesh.rotation.x += 0.01; 
    mesh.rotation.y += 0.02; 
    renderer.render(scene, camera); 
} 

function changeStuff(){ 
    mesh.geometry.width = 500; //Doesn't work. 
    mesh.width = 500; // Doesn't work. 
    geometry.width = 500; //Doesn't work. 
    mesh.position.x = 500// Works!! 

    render(); 
} 

Grazie!

EDIT

trovato una soluzione:

mesh.scale.x = 500; 
+4

CubeGeometry estende geometria, ma utilizza larghezza, altezza, profondità proprietà come argomenti del costruttore solo, non come proprietà, in modo come lei ha ricordato, mesh.scale è la vostra soluzione –

risposta

7

Giusto per completare commento e la soluzione da domanda (e ricevere una risposta presente con esempio di codice):

// create a cube, 1 unit for width, height, depth 
var geometry = new THREE.CubeGeometry(1,1,1); 

// each cube side gets another color 
var cubeMaterials = [ 
    new THREE.MeshBasicMaterial({color:0x33AA55, transparent:true, opacity:0.8}), 
    new THREE.MeshBasicMaterial({color:0x55CC00, transparent:true, opacity:0.8}), 
    new THREE.MeshBasicMaterial({color:0x000000, transparent:true, opacity:0.8}), 
    new THREE.MeshBasicMaterial({color:0x000000, transparent:true, opacity:0.8}), 
    new THREE.MeshBasicMaterial({color:0x0000FF, transparent:true, opacity:0.8}), 
    new THREE.MeshBasicMaterial({color:0x5555AA, transparent:true, opacity:0.8}), 
]; 
// create a MeshFaceMaterial, allows cube to have different materials on each face 
var cubeMaterial = new THREE.MeshFaceMaterial(cubeMaterials); 
var cube = new THREE.Mesh(geometry, cubeMaterial); 

cube.position.set(0,0,0); 
scene.add(cube); 
cube.scale.x = 2.5; // SCALE 
cube.scale.y = 2.5; // SCALE 
cube.scale.z = 2.5; // SCALE 

Un po ' esempio avanzato e dinamico implementato qui: https://www.matheretter.de/formeln/geometrie/quader/ (sempre con lo stesso ridimensionamento)

0

Le proprietà della scala possono essere utilizzate per cambiare larghezza, altezza e profondità del cubo.

//creating a cube 
    var geometry = new THREE.BoxGeometry(1,1,1); 
    var material = new THREE.MeshBasicMaterial({color:"white"}); 
    var cube = new THREE.Mesh(geometry, material); 


    //changing size of cube which is created. 
    cube.scale.x = 30; 
    cube.scale.y = 30; 
    cube.scale.z = 30; 
Problemi correlati