2016-04-01 29 views
1

Ben sahnede basit bir CricleGeometry var ve ben bir ekstrüzyon benzetmek için köşeleri çoğaltmak ve yeni yüzler oluşturuyorum. Yeni yüzler oluşturulduktan sonra "computeFaceNormals()" ı çalıştırıyorum ancak bunların oryantasyonu alternatif. Tüm yüzlerin dışa bakmasını nasıl sağlayabilirim? enter image description hereYeni oluşturulan yüzlerde bilgisayar yüzü yüzdeleri

İşte kodun temel parçası:: İşte

bir ekran var

//geometry 
geometry = new THREE.CircleGeometry(100, 12); 

geometry.mergeVertices(); 

material = new THREE.MeshPhongMaterial({ color: 0xffa800 }); 


/////////////////////////////////////////////////////////////// 

//CREATE NEW FACES 

/////////////////////////////////////////////////////////////// 


var sideGeo = new THREE.Geometry(); 

//duplicate vertices 
for (var v = 0; v < geometry.vertices.length; v++) { 

    sideGeo.vertices.push(geometry.vertices[ v ].clone()); 
    sideGeo.vertices.push(geometry.vertices[ v ].clone()); 

} 

//translate every second vertex on Z by 10 
for (var v = 0; v < sideGeo.vertices.length; v += 2) { 

    sideGeo.vertices[ v ].z += 100; 

} 

//add them to faces 
for (var v = 0; v < sideGeo.vertices.length -2; v++) { 

    //vertices IDs 
    var a = v; 
    var b = v + 1; 
    var c = v + 2; 

    //add them to a face 
    var f = new THREE.Face3(a, b, c); 
    sideGeo.faces.push(f); 


} 

//merge with original geo and compute face normals 
geometry.merge(sideGeo); 

geometry.computeFaceNormals(); 


//mesh 
mesh = new THREE.Mesh(geometry, material); 

scene.add(mesh); 

cevap

2

Eğer Geometry.computeFaceNormals() çağırdığınızda normal yüzün yönelimi köşeler sarma sıraya göre belirlenir yüzler.

Üç.js'de, yüzün önüne bakarken köşelerinizi saat yönünün tersine belirtmeniz gerekir. Bu durumda, computeFaceNormals() tarafından hesaplanan yüz normal size işaret edecektir.

three.js r.75

+0

"three.js r.75" ne anlama geliyor? – Soren

+0

"r.75" mevcut [sürüm] (https://github.com/mrdoob/three.js/releases) 'dir. – WestLangley

+0

@WestLangley Yani onları bir yüze eklediğimde, değil mi? – leota