3

押し出されたジオメトリの表面にテクスチャを使用したいと考えています。私はカスタム UVgenerators をしばらく研究しており、これらの関連する質問を見つけました: 1.) THREE.ExtrudeGeometry にテクスチャを適用する方法は? 2.)読み込まれたテクスチャがぼやけて見える、または単色のように見える。食感をカリッとシャープにする方法

ただし、ジオメトリ ポイントを 1000 で割る方法が提案されてmesh.scale.set(1000,1000,1)いますが、ジオメトリが正しい場所にないため、機能しません。UV マッピングを指定したいと思います。1 つの答えは、ソース コードに基づいてカスタム uvgenerator を実装すると言っていますが、私は立ち往生しており、何をすべきかわかりません。

これは私のジオメトリ作成です。マテリアルは 512x512px です。テクスチャを上部にマップするにはどうすればよいですか?:

pointList=[[0,0,0],
        [0,1000,0],
        [750,1000,0],
        [750,750,0],
        [1000,750,0],
        [1000,0,0]]

for (i=0;i < pointList.length; i++) {

        point = pointList[i];

        x = point[0];
        y = point[1];

        myPoints.push( new THREE.Vector2 (x,y) );
    }

    myShape = new THREE.Shape( myPoints );
    extrusionSettings = {
        amount:height
    };

    myGeometry = new THREE.ExtrudeGeometry( myShape, extrusionSettings );
    resultshape = new THREE.Mesh( myGeometry, material );
4

1 に答える 1

4

のプロパティの 1 つであるExtrudeGeometry独自の を指定することにより、 のカスタム UV を指定できます。UVGeneratorextrusionSettings

カスタム UV ジェネレータを指定するには、 にある をテンプレートとして使用できTHREE.ExtrudeGeometry.WorldUVGeneratorますsrc/extras/geometries/ExtrudeGeometry.js

ただし、あなたのために働くかもしれないより簡単な解決策があります。

カスタム UV ジェネレーターの代わりに、テクスチャのoffsetおよびプロパティを利用できます。repeat次のパターンを使用します。

texture.wrapS = texture.wrapT = THREE.RepeatWrapping;
texture.repeat.set( 1 / 500, 1 / 500 );
texture.offset.set( 0.1, 0.5 );

three.js r.68

于 2014-08-26T16:46:05.240 に答える