2016-10-24 6 views
0

ピクセルレベルで比較したいthree.jsに2つのテクスチャがあります。しかし、私はそれをどうやって行うのか分かりません。 Three.jsのドキュメントは私の質問に答えるものではありません。実際、クラスのいくつかは文書化されていません。Three.jsのピクセルを比較する方法

簡潔に言えば、2つの異なる画像が(私の遺伝的アルゴリズムで適合度を計算するために)どのように計算したいのですか?

編集:私はより多くの情報を提供する必要があると言われています。さあ。

一つのテクスチャ「loadTexture」を使用してロードされたイメージからである:

:私は2番目のシーンにいくつかのポリゴンを追加して、後で私はテクスチャにそのシーンをレンダリングする上で他のものを得る

 referenceTexture = THREE.ImageUtils.loadTexture('images/tia1.jpg'); //256px*256px image 

var bufferScene = new THREE.Scene(); 
var bufferTexture = new THREE.WebGLRenderTarget(window.innerWidth, window.innerHeight, { minFilter: THREE.LinearFilter, magFilter: THREE.NearestFilter,format: THREE.RGBAFormat}); 
bufferScene.add(triangle) //This is a bucle in the real code. 
renderer.setSize(256,256); 
requestAnimationFrame(render); 
renderer.render(bufferScene, camera, bufferTexture); 

ありがとうございます。

+1

あなたの質問ができるように少し一般的すぎるを使用してレンダーターゲットその外のピクセルを読みます正解。それはあなたがしていることをしようとしていると最小限のサンプルコードを持っている場合に役立ちます。コードまたは特定のAPIインターフェイス名がなければ、あなたが求めているThree.js APIの部分を推測することは困難です。 –

答えて

2

各テクスチャをレンダーターゲットにアタッチし、次にrenderer.readRenderTargetPixelsを呼び出して、各テクスチャのピクセルを取得して比較することができます。あなたが別の両方のテクスチャをレンダリングすることができ

OR

は2つのテクスチャをdiffをシェーダを使用してターゲットをレンダリングしてからrenderer.readRenderTargetPixels

+0

ありがとうございます。シェーダは複雑なので、最初のオプションを試してみるつもりです。どちらの方法も同等に良いのですか? – WristMan

1

テクスチャと同じサイズのキャンバスにテクスチャを描画し、フレームバッファのピクセルカラーをgl.readPixelsで読み取ることができます。その後、CPUの値を比較することができます。

また、GPUでピクセルカラーの減算を行い、差異をレンダリングしてからreadPixelsを実行することもできます。

+0

私は両方のテクスチャを画面に表示する必要があるので、キャンバスを描くことはできません。 – WristMan

関連する問題