Affichage en relief de "12112022 00h07 Theophilus"
L'image 3D correspondant à l'affichage peut être téléchargée en cliquant sur l'icône "Appareil photo". Le chargement de l'image peut prendre une dizaine de secondes.
Vous pouvez déplacer le point de vue avec les boutons gauche et droit de la souris ainsi qu'avec la molette. Les effets 3D peuvent être approximatifs en particulier s'ils sont impactés par les aberrations de l'image initiale. Les données altimétriques qui ont servi de base de départ aux calculs des déplacements proviennent de : LROC
';
const win = window.open();
win.document.open();
win.document.write( page );
win.document.close();
}
// lancement après chargement texture
manager.onLoad = function() { // quand toutes les ressources sont chargées
console.log("manager.onLoad");
animate();
}
function init(){
renderer = new THREE.WebGLRenderer({antialias:true});
renderer.setSize(1300, 850);
document.getElementById('container').appendChild(renderer.domElement);
// camera
let coeffOrtho = 1.2;
cameraOrtho = new THREE.OrthographicCamera( -coeffOrtho*parseInt(document.getElementById('container').style.width)/2, coeffOrtho*parseInt(document.getElementById('container').style.width)/2,coeffOrtho*parseInt(document.getElementById('container').style.height)/2, -coeffOrtho*parseInt(document.getElementById('container').style.height)/2, 1, 1000000);
cameraPerspective = new THREE.PerspectiveCamera( 30, parseInt(document.getElementById('container').style.width)/parseInt(document.getElementById('container').style.height), 1, 100000);
cameraOrtho.position.y = cameraPerspective.position.y = -928.05;
cameraOrtho.position.z = cameraPerspective.position.z = 671.25;
// scene
scene = new THREE.Scene();
if( false ) // si true -> camera ortho
cameraActive = cameraOrtho;
else
cameraActive = cameraPerspective;
scene.add(cameraActive);
//const helper = new THREE.CameraHelper( camera );
//scene.add( helper );
/*controls = new OrbitControls( cameraActive, renderer.domElement );
controls.rotateSpeed = 0.4;
controls.zoomSpeed = 0.5;*/
controls = new TrackballControls( cameraActive, renderer.domElement );
controls.rotateSpeed = 2.0;
controls.zoomSpeed = 1.4;
controls.panSpeed = 0.4;
//composer
composer = new EFFET.EffectComposer( renderer );
composer.addPass( new PASS.RenderPass( scene, cameraActive ) );
sharpenEffect = new SHADER.ShaderPass( sharpenShader );
sharpenEffect.uniforms.width.value = 1300;
sharpenEffect.uniforms.height.value = 850;
composer.addPass( sharpenEffect );
/*passthrough = new SHADER.ShaderPass( GammaCorrectionShader);
passthrough.renderToScreen = true;
composer.addPass( passthrough );*/
/* img = new THREE.MeshStandardMaterial({
color:0xc8c8c8,
roughness : 0,
metalness:0,
//emissive:0x202020,
precision:"highp",
side : THREE.DoubleSide , // les 2 faces sont visibles
map: textureLoader.load("../img_caa/1668935724-2022-11-11-2307__DS_gimp.jpg"),
displacementMap: textureLoader.load( "../img3D/DEP-3D-ID196-12112022 00h07 Theophilus.jpg?1680171334" ),
displacementScale: 34,
displacementBias : -(34/1.3 )
});*/
img = new THREE.MeshPhongMaterial({
color:0xc8c8c8,
//wireframe:true,
side : THREE.DoubleSide , // les 2 faces sont visibles
map: textureLoader.load("../img_caa/1668935724-2022-11-11-2307__DS_gimp.jpg"),
displacementMap: textureLoader.load( "../img3D/DEP-3D-ID196-12112022 00h07 Theophilus.jpg?1680171334" ),
displacementScale: 34,
displacementBias : -(34/1.5 )
});
//img.map.minFilter = THREE.LinearFilter;
// plan
let plan = new THREE.Mesh(new THREE.PlaneGeometry(1074, 807,537,403),img);
scene.add(plan);
// lumiere ambiante
ambientLight = new THREE.AmbientLight(0xffffff,1.35);
scene.add(ambientLight);
gui = new GUI({ autoPlace: false, width:500 });
document.getElementById('up').appendChild(gui.domElement);
parameters =
{
disp: 34,
lumiere : 1.35,
sharpen : false
};
let dispS = gui.add( parameters, 'disp' ).name('facteur 3D').min(0).max(34*3).step(1).listen();
dispS.onChange(function(value) { //console.log( "value = "+ value);
img.displacementScale = value;
img.displacementBias = -value/1.5;
});
let lum = gui.add( parameters, 'lumiere' ).name('Lumière').min(1).max(3).step(0.05).listen();
lum.onChange(function(value) { //console.log( "value = "+ value);
ambientLight.intensity=value;
});
let sharpenGui = gui.add( parameters, 'sharpen' ).name('Renforcer la netteté').listen();
sharpenGui.onChange(function(value) {
if ( !value) {
composerActif = false;
}
else {
composerActif = true;
}
});
// snapshot
document.getElementById("snapshot").addEventListener( 'click', function(){SnapShot()}, false );
}// fin init
let delta = 0;
function animate(){
requestAnimationFrame( animate );
//delta = clock.getDelta();
//controls.update(delta);
controls.update();
if( !composerActif )
renderer.render(scene,cameraActive);
else
composer.render();
}