Неправильно отображаются лица модели Collada в three.js
После импорта модели collada в three.js некоторые грани модели видны только изнутри модели, а не снаружи.
Как я могу исправить проблему с этими лицами?
Возможно ли, чтобы лица модели были видны с обеих сторон?
2 ответа
Причина, по которой он не работает должным образом, заключается в том, что в вашем файле установлен флаг double_sided:
<effect id="material_3_4_0-effect" name="material_3_4_0-effect">
<profile_COMMON>
...
<extra>
<technique profile="GOOGLEEARTH">
<double_sided>1</double_sided>
</technique>
</extra>
</profile_COMMON>
</effect>
ColladaLoader three.js не ищет этот флаг и устанавливает doubleSided на материал так, как должен. Я подал ошибку для проблемы.
Чтобы исправить неправильную ориентацию граней, загрузите модель в программу трехмерного моделирования, такую как Blender, и отразите нормали граней, которые отображаются неправильно.
Сетки Three.js имеют свойство двусторонней настройки, которое вы можете установить, что обычно позволяет отображать модель с гранями, видимыми с обеих сторон.
Вот краткий пример того, как загрузить меш коллады и включить двусторонний рендеринг.
var loader = new THREE.ColladaLoader();
loader.load('path/to/mesh.dae', loadModel);
function loadModel(geom) {
var mesh = new THREE.Mesh(geom, new THREE.MeshBasicMaterial());
mesh.doublesided = true;
scene.add(mesh);
}
И живой пример: http://jsfiddle.net/r7Yq2/