How to apply texture to THREE.ExtrudeGeometry?

var arcShape = new THREE.Shape();
arcShape.moveTo( 50, 10 );
arcShape.absarc( 10, 10, 40, 0, Math.PI*2, false );

var map1 = new THREE.ImageUtils.loadTexture( 'moon.jpg' );
var geometry = new THREE.ExtrudeGeometry( arcShape, extrudeSettings );
var new3D = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( { map: map1 } ) );
new3D.receiveShadow = true;
obj3Dmassive.add( new3D );

      

Texture (512x512): http://f3.s.qip.ru/cMfvUhNj.png

Result: http://f3.s.qip.ru/cMfvUhNh.png

How to fill a texture shape?

+2


source to share


2 answers


EDIT: The answer is outdated. See Extrusion multiple polygons with multiple holes and blended shape texturing .


You're lucky. What you are trying to do was done in the following example:



https://github.com/mrdoob/three.js/blob/master/examples/webgl_geometry_extrude_uvs2.html

You must specify your own UV generator function. This example shows how to do this.

Remember this is just an example. This may be wrong - or easy to implement in your case.

+1


source


Once you have a straight extrusion path, you can apply textures to extruded shapes without the need for a dedicated UV generator. eg

var extrudeSettings = {
                bevelEnabled: false, 
                steps: 1,
                amount: 20, //extrusion depth, don't define an extrudePath
                material:0, //material index of the front and back face
                extrudeMaterial : 1 //material index of the side faces            
            };

var geometry = shape.extrude(extrudeSettings);

var mesh = new THREE.Mesh(geometry, 
    new THREE.MeshFaceMaterial([materialFace, materialSide]));

      



This is handy for cookie-cutter forms.

+1


source







All Articles