2011-12-05 16 views
15

Bir küp geometri ve bir kafesim var ve genişliği nasıl değiştireceğimi bilmiyorum (ya da yükseklik ... x, y ve z'yi değiştirebilirim). İşte ben şu anda var ne bir parçacık İşte:CubeGeometry'nin genişliğini Three.js ile nasıl değiştirebilirim?

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(); 
} 

teşekkürler!

DÜZENLEME

Bulunan çözüm:

mesh.scale.x = 500; 
+4

CubeGeometry Geometri uzanır, ancak genişlik, yükseklik, kurucu bağımsız olarak derinlik özelliklerini değil, yalnızca özellikleri olarak, Bahsettiğiniz şekilde, mesh.scale senin çözümdür kullanır –

cevap

7

Sadece yorumunu ve sorudan çözümü tamamlamak için (ve örnek kodu ile mevcut bir cevap var): hafifçe

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

A gelişmiş, dinamik örnek burada uygulandı: https://www.matheretter.de/formeln/geometrie/quader/ (hala aynı ölçekleme)

0

Ölçek özellikleri küpün genişliğini, yüksekliğini ve derinliğini değiştirmek için kullanılabilir.

//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; 
İlgili konular