私はthree.jsを学んで、イメージの変換を試しています。私は本当に私はこれに類似した画像を変換することができるようにたどるどのような手順WebGLとthree.jsでイメージのワーピングエフェクトを作成
here.を示すような効果
?
は、これまでのところ私が持っている:
フラット2D形状としての私の画像をレンダリングする// instantiate a loader
var loader = new THREE.TextureLoader();
// load a resource
loader.load(
// resource URL
'clouds.jpg',
// Function when resource is loaded
function (texture) {
init(new THREE.MeshBasicMaterial({
map: texture
}));
},
// Function called when download progresses
function (xhr) {
console.log((xhr.loaded/xhr.total * 100) + '% loaded');
},
// Function called when download errors
function (xhr) {
console.log('An error happened');
}
);
var init = function(material) {
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
var rectLength = window.innerHeight;
var rectWidth = window.innerWidth;
var rectShape = new THREE.Shape();
rectShape.moveTo(0,0);
rectShape.lineTo(0, rectWidth);
rectShape.lineTo(rectLength, rectWidth);
rectShape.lineTo(rectLength, 0);
rectShape.lineTo(0, 0);
var geometry = new THREE.ShapeGeometry(rectShape);
var cube = new THREE.Mesh(geometry, material);
scene.add(cube);
camera.position.z = 1;
var render = function() {
requestAnimationFrame(render);
renderer.render(scene, camera);
};
render();
}
が、私は、私はその後、画像にエフェクトを適用することができますどのようにこだわっています。これを推測することはrender
の中で起こる必要がありますが、どうすればよいかわかりません。
普通のWebGLでこれを行う方がよいですか?
ヒント/アドバイス/チュートリアルは大変ありがとうございます。
あなたは([THREE.MeshBasicMaterial]使用しているのです、このような小さな効果
のためにこのような大規模なライブラリを使用する理由はありませんhttp://threejs.org/docs/index.html?q=mater#Reference/Materials/MeshBasicMaterial)。 「THREE.ShaderMaterial」(http://threejs.org/docs/index.html?q=mater#Reference/Materials/ShaderMaterial)を見てください。このような折り返し効果は、シェーダのuv座標を変更することで実現できます(現在のマウスの座標/時間を均一にすることができます) – mlkn