У меня есть два цилиндра, которые пересекаются на одном конце. Я могу изменить радиус пересечения отдельно, но они все равно встречаются на одном конце, как показано ниже. Однако я хочу, чтобы пересечение между этими двумя точками было плавным или, другими словами, чтобы их нормали на пересечении были общими, как указано здесь: http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-9-vbo-indexing/. Я установил обновления нормалей TRUE, а также изменил все компоненты y нормалей на ноль в пересечении. Он по-прежнему не показывает плавного пересечения. Эти два цилиндра созданы с помощью BufferGeometry.
поэтому более важная часть моего кода: 1- поскольку геометрия BufferGeometry, я сначала использую две команды ниже для обеих геометрий, чтобы создать нормали:
comp.mesh.geometry.computeFaceNormals();
comp.mesh.geometry.computeVertexNormals();
2- затем, поскольку обе геометрии имеют одинаковое количество вершин, я устанавливаю компонент y всех вершин равным 0:
for (i=0;i<comp.mesh.geometry.attributes.position.array.length;i++){
comp.mesh.geometry.attributes.normal.array[i*3 + 1] = 0;
comp1.mesh.geometry.attributes.normal.array[i*3 + 1] = 0;
}
Когда я позволяю программе показывать нормали, их компонент y нормалей равен 0, но геометрия еще не гладкая.