web-dev-qa-db-fra.com

Three.js - Changer de matériel lors de l'exécution

J'ai des fichiers .js exportés depuis Blender et je les charge avec THREE.JSONLoader();

mon rappel:

var callback   = function( geometry ) { createMesh(geometry);

mon chargement:

loader.load( "Models/sculp.js", callback );

ma méthode de création:

function createMesh(geometry){

    inArr[id] = new THREE.Mesh( geometry, new THREE.MeshLambertMaterial( { color: 0xbbbbbb} ) );
    inArr[id].scale.set( 100, 100, 100 );
    scene.add( inArr[id] );
    id++;
}

Maintenant, je veux changer mon matériel lors de l'exécution en utilisant mon clavier (change la couleur et l'opacité).

Comment puis je faire ça?

22
Phipps

Lorsque vous créez un nouveau matériau pour chaque maillage, je suppose que vous ne voulez changer que la couleur d'un maillage et pas du tout dans le tableau inArr, et vous avez probablement besoin d'une sorte de sélection pour cela. Mais changer la couleur du matériau seul est assez facile:

var onKeyDown = function(event) {
  if (event.keyCode == 67) { // when 'c' is pressed
    object.material.color.setHex(0xff0000); // there is also setHSV and setRGB
  }
};
document.addEventListener('keydown', onKeyDown, false);

object est le maillage que vous souhaitez modifier. Les codes clés peuvent être trouvés ici: http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

40
kaipr