9

テクスチャが繰り返される長い廊下を作成しようとしています。繰り返しテクスチャを追加し、オブジェクト (この場合は平面) を直角に回転させて廊下の壁と天井を作成するにはどうすればよいですか?

var texture, material, plane;

texture = THREE.ImageUtils.loadTexture( "../img/texture.jpg" );
texture.wrapT = THREE.RepeatWrapping;  // This doesn't seem to work;
material = new THREE.MeshLambertMaterial({ map : texture });
plane = new THREE.Mesh(new THREE.PlaneGeometry(400, 3500), material);
plane.doubleSided = true;
plane.position.x = 100;
plane.rotation.z = 2;  // Not sure what this number represents.
scene.add(plane);
4

4 に答える 4

15

繰り返しテクスチャの例については、次の例のソースを確認してください。

http://stemkoski.github.com/Three.js/Texture-Repeat.html

コードに次の変更を加えることをお勧めします。

var texture, material, plane;

texture = THREE.ImageUtils.loadTexture( "../img/texture.jpg" );

// assuming you want the texture to repeat in both directions:
texture.wrapS = THREE.RepeatWrapping; 
texture.wrapT = THREE.RepeatWrapping;

// how many times to repeat in each direction; the default is (1,1),
//   which is probably why your example wasn't working
texture.repeat.set( 4, 4 ); 

material = new THREE.MeshLambertMaterial({ map : texture });
plane = new THREE.Mesh(new THREE.PlaneGeometry(400, 3500), material);
plane.material.side = THREE.DoubleSide;
plane.position.x = 100;

// rotation.z is rotation around the z-axis, measured in radians (rather than degrees)
// Math.PI = 180 degrees, Math.PI / 2 = 90 degrees, etc.
plane.rotation.z = Math.PI / 2;

scene.add(plane);
于 2012-07-04T12:45:18.147 に答える
5

すべてのジオメトリを複製せずに解決策を探していました。

では、紳士淑女の皆様…

var materials = [new THREE.MeshBasicMaterial({map: texture, side: THREE.FrontSide}),
                 new THREE.MeshBasicMaterial({map: textureBack, side: THREE.BackSide})];

var geometry = new THREE.PlaneGeometry(width, height);

for (var i = 0, len = geometry.faces.length; i < len; i++) {
    var face = geometry.faces[i].clone();
    face.materialIndex = 1;
    geometry.faces.push(face);
    geometry.faceVertexUvs[0].push(geometry.faceVertexUvs[0][i].slice(0));
}

scene.add(new THREE.Mesh(geometry, new THREE.MeshFaceMaterial(materials)));

Two Faced Plane をブームすると、ループはより多くの面を持つジオメトリでも機能し、各面を複製して BackSide テクスチャを適用します。

楽しみ!

于 2013-07-11T20:18:20.730 に答える
3

私は同じものを探していましたが、間違ったオブジェクトでプロパティ THREE.DoubleSide を使用しました。メッシュ自体ではなく、マテリアルで使用する必要があります。

material.side = THREE.DoubleSide;

...これ以上何もない !

于 2014-01-07T16:04:52.650 に答える