Javascript 在新创建的面上计算面法线
我在场景中有一个简单的CricleGeometry,我复制它的顶点并创建新的面来模拟拉伸。 创建新面后,我运行“computeFaceNormals()”,但它们的方向是交替的。我怎么能让所有的脸都朝外 以下是一个屏幕截图: 以下是代码的主要部分:Javascript 在新创建的面上计算面法线,javascript,three.js,normals,face,Javascript,Three.js,Normals,Face,我在场景中有一个简单的CricleGeometry,我复制它的顶点并创建新的面来模拟拉伸。 创建新面后,我运行“computeFaceNormals()”,但它们的方向是交替的。我怎么能让所有的脸都朝外 以下是一个屏幕截图: 以下是代码的主要部分: //geometry geometry = new THREE.CircleGeometry(100, 12); geometry.mergeVertices(); material = new THREE.MeshPhongMaterial(
//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);
//几何体
几何=新的三。圆几何(100,12);
geometry.mergeVertices();
材质=新的3.MeshPhongMaterial({color:0xffa800});
///////////////////////////////////////////////////////////////
//创建新的面
///////////////////////////////////////////////////////////////
var sideGeo=new THREE.Geometry();
//重复顶点
对于(var v=0;v
调用Geometry.computeFaceNormals()
时,面法线的方向由面顶点的缠绕顺序确定
在three.js中,当查看面的正面时,需要按逆时针顺序指定顶点。在这种情况下,由computeFaceNormals()
计算的面法线将指向您
three.js r.75什么是“three.js r.75”?WestLangley我把它们添加到脸上时,你是什么意思?