2016-08-26 11 views
0

私はミニクラフトモデルを編集するためのアプリケーションを開発しています。私はThreeJSを使って3Dプレーヤーモデルに描画された描画テクスチャを表示していますが、テクスチャサイズの変更に関する問題があります。テクスチャサイズを変更したときのUVマッピングの問題

最初にthisのようにモデルにマッピングされたテクスチャがあります。テクスチャの高さを64に変更すると、thisのようになります。

は、私はこのようなテクスチャを作成:

this.skin.render(canvas.getContext("2d"), this.skin.w, this.skin.h); 

this.limbs.forEach(function (limb) { 
    limb.mapUV(self.skin.w, self.skin.h); 
}); 

this.material.map.needsUpdate = true; 
this.material.needsUpdate = true; 

this.materialが両面である:キャンバスのコンテンツが変更されたときcanvasがHTMLCanvasElementあり、そして

/* Texture */ 
var texture = new THREE.Texture(canvas); 

texture.minFilter = texture.magFilter = THREE.NearestFilter; 

が、私はそのような質感をリフレッシュ上にテクスチャが付いた透明な素材。 UVは正しいと思われる。

以前のアプリケーションでメッシュ全体を再作成して同様の問題を修正しましたが、この場合は高価になるようです。

どうすれば修正できますか?テクスチャがキャッシュされているかのように思えますが、もしそうなら、どのようにキャッシュを解除できますか?

ありがとうございました!

P .:写真には申し訳ありません。私の評判のせいで、まだ画像を投稿できません。

答えて

0

私はコードを微調整して望みの結果を得ていましたが、結局は私の問題を解決することができました。問題は、UV配列要素geometry.faceVertexUvsがThreeJSのコアのどこかにキャッシュされていることでした。

UVマッピングの私の前のコードが geometry.faceVertexUvsに直接 Vector2の配列を割り当てた

:それが動作初めて

geo.faceVertexUvs[0][side] = [faces[1], faces[2], faces[0]]; 

、それがキャッシュされます次の回、私がしたUVの汚れ(geo.uvsNeedUpdate = true)をマーキングしていていても私はUV座標プロペをマッピングするために、この(どのウィッシュ

geo.faceVertexUvs[0][side][0].copy(faces[1]); 
geo.faceVertexUvs[0][side][1].copy(faces[2]); 
geo.faceVertexUvs[0][side][2].copy(faces[0]); 

:ので、代わりにアレイを割り当てる、Iはgeo.faceVertexUvs[0][side]における各三角形の頂点へVector2facesからアレイをコピーで終わりますrly)はThreeJSの文書で説明されました。

関連する問題