実際、マウスクリックでオブジェクトのテクスチャを変更するシステムに取り組んでいます。
私のオブジェクトはこれで構築されています:
var cubeGeometry = new THREE.CubeGeometry( 25, 200, 50 );
wall = new THREE.Mesh( cubeGeometry, holzMaterial );
wall.position.set(-150.5,0,0);
wall.castShadow = true;
wall.receiveShadow = true;
wall.name = "Mauer";
collidableMeshListwand.push(wall);
scene.add(wall);
テクスチャは次のようにコード化されます。
var holzTexture = new THREE.ImageUtils.loadTexture( 'textures/holz.jpg' );
holzTexture.wrapS = holzTexture.wrapT = THREE.RepeatWrapping;
holzTexture.repeat.set( 1, 1 );
var holzMaterial = new THREE.MeshLambertMaterial( { map: holzTexture } );
var himmelTexture = new THREE.ImageUtils.loadTexture( 'textures/himmel.jpg' );
himmelTexture.wrapS = himmelTexture.wrapT = THREE.RepeatWrapping;
himmelTexture.repeat.set( 1, 1 );
var himmelMaterial = new THREE.MeshLambertMaterial( { map: himmelTexture } );
最後に、マウスの下の要素を認識し、クリックすると変更する関数を作成しました。たとえば、影の変更は次のように機能します。
if (intersects[ 0 ].object.castShadow == true) {
intersects[ 0 ].object.castShadow = false;
}
else {
intersects[ 0 ].object.castShadow = true;
}
使用中にテクスチャを変更したい:
intersects[ 0 ].object.mesh.material.uniforms.texture.value(himmelMaterial);
intersects[ 0 ].object.mesh.material.uniforms.texture.needsUpdate = true;
しかし、これはうまくいきません。
誰かが私を助けることができれば素晴らしいことです。:)