For some reason, I’m not able to load my code on codepen.
Here is my code
var camera, scene, renderer, control, orbit, cube;
var back = false;
var meshes = new Array();
var meshl = new Array();
var meshr = new Array();
init();
render();
function init() {
console.log("check");
container = document.createElement('div');
document.body.appendChild(container);
renderer = new THREE.WebGLRenderer({
antialias: true
});
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(0xf0f0f0);
container.appendChild(renderer.domElement);
camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 3000);
camera.position.set(100, 100, 500);
camera.lookAt(0, 20, 0);
scene = new THREE.Scene();
scene.add(new THREE.GridHelper(2000, 10));
var light = new THREE.DirectionalLight(0xffffff, 2);
light.position.set(1, 1, 1);
scene.add(light);
orbit = new THREE.OrbitControls(camera, renderer.domElement);
orbit.update();
orbit.addEventListener('change', render);
control = new THREE.TransformControls(camera, renderer.domElement);
control.addEventListener('change', render);
control.addEventListener('dragging-changed', function(event) {
orbit.enabled = !event.value;
});
// instantiate a texture loader
var loader = new THREE.TextureLoader();
loader.crossOrigin = '';
// The textures to use
var arr = [
'images/slider0.jpg',
'images/slider1.jpg',
'images/slider2.jpg'
];
var textureToShow = 0;
// var texture = loadTexture('https://s3-us-west-2.amazonaws.com/s.cdpn.io/259155/MarbleSurface.jpg');
var material = new THREE.MeshBasicMaterial();
var geometry = new THREE.PlaneGeometry(200, 200, 200);
cube = new THREE.Mesh(geometry, material);
loader.load(arr[textureToShow], function(tex) {
material.map = tex;
textureToShow++;
scene.add(cube);
render();
});
var texture1 = new THREE.TextureLoader().load('images/right-arrow.png', render);
texture1.anisotropy = renderer.capabilities.getMaxAnisotropy();
var material1 = new THREE.MeshLambertMaterial({
map: texture1,
color: 0x000000,
});
var mesh11 = new THREE.Mesh(new THREE.PlaneGeometry(20, 40, 0), material1);
mesh11.position.x = 90;
cube.add(mesh11);
var mesh12 = new THREE.Mesh(new THREE.BoxGeometry(20, 40, 0), new THREE.MeshBasicMaterial({
color: 0xaa00ff
}));
mesh12.position.x = -90;
cube.add(mesh12);
meshr.push(mesh11);
meshl.push(mesh12);
var domEvents = new THREEx.DomEvents(camera, renderer.domElement);
domEvents.addEventListener(mesh11, 'click', function(event) {
loader.load(arr[textureToShow],
function(tex) {
console.log("right:" + arr[textureToShow]);
textureToShow++;
if (textureToShow > arr.length - 1) {
textureToShow = 0;
}
material.map = tex;
console.log("after: " + textureToShow);
render();
});
}, false)
domEvents.addEventListener(mesh12, 'click', function(event) {
loader.load(arr[textureToShow], function(tex) {
console.log("left:" + arr[textureToShow]);
textureToShow--;
if (textureToShow == -1) {
textureToShow = 2;
}
tex.dispose();
material.map = tex;
console.log("after: " + textureToShow);
render();
});
}, false)
control.attach(cube);
scene.add(control);
window.addEventListener('resize', onWindowResize, false);
}
function onWindowResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
render();
}
function render() {
requestAnimationFrame(render);
renderer.render(scene, camera);
}
I will try the loading manager and also by adding a new plane.
Also, could you please check my code and also back and forward buttons logic. When a back button is clicked and forward is clicked they don’t synchronise.