| Server IP : 162.214.74.102 / Your IP : 216.73.216.139 Web Server : Apache System : Linux dedi-4363141.lrsys.com.br 3.10.0-1160.119.1.el7.tuxcare.els25.x86_64 #1 SMP Wed Oct 1 17:37:27 UTC 2025 x86_64 User : lrsys ( 1015) PHP Version : 5.6.40 Disable Function : exec,passthru,shell_exec,system MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/lrsys/www/lrsys_apps/marisol/AR/ALT/ex/ |
Upload File : |
<!DOCTYPE html>
<head>
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<title>Hello, world!</title>
<script src='js/keyboard.js'></script>
<!-- include three.js library -->
<script src='js/three.js'></script>
</head>
<body style='margin : 0px; overflow: hidden; font-family: Monospace;'>
<!--
Example created by Lee Stemkoski: https://github.com/stemkoski
-->
<script>
var scene, camera, renderer, clock, deltaTime, totalTime, keyboard;
var mover;
initialize();
animate();
function initialize()
{
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 0.1, 1000 );
mover = new THREE.Group();
mover.add( camera );
mover.position.set(0, 1, 3);
scene.add( mover );
// camera.position.set(0, 2, 4);
// camera.lookAt( scene.position );
// scene.add( camera );
let ambientLight = new THREE.AmbientLight( 0xcccccc, 1.00 );
scene.add( ambientLight );
// let pointLight = new THREE.PointLight();
// camera.add( pointLight );
renderer = new THREE.WebGLRenderer({
antialias : true,
alpha: false
});
renderer.setClearColor(new THREE.Color('lightgrey'), 0)
renderer.setSize( window.innerWidth, window.innerHeight );
renderer.domElement.style.position = 'absolute'
renderer.domElement.style.top = '0px'
renderer.domElement.style.left = '0px'
document.body.appendChild( renderer.domElement );
window.addEventListener( 'resize', onWindowResize, false );
clock = new THREE.Clock();
deltaTime = 0;
totalTime = 0;
keyboard = new Keyboard();
let loader = new THREE.TextureLoader();
// floor
let floorGeometry = new THREE.PlaneGeometry(10,10);
let floorMaterial = new THREE.MeshBasicMaterial({
map: loader.load( 'images/color-grid.png' )
});
let floorMesh = new THREE.Mesh( floorGeometry, floorMaterial );
floorMesh.rotation.x = -Math.PI/2;
scene.add( floorMesh );
let halfSphereGroup = new THREE.Group();
halfSphereGroup.position.y = 1;
scene.add(halfSphereGroup);
let sphereRadius = 1;
let holeRadius = 0.5;
let borderThickness = 0.05;
let halfSphereGeometry = new THREE.SphereGeometry(sphereRadius, 32, 32, Math.PI, Math.PI); // startAngle, sweepAngle
let cloakTexture = loader.load("images/color-grid.png");
cloakMaterial = new THREE.MeshBasicMaterial({ map: cloakTexture, side: THREE.FrontSide, colorWrite: false }); // change colorWrite: true to see the cloak
let sceneTexture = loader.load("images/scene-sphere-outside.jpg");
sceneTexture.offset.x = 0.5;
sceneTexture.repeat.set(0.5, 1);
let innerSphere = new THREE.Mesh( halfSphereGeometry, new THREE.MeshBasicMaterial({ map: sceneTexture, side: THREE.BackSide }) );
let outerSphere = new THREE.Mesh( halfSphereGeometry, cloakMaterial );
let holeMesh = new THREE.Mesh( new THREE.RingGeometry(holeRadius, sphereRadius * 1.01, 32), cloakMaterial );
let borderMesh = new THREE.Mesh( new THREE.RingGeometry(holeRadius, holeRadius + borderThickness , 32), new THREE.MeshBasicMaterial({color: 0xffffff, side: THREE.DoubleSide}) );
borderMesh.position.z = 0.001; // avoid depth-fighting artifacts
halfSphereGroup.add( innerSphere );
halfSphereGroup.add( outerSphere );
halfSphereGroup.add( holeMesh );
halfSphereGroup.add( borderMesh );
}
function update()
{
keyboard.update();
let translateSpeed = 1; // units per second
let distance = translateSpeed * deltaTime;
let rotateSpeed = Math.PI/6; // radians per second
let angle = rotateSpeed * deltaTime;
if (keyboard.isKeyPressed("W"))
mover.translateZ( -distance );
if (keyboard.isKeyPressed("S"))
mover.translateZ( distance );
if (keyboard.isKeyPressed("A"))
mover.translateX( -distance );
if (keyboard.isKeyPressed("D"))
mover.translateX( distance );
if (keyboard.isKeyPressed("R"))
mover.translateY( distance );
if (keyboard.isKeyPressed("F"))
mover.translateY( -distance );
if (keyboard.isKeyPressed("Q"))
mover.rotateY( angle );
if (keyboard.isKeyPressed("E"))
mover.rotateY( -angle );
if (keyboard.isKeyPressed("T"))
mover.children[0].rotateX( angle );
if (keyboard.isKeyPressed("G"))
mover.children[0].rotateX( -angle );
//mesh.rotation.y += 0.01;
}
function render()
{
renderer.render( scene, camera );
}
function animate()
{
requestAnimationFrame(animate);
deltaTime = clock.getDelta();
totalTime += deltaTime;
update();
render();
}
function onWindowResize()
{
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize( window.innerWidth, window.innerHeight );
}
</script>
</body>
</html>