Sie können das Material eines Objekts zur Laufzeit ändern. Sie müssen lediglich ein Material erstellen, indem Sie die Optionen angeben und es dem Objekt zuweisen. Zum Beispiel erzeugt der folgende Code ein 'MeshStandardMaterial' mit weißer Farbe und anderen properties wie angegeben. Es wird auch eine Textur haben, die Sie geladen haben. Betrachten Sie 'box' als das Objekt, an dem das Material befestigt werden soll.
var material = new THREE.MeshStandardMaterial({ color: 0xffffff, side: THREE.FrontSide, opacity: 0.3, transparent: true, vertexColors: THREE.FaceColors, map : <THE TEXTURE YOU HAVE LOADED> });
Als besserer Ansatz, können Sie die Textur mit TextureLoader, laden und ein Material erstellen, wenn die Textur geladen wird. Der folgende Code erklärt das.
var loader = new THREE.TextureLoader();
function onLoad(texture) {
var material = new THREE.MeshPhongMaterial({ map : texture, color : 0xff0000 });
box.material = material;
}
function onProgress(xhr) {
console.log((xhr.loaded/xhr.total * 100) + '% loaded');
}
function onError(xhr) {
console.error('An error happened');
}
loader.load('assets/img/crate.png', onLoad, onProgress, onError);
Sie können auch die Farbe und Textur des ohne Materials ändern ein neues Material zu schaffen,
nur die Farbe zu ändern,
box.material.color.setHex(0xff0000);// will set red color for the box
oder die Textur zu ändern,
var loader = new THREE.TextureLoader();
function onLoad(texture) {
box.material.map = texture;
}
function onProgress(xhr) {
console.log((xhr.loaded/xhr.total * 100) + '% loaded');
}
function onError(xhr) {
console.error('An error happened');
}
loader.load('assets/img/Dice-Blue-5.png', onLoad, onProgress, onError);
_ "aber es hat nicht funktioniert" _ erklärt nichts. Sie müssen Ihre Frage mit mehr Klarstellung und Code überarbeiten. – prisoner849