2011-12-05 24 views
15

Mam geometrię sześcianu i siatkę, i nie wiem jak zmienić szerokość (lub wysokość ... mogę zmienić x, yi z). Oto fragment tego, co mam teraz:Jak zmienić szerokość CubeGeometry za pomocą 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(); 
} 

Dzięki!

EDIT

znalazł rozwiązanie:

mesh.scale.x = 500; 
+4

CubeGeometry rozszerza Geometry, ale używa właściwości width, height, depth jako argumentów konstruktora, a nie jako właściwości, tak jak wspomniałeś, mesh.scale to twoje rozwiązanie –

Odpowiedz

7

Wystarczy wypełnić komentarz i rozwiązanie z pytaniem (i otrzymywać odpowiedź obecny z przykładowym kodem):

// 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 

nieznacznie zaawansowany, dynamiczny przykład zaimplementowany tutaj: https://www.matheretter.de/formeln/geometrie/quader/ (wciąż takie samo skalowanie)

0

Właściwości skali można wykorzystać do zmiany szerokości, wysokości i głębokości kostki.

//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; 
Powiązane problemy