У меня есть объект Three.Geometry, состоящий из множества вершин и граней (сетка). Я хочу динамически изменять цвет или материал выбранного лица.Изменить материал или цвет в поверхности сетки
geometry.colorsNeedUpdate = true;
geometry.faces[1].color.setHex(0xcccccc); //this doesn't work
Выше кода делает новую непрозрачность цвета странной. Он ведет себя так, как будто он не заменяет цвет, но смешивает новый цвет со старым. Поэтому переписывание более темного цвета с лигером невозможно. Как это исправить? Мои материалы не применяются:
mat = new THREE.MeshBasicMaterial({color:"white",shading: THREE.FlatShading,side: THREE.DoubleSide,vertexColors: THREE.FaceColors, needsUpdate : true});
Другой подход я хотел сделать, это также с изменением ссылки на другой материал:
geometry.faces[0].materialIndex = 1; // works only when disabled OpenGL in browser
Уже set material.needsUpdate flag to true
и проверил https://github.com/mrdoob/three.js/wiki/Updates
до сих пор без изменений ,
Можете ли вы предоставить (простой) живой пример, чтобы продемонстрировать необычный эффект, который вы видите? – WestLangley
OFC. Вот код JsFiddle - http://jsfiddle.net/VsWb9/1163/ – user2550696
И вот версия zip. Это лучший код, чем JsFiddle. Мне пришлось переписать некоторые вещи, чтобы заставить его работать на скрипке JS. http://www.sendspace.com/file/ap1l4n – user2550696