Ich versuche, (durch Klicken auf separaten Würfel) Onclick Texturen/Farben eines Objekts zu ändernnicht in der Lage ändern Texturen auf Klick threejs
Ich bin in der Lage nur einmal die Farbe eines Objekts zu ändern (obwohl ich Verwenden Sie eine For-Schleife und vorausgesetzt, dass keine vorherigen Texturen oder Farben auf dem Objekt vorhanden sind. Allerdings kann ich die Farbe nicht ändern, wenn das Objekt bereits eine vorhandene Farbe hat. Muss ich einige NeedsUpdate hinzufügen? Ich habe aber kein Glück gehabt .. bitte schau dir meine onclick Funktion an.
EventsControls.attachEvent('onclick', function() {
var colors = ['White', 'blue', 'gold'];
for (var i = 0; i < colors.length; i++) {
object.traverse(function(child) {
if (child instanceof THREE.Mesh) {
if (child.material.name == "Sofa_Leather") {
child.material = colors[i]; // array elements are already defined
child.material.needsUpdate = true;
child.material.buffersNeedUpdate = true;
child.material.uvsNeedUpdate = true;
child.receiveShadow = true;
}
}
})
}
});
Bitte lassen Sie mich wissen, wo es falsch geht. Vielen Dank.
// Erneut versucht, könnte aber nur eine Farbe mit dem untenstehenden Code ändern, ich denke, dass ich das needsUpdate falsch verwende.
var index=0;
var colors=[0xfffeef,0xffff00,0x000fff];
object.traverse(function(child) { if (child instanceof THREE.Mesh) {
if (child.material.name == "Sofa_Leather") {
if(index == colors.length) index = 0;
child.material.color.setHex(colors[index++]);
child.material.needsUpdate = true;
child.receiveShadow = true;
} }
})
Material ist nicht gleich einer Farbe? Haben Sie 'material.color' versucht, aber es sollte im richtigen Farbformat wie' 0xff0000' sein. –
var Weiß = new THREE.MeshPhongMaterial ({ \t Farbe: 0xffffef, \t kombinieren: THREE.MultiplyOperation, \t Reflektivität: 0,4 }) ich habe Farben global wie folgt definiert, habe ich versucht, mit material.color = Farben [ i], aber Objekt verschwindet, wenn onclicked –
Sie scheinen Farbe zu einer Zeichenkette zu setzen, versuchen Sie, die Methode zu verwenden: .setHex (0xff0000); Siehe dieses Beispiel - http://jsfiddle.net/Lfr5my2s/11/ – Neil