Подтвердить что ты не робот

Three.js - изменение материала во время выполнения

У меня есть некоторые .js файлы, экспортированные из Blender и загружающие их с помощью THREE.JSONLoader();

мой обратный вызов:

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

моя загрузка:

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

мой метод создания:

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++;
}

Теперь я хочу изменить свой материал во время выполнения, используя мою клавиатуру (меняет цвет и непрозрачность).

Как я могу это сделать?

4b9b3361

Ответ 1

Когда вы создаете новый материал для каждой сетки, я предполагаю, что вы хотите изменить цвет только одного меша, а не всего в массиве inArr, и вам, вероятно, нужен какой-то выбор для этого. Но изменение цвета материала в одиночку довольно просто:

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 - это сетка, которую вы хотите изменить. Коды клавиш можно найти здесь: http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes