Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- My WebGL App
- */
- let mainContainer = null;
- let fpsContainer
- let stats = null;
- let camera = null;
- let renderer = null;
- let scene = null;
- // Global variables
- let plane, wheel_f_left, wheel_f_right, wheel_b_left, wheel_b_right, wheel_frame_f_right, wheel_frame_f_left, wheel_frame_b_right, wheel_frame_b_left, main_frame, second_frame, light_f_right, light_f_left, light_b_right, light_b_left, front_window, back_window, door_right, door_left, door_window_right, door_window_left, passenger_window_right, passenger_window_left, handle_left, handle_right, road, sand, water, sun = null;
- let camControls = null;
- let gui = null;
- let controlBoxParams = {
- rimSize: 1,
- carSpeed: 0.00
- };
- let animationParams = {
- tirePos: 0,
- bounceStep: 0,
- rotateStep: 0,
- cameraStep: 0
- };
- let frame_animationParams = {
- carPos: 0,
- };
- function init(){
- if ( THREE.WEBGL.isWebGLAvailable() === false ) container.appendChild( WEBGL.getWebGLErrorMessage() );
- fpsContainer = document.querySelector( '#fps' );
- mainContainer = document.querySelector( '#webgl-secne' );
- scene = new THREE.Scene();
- scene.background = new THREE.Color( 0xEEEEEE );
- //fonas su paveiksliuku
- let loader = new THREE.CubeTextureLoader();
- loader.setPath( 'img/fonas/' );
- const background = loader.load( [
- 'Daylight Box_Right.bmp', 'Daylight Box_Left.bmp',
- 'Daylight Box_Top.bmp', 'Daylight Box_Bottom.bmp',
- 'Daylight Box_Front.bmp', 'Daylight Box_Back.bmp'
- ]);
- background.format = THREE.RGBFormat;
- scene.background = background;
- createStats();
- createCamera();
- createControls();
- createLights();
- createMeshes();
- createRenderer();
- renderer.setAnimationLoop( () => {
- update();
- render();
- } );
- }
- // Animations
- function update(){
- if ( wheel_front_right !== 'undefined') {
- wheel_front_right.rotation.z -= controlBoxParams.carSpeed;
- wheel_front_right.position.x += controlBoxParams.carSpeed;
- }
- if (typeof wheel_front_left !== 'undefined') {
- wheel_front_left.rotation.z -= controlBoxParams.carSpeed;
- wheel_front_left.position.x += controlBoxParams.carSpeed;
- }
- if (typeof wheel_back_right !== 'undefined') {
- wheel_back_right.rotation.z -= controlBoxParams.carSpeed;
- wheel_back_right.position.x += controlBoxParams.carSpeed;
- }
- if (typeof wheel_back_left !== 'undefined') {
- wheel_back_left.rotation.z -= controlBoxParams.carSpeed;
- wheel_back_left.position.x += controlBoxParams.carSpeed;
- }
- if (typeof car_frame !== 'undefined') {
- car_frame.position.x += controlBoxParams.carSpeed;
- }
- }
- // Statically rendered content
- function render(){
- stats.begin();
- renderer.render( scene, camera );
- stats.end();
- }
- // FPS counter
- function createStats(){
- stats = new Stats();
- stats.showPanel( 0 ); // 0: fps, 1: ms, 2: mb, 3+: custom
- fpsContainer.appendChild( stats.dom );
- }
- // Camera object
- function createCamera(){
- const fov = 80;
- const aspect = mainContainer.clientWidth / mainContainer.clientHeight;
- const near = 0.1;
- const far = 500; // meters
- camera = new THREE.PerspectiveCamera(fov, aspect, near, far);
- camera.position.set( 0, 20, 0 );
- camera.position.x = 10;
- camera.position.y = 20;
- camera.position.z = 50;
- //camera.lookAt(scene.position);
- }
- // Interactive controls
- function createControls(){
- camControls = new THREE.OrbitControls(camera, mainContainer);
- camControls.autoRotate = false;
- }
- function createLights(){
- //ambient light sviesesnei kompozicijai
- const ambientLight = new THREE.AmbientLight( 0xffffff, 1 ); // 0x111111 - 0xaaaaaa, 1 ; 0xffffff, 0.1 - 0.3; 0x404040
- scene.add( ambientLight );
- //directional light seseliams ir saules efektui
- const dirLight = new THREE.DirectionalLight( 0xffffff, 2, 1000 ); // color, intensity, proximity
- dirLight.position.set( 30, 10, -10 );
- dirLight.shadow.mapSize.width = 1048; // default
- dirLight.shadow.mapSize.height = 1048; // default
- dirLight.shadow.camera.near = 1; // default
- dirLight.shadow.camera.far = 50; // default
- dirLight.shadow.camera.left = -15;
- dirLight.shadow.camera.top = 15;
- dirLight.shadow.camera.right = 15;
- dirLight.shadow.camera.bottom = -15;
- dirLight.shadow.camera.darkness = 20;
- dirLight.castShadow = true;
- scene.add( dirLight );
- }
- //zole
- function createPlane(){
- //zoles tekstura
- const texture = new THREE.TextureLoader().load( "img/zole2.jpg" );
- texture.encoding = THREE.sRGBEncoding;
- texture.anisotropy = 16;
- //bump map'as
- const bump = new THREE.TextureLoader().load( "img/zole-bump_map.jpg" );
- //filtrai
- texture.magFilter = THREE.LinearFilter;
- texture.minFilter = THREE.LinearMipMapLinearFilter;
- //teksturos kartojimas
- texture.wrapS = THREE.RepeatWrapping;
- texture.wrapT = THREE.RepeatWrapping;
- texture.repeat.set(5,5);
- const planeGeometry = new THREE.PlaneBufferGeometry(50,50);
- const planeMaterial = new THREE.MeshStandardMaterial({ map: texture });
- //bumpu stiprumas
- planeMaterial.bumpMap = bump;
- planeMaterial.bumpScale = 0.3;
- //bump mapo kartojimas
- bump.wrapS = THREE.RepeatWrapping;
- bump.wrapT = THREE.RepeatWrapping;
- bump.repeat.set(5,5);
- plane = new THREE.Mesh(planeGeometry,planeMaterial);
- plane.roughness = 1;
- plane.rotation.x = -0.5*Math.PI;
- plane.position.x = -10;
- plane.position.y = 0;
- plane.position.z = 0;
- plane.receiveShadow = true;
- scene.add(plane);
- }
- //kelias ant zoles
- function createRoad(){
- //asfalto tekstura
- const texture = new THREE.TextureLoader().load( "img/asfaltas.jpg" );
- texture.encoding = THREE.sRGBEncoding;
- texture.anisotropy = 16;
- //bump map'as
- const bump = new THREE.TextureLoader().load( "img/asfaltas-bump_map.jpg" );
- //teksturos kartojimas
- texture.wrapS = THREE.RepeatWrapping;
- texture.wrapT = THREE.RepeatWrapping;
- texture.repeat.set(5,5);
- const roadGeometry = new THREE.PlaneBufferGeometry(50,20);
- const roadMaterial = new THREE.MeshStandardMaterial({ map: texture });
- //bumpu stiprumas
- roadMaterial.bumpMap = bump;
- roadMaterial.bumpScale = 0.9;
- //bump mapo kartojimas
- bump.wrapS = THREE.RepeatWrapping;
- bump.wrapT = THREE.RepeatWrapping;
- bump.repeat.set(5,5);
- road = new THREE.Mesh(roadGeometry,roadMaterial);
- road.roughness = 0.5;
- road.rotation.x = -0.5*Math.PI;
- road.position.x = -10;
- road.position.y = 0.05;
- road.position.z = 0;
- road.receiveShadow = true;
- scene.add(road);
- }
- //smelis
- function createSand(){
- //smelio tekstura
- const texture = new THREE.TextureLoader().load( "img/smelis2.jpg" );
- texture.encoding = THREE.sRGBEncoding;
- texture.anisotropy = 16;
- //bump map'as
- const bump = new THREE.TextureLoader().load( "img/smelis2-bump_map.jpg" );
- //teksturos kartojimas
- texture.wrapS = THREE.RepeatWrapping;
- texture.wrapT = THREE.RepeatWrapping;
- texture.repeat.set(5,5);
- const sandGeometry = new THREE.PlaneBufferGeometry(50,50);
- const sandMaterial = new THREE.MeshStandardMaterial({ map: texture });
- //bumpu stiprumas
- sandMaterial.bumpMap = bump;
- sandMaterial.bumpScale = 0.3;
- //bump mapo kartojimas
- bump.wrapS = THREE.RepeatWrapping;
- bump.wrapT = THREE.RepeatWrapping;
- bump.repeat.set(5,5);
- sand = new THREE.Mesh(sandGeometry,sandMaterial);
- sand.roughness = 0.5;
- sand.rotation.x = -0.5*Math.PI;
- sand.position.x = 40;
- sand.position.y = 0;
- sand.position.z = 0;
- sand.receiveShadow = true;
- scene.add(sand);
- }
- //vanduo
- function createWater(){
- let waterParams = {
- color: '#66a3ff',
- scale: 1,
- flowX: 0.6,
- flowY: 0.6,
- sound: true
- };
- const waterGeometry = new THREE.PlaneBufferGeometry( 20, 50 );
- let water = new THREE.Water( waterGeometry, {
- color: waterParams.color,
- scale: waterParams.scale,
- flowDirection: new THREE.Vector2( waterParams.flowX, waterParams.flowY ),
- textureWidth: 1024,
- textureHeight: 1024
- } );
- water.position.y = 0.05;
- water.position.x = 55;
- water.rotation.x = -0.5 * Math.PI;
- scene.add( water );
- }
- //saule
- function createSun(){
- const sunTexture = new THREE.TextureLoader().load( "img/sun.png" );
- const sunMaterial = new THREE.SpriteMaterial( { map: sunTexture, color: 0xffffff, transparent: true, opacity: 0.95} );
- const sun = new THREE.Sprite( sunMaterial );
- sun.scale.set(30, 30, 30);
- sun.position.set(60,30,-25);
- scene.add( sun );
- }
- //pagrindine remo figura
- function createMain_frame(){
- //ilgis, aukstis, plotis
- const geometry = new THREE.BoxGeometry( 12, 3, 7);
- const material = new THREE.MeshStandardMaterial( {color: 0x1E90FF} );
- const main_frame = new THREE.Mesh( geometry, material );
- main_frame.position.x = 0;
- main_frame.position.y = 2.5;
- main_frame.position.z = 0;
- main_frame.castShadow = true;
- main_frame.receiveShadow = true;
- material.metalness = 0.8;
- material.roughness = 0.3;
- //antras remas
- const second_frame_geometry = new THREE.BoxGeometry( 8, 3, 7);
- const second_frame_material = new THREE.MeshStandardMaterial( {color: 0x1E90FF} );
- const second_frame = new THREE.Mesh( second_frame_geometry, second_frame_material );
- second_frame.position.x = -2;
- second_frame.position.y = 5;
- second_frame.position.z = 0;
- second_frame.castShadow = true;
- second_frame.receiveShadow = true;
- second_frame.renderOrder = 0.5;
- second_frame_material.metalness = 0.8;
- second_frame_material.roughness = 0.3;
- //lempa, priekis desine-------------------------------
- var light_f_right_geometry = new THREE.CylinderGeometry( 0.7, 0.7, 0.1, 32 );
- var light_f_right_material = new THREE.MeshStandardMaterial( {color: 0xFFFF00} );
- var light_f_right = new THREE.Mesh( light_f_right_geometry, light_f_right_material );
- //bump map'as
- const light_f_right_bump = new THREE.TextureLoader().load( "img/lempa-bump-map.jpg" );
- //bumpu stiprumas
- light_f_right_material.bumpMap = light_f_right_bump;
- light_f_right_material.bumpScale = 0.3;
- //bump mapo kartojimas
- light_f_right_bump.wrapS = THREE.RepeatWrapping;
- light_f_right_bump.wrapT = THREE.RepeatWrapping;
- light_f_right_bump.repeat.set(1,1);
- light_f_right.position.x = 6;
- light_f_right.position.y = 2.8;
- light_f_right.position.z = 2;
- light_f_right.rotation.x = Math.PI / 2;
- light_f_right.rotation.z = Math.PI / 2;
- light_f_right.receiveShadow = true;
- //lempa, priekis desine---------------------------------
- //lempa, priekis kaire
- var light_f_left_geometry = new THREE.CylinderGeometry( 0.7, 0.7, 0.1, 32 );
- var light_f_left_material = new THREE.MeshStandardMaterial( {color: 0xFFFF00} );
- var light_f_left = new THREE.Mesh( light_f_left_geometry, light_f_left_material );
- //bump map'as
- const light_f_left_bump = new THREE.TextureLoader().load( "img/lempa-bump-map.jpg" );
- //bumpu stiprumas
- light_f_left_material.bumpMap = light_f_left_bump;
- light_f_left_material.bumpScale = 0.3;
- //bump mapo kartojimas
- light_f_left_bump.wrapS = THREE.RepeatWrapping;
- light_f_left_bump.wrapT = THREE.RepeatWrapping;
- light_f_left_bump.repeat.set(1,1);
- light_f_left.position.x = 6;
- light_f_left.position.y = 2.8;
- light_f_left.position.z = -2;
- light_f_left.rotation.x = Math.PI / 2;
- light_f_left.rotation.z = Math.PI / 2;
- light_f_left.receiveShadow = true;
- //lempa, galas desine
- var light_b_right_geometry = new THREE.BoxGeometry(1.7,0.1,0.8);
- var light_b_right_material = new THREE.MeshBasicMaterial( {color: 0xFF0000} );
- var light_b_right = new THREE.Mesh( light_b_right_geometry,light_b_right_material );
- light_b_right.position.x = -6;
- light_b_right.position.y = 2.8;
- light_b_right.position.z = -2;
- light_b_right.rotation.x = Math.PI / 2;
- light_b_right.rotation.z = Math.PI / 2;
- light_b_right.receiveShadow = true;
- //lempa, galas kaire
- var light_b_left_geometry = new THREE.BoxGeometry(1.7,0.1,0.8);
- var light_b_left_material = new THREE.MeshBasicMaterial( {color: 0xFF0000} );
- var light_b_left = new THREE.Mesh( light_b_left_geometry,light_b_left_material );
- light_b_left.position.x = -6;
- light_b_left.position.y = 2.8;
- light_b_left.position.z = 2;
- light_b_left.rotation.x = Math.PI / 2;
- light_b_left.rotation.z = Math.PI / 2;
- light_b_left.receiveShadow = true;
- //priekinis langas
- const front_window_geometry = new THREE.BoxGeometry( 6, 0.1, 1.8);
- const front_window_material = new THREE.MeshStandardMaterial( {color: 0xADD8E6} );
- const front_window = new THREE.Mesh( front_window_geometry, front_window_material );
- front_window.position.x = 2;
- front_window.position.y = 5.3;
- front_window.position.z = 0;
- front_window.rotation.x = Math.PI / 2;
- front_window.rotation.z = Math.PI / 2;
- front_window.receiveShadow = true;
- front_window_material.metalness = 0.8;
- front_window_material.roughness = 0.5;
- //galinis langas
- const back_window_geometry = new THREE.BoxGeometry( 6, 0.1, 1.8);
- const back_window_material = new THREE.MeshPhongMaterial( {color: 0xADD8E6} );
- const back_window = new THREE.Mesh( back_window_geometry, back_window_material );
- back_window.position.x = -6;
- back_window.position.y = 5;
- back_window.position.z = 0;
- back_window.rotation.x = Math.PI / 2;
- back_window.rotation.z = Math.PI / 2;
- back_window.receiveShadow = true;
- back_window_material.metalness = 0.8;
- back_window_material.roughness = 0.0;
- //durys, desine
- const door_right_geometry = new THREE.BoxGeometry( 3, 0.1, 4.5);
- const door_right_material = new THREE.MeshStandardMaterial( {color: 0x0000CD} );
- const door_right = new THREE.Mesh( door_right_geometry, door_right_material );
- door_right.position.x = 0;
- door_right.position.y = 3.8;
- door_right.position.z = 3.5;
- door_right.rotation.x = Math.PI / 2;
- door_right.receiveShadow = true;
- door_right.metalness = 0.8;
- door_right.roughness = 0.3;
- //durys, kaire
- const door_left_geometry = new THREE.BoxGeometry( 3, 0.1, 4.5);
- const door_left_material = new THREE.MeshStandardMaterial( {color: 0x0000CD} );
- const door_left = new THREE.Mesh( door_left_geometry, door_left_material );
- door_left.position.x = 0;
- door_left.position.y = 3.8;
- door_left.position.z = -3.5;
- door_left.rotation.x = Math.PI / 2;
- door_left.receiveShadow = true;
- door_left.metalness = 0.8;
- door_left.roughness = 0.3;
- //duru langas, desine
- const door_window_right_geometry = new THREE.BoxGeometry( 2.5, 0.1, 1.7);
- const door_window_right_material = new THREE.MeshStandardMaterial( {color: 0xADD8E6} );
- const door_window_right = new THREE.Mesh( door_window_right_geometry, door_window_right_material );
- door_window_right.position.x = 0;
- door_window_right.position.y = 5;
- door_window_right.position.z = 3.55;
- door_window_right.rotation.x = Math.PI / 2;
- door_window_right.receiveShadow = true;
- door_window_right.metalness = 0.8;
- door_window_right.roughness = 0.3;
- //duru langas, kaire
- const door_window_left_geometry = new THREE.BoxGeometry( 2.5, 0.1, 1.7);
- const door_window_left_material = new THREE.MeshStandardMaterial( {color: 0xADD8E6} );
- const door_window_left = new THREE.Mesh( door_window_left_geometry, door_window_left_material );
- door_window_left.position.x = 0;
- door_window_left.position.y = 5;
- door_window_left.position.z = -3.55;
- door_window_left.rotation.x = Math.PI / 2;
- door_window_left.receiveShadow = true;
- door_window_left.metalness = 0.8;
- door_window_left.roughness = 0.3;
- //keleivio langas, desine
- const passenger_window_right_geometry = new THREE.BoxGeometry( 2.5, 0.1, 1.7);
- const passenger_window_right_material = new THREE.MeshStandardMaterial( {color: 0xADD8E6} );
- const passenger_window_right = new THREE.Mesh( passenger_window_right_geometry, passenger_window_right_material );
- passenger_window_right.position.x = -4;
- passenger_window_right.position.y = 5;
- passenger_window_right.position.z = -3.5;
- passenger_window_right.rotation.x = Math.PI / 2;
- passenger_window_right.receiveShadow = true;
- passenger_window_right.metalness = 0.8;
- passenger_window_right.roughness = 0.3;
- //keleivio langas, kaire
- const passenger_window_left_geometry = new THREE.BoxGeometry( 2.5, 0.1, 1.7);
- const passenger_window_left_material = new THREE.MeshStandardMaterial( {color: 0xADD8E6} );
- const passenger_window_left = new THREE.Mesh( passenger_window_left_geometry, passenger_window_left_material );
- passenger_window_left.position.x = -4;
- passenger_window_left.position.y = 5;
- passenger_window_left.position.z = 3.5;
- passenger_window_left.rotation.x = Math.PI / 2;
- passenger_window_left.receiveShadow = true;
- passenger_window_left.metalness = 0.8;
- passenger_window_left.roughness = 0.3;
- //duru rankena, desine
- const handle_right_geometry = new THREE.BoxGeometry( 0.5, 0.1,0.1);
- const handle_right_material = new THREE.MeshStandardMaterial( {color: 0x000000} );
- const handle_right = new THREE.Mesh( handle_right_geometry, handle_right_material );
- handle_right.position.x = -1;
- handle_right.position.y = 3.5;
- handle_right.position.z = 3.56;
- handle_right.receiveShadow = true;
- handle_right.metalness = 0.8;
- handle_right.roughness = 0.3;
- //duru rankena, kaire
- const handle_left_geometry = new THREE.BoxGeometry( 0.5, 0.1,0.1);
- const handle_left_material = new THREE.MeshStandardMaterial( {color: 0x000000} );
- const handle_left = new THREE.Mesh( handle_left_geometry, handle_left_material );
- handle_left.position.x = -1;
- handle_left.position.y = 3.5;
- handle_left.position.z = -3.56;
- handle_left.receiveShadow = true;
- handle_left.metalness = 0.8;
- handle_left.roughness = 0.3;
- car_frame = new THREE.Group();
- car_frame.add(main_frame);
- car_frame.add(second_frame);
- car_frame.add(light_f_right);
- car_frame.add(light_f_left);
- car_frame.add(light_b_left);
- car_frame.add(light_b_right);
- car_frame.add(front_window);
- car_frame.add(back_window);
- car_frame.add(door_right);
- car_frame.add(door_left);
- car_frame.add(passenger_window_left);
- car_frame.add(passenger_window_right);
- car_frame.add(door_window_left);
- car_frame.add(door_window_right);
- car_frame.add(handle_left);
- car_frame.add(handle_right);
- // auto apsukimas
- //car_frame.rotation.y = Math.PI;
- scene.add(car_frame);
- }
- //--------------------------------------- RATAI ------------------------------------------------------
- //ratas, galas kaire
- function createWheel_b_left(){
- }
- //ratas priekis desine
- function createWheel_frame_f_right(){
- const texture = new THREE.TextureLoader().load( "img/rim.png" );
- texture.encoding = THREE.sRGBEncoding;
- texture.anisotropy = 16;
- texture.wrapS = THREE.RepeatWrapping;
- texture.wrapT = THREE.RepeatWrapping;
- texture.repeat.set(1,1);
- var wheel_frame_f_right_geometry = new THREE.CylinderGeometry( 0.8, 0.8, 0.1, 32 );
- var wheel_frame_f_right_material = new THREE.MeshStandardMaterial( {map: texture} );
- wheel_frame_f_right = new THREE.Mesh(wheel_frame_f_right_geometry, wheel_frame_f_right_material );
- var wheel_f_right_geometry = new THREE.CylinderGeometry( 1.5, 1.5, 1, 32 );
- var wheel_f_right_material = new THREE.MeshStandardMaterial( {color: 0x000000} );
- var wheel_f_right = new THREE.Mesh( wheel_f_right_geometry, wheel_f_right_material );
- wheel_f_right.position.x = 0;
- wheel_f_right.position.y = 0;
- wheel_f_right.position.z = 0;
- wheel_f_right.rotation.x = Math.PI / 2;
- wheel_f_right.castShadow = true;
- wheel_f_right.receiveShadow = true;
- wheel_frame_f_right.position.x = 0;
- wheel_frame_f_right.position.y = 0;
- wheel_frame_f_right.position.z = 0.5;
- wheel_frame_f_right.rotation.x = Math.PI / 2;
- wheel_frame_f_right.receiveShadow = true;
- wheel_frame_f_right.castShadow = true;
- wheel_frame_f_right_material.metalness = 0.8;
- wheel_frame_f_right_material.roughness = 0.3;
- wheel_front_right = new THREE.Group();
- wheel_front_right.add(wheel_f_right);
- wheel_front_right.add(wheel_frame_f_right);
- wheel_front_right.position.set(4,1.5,4);
- scene.add(wheel_front_right);
- }
- //ratas, priekis kaire
- function createWheel_frame_f_left(){
- const texture = new THREE.TextureLoader().load( "img/rim.png" );
- texture.encoding = THREE.sRGBEncoding;
- texture.anisotropy = 16;
- texture.wrapS = THREE.RepeatWrapping;
- texture.wrapT = THREE.RepeatWrapping;
- texture.repeat.set(1,1);
- var wheel_frame_f_left_geometry = new THREE.CylinderGeometry( 0.8, 0.8, 0.1, 32 );
- var wheel_frame_f_left_material = new THREE.MeshStandardMaterial( {map: texture} );
- wheel_frame_f_left = new THREE.Mesh(wheel_frame_f_left_geometry, wheel_frame_f_left_material );
- wheel_frame_f_left.position.x = 0;
- wheel_frame_f_left.position.y = 0;
- wheel_frame_f_left.position.z = -0.5;
- wheel_frame_f_left.rotation.x = Math.PI / 2;
- wheel_frame_f_left.receiveShadow = true;
- wheel_frame_f_left.castShadow = true;
- wheel_frame_f_left_material.metalness = 0.8;
- wheel_frame_f_left_material.roughness = 0.3;
- var wheel_f_left_geometry = new THREE.CylinderGeometry( 1.5, 1.5, 1, 32 );
- var wheel_f_left_material = new THREE.MeshStandardMaterial( {color: 0x00000} );
- var wheel_f_left = new THREE.Mesh( wheel_f_left_geometry, wheel_f_left_material );
- wheel_f_left.position.x = 0;
- wheel_f_left.position.y = 0;
- wheel_f_left.position.z = 0;
- wheel_f_left.rotation.x = Math.PI / 2;
- wheel_f_left.receiveShadow = true;
- wheel_f_left.castShadow = true;
- wheel_front_left = new THREE.Group();
- wheel_front_left.add(wheel_frame_f_left);
- wheel_front_left.add(wheel_f_left);
- wheel_front_left.position.set(4, 1.5, -4,5);
- scene.add(wheel_front_left);
- }
- //ratas, galas desine
- function createWheel_frame_b_right(){
- const texture = new THREE.TextureLoader().load( "img/rim.png" );
- texture.encoding = THREE.sRGBEncoding;
- texture.anisotropy = 16;
- texture.wrapS = THREE.RepeatWrapping;
- texture.wrapT = THREE.RepeatWrapping;
- texture.repeat.set(1,1);
- var wheel_frame_b_right_geometry = new THREE.CylinderGeometry( 0.8, 0.8, 0.1, 32 );
- var wheel_frame_b_right_material = new THREE.MeshStandardMaterial( {map: texture} );
- wheel_frame_b_right = new THREE.Mesh(wheel_frame_b_right_geometry, wheel_frame_b_right_material );
- wheel_frame_b_right.position.x = 0;
- wheel_frame_b_right.position.y = 0;
- wheel_frame_b_right.position.z = 0.5;
- wheel_frame_b_right.rotation.x = Math.PI / 2;
- wheel_frame_b_right.receiveShadow = true;
- wheel_frame_b_right.castShadow = true;
- wheel_frame_b_right_material.metalness = 0.8;
- wheel_frame_b_right_material.roughness = 0.3;
- var wheel_b_right_geometry = new THREE.CylinderGeometry( 1.5, 1.5, 1, 32 );
- var wheel_b_right_material = new THREE.MeshStandardMaterial( {color: 0x000000} );
- var wheel_b_right = new THREE.Mesh( wheel_b_right_geometry, wheel_b_right_material );
- wheel_b_right.position.x = 0;
- wheel_b_right.position.y = 0;
- wheel_b_right.position.z = 0;
- wheel_b_right.rotation.x = Math.PI / 2;
- wheel_b_right.receiveShadow = true;
- wheel_b_right.castShadow = true;
- wheel_back_right = new THREE.Group();
- wheel_back_right.position.set(-4,1.5,4);
- wheel_back_right.add(wheel_frame_b_right);
- wheel_back_right.add(wheel_b_right);
- scene.add(wheel_back_right);
- }
- //ratas, galas kaire
- function createWheel_frame_b_left(){
- const texture = new THREE.TextureLoader().load( "img/rim.png" );
- texture.encoding = THREE.sRGBEncoding;
- texture.anisotropy = 16;
- texture.wrapS = THREE.RepeatWrapping;
- texture.wrapT = THREE.RepeatWrapping;
- texture.repeat.set(1,1);
- var wheel_frame_b_left_geometry = new THREE.CylinderGeometry( 0.8, 0.8, 0.1, 32 );
- var wheel_frame_b_left_material = new THREE.MeshStandardMaterial( {map: texture} );
- wheel_frame_b_left = new THREE.Mesh(wheel_frame_b_left_geometry, wheel_frame_b_left_material );
- wheel_frame_b_left.position.x = 0;
- wheel_frame_b_left.position.y = 0;
- wheel_frame_b_left.position.z = -0.5;
- wheel_frame_b_left.rotation.x = Math.PI / 2;
- wheel_frame_b_left.receiveShadow = true;
- wheel_frame_b_left.castShadow = true;
- wheel_frame_b_left_material.metalness = 0.8;
- wheel_frame_b_left_material.roughness = 0.3;
- var wheel_b_left_geometry = new THREE.CylinderGeometry( 1.5, 1.5, 1, 32 );
- var wheel_b_left_material = new THREE.MeshStandardMaterial( {color: 0x000000} );
- var wheel_b_left = new THREE.Mesh( wheel_b_left_geometry, wheel_b_left_material );
- wheel_b_left.position.x = 0;
- wheel_b_left.position.y = 0;
- wheel_b_left.position.z = 0;
- wheel_b_left.rotation.x = Math.PI / 2;
- wheel_b_left.receiveShadow = true;
- wheel_b_left.castShadow = true;
- wheel_back_left = new THREE.Group();
- wheel_back_left.position.set(-4,1.5,-4);
- wheel_back_left.add(wheel_frame_b_left);
- wheel_back_left.add(wheel_b_left);
- scene.add(wheel_back_left);
- }
- //--------------------------------------- RATAI ------------------------------------------------------
- //control box'as
- function createCtrlBox(){
- gui = new dat.GUI();
- gui.remember(controlBoxParams);
- gui.add(controlBoxParams, 'carSpeed').min(0.00).max(1).step(0.01).name("Car speed");
- let cntScale = gui.add(controlBoxParams, 'rimSize').min(0.8).max(1.6).step(0.01).name("Rim size");
- cntScale.listen();
- cntScale.onChange(function(value) {
- wheel_frame_f_right.scale.set(controlBoxParams.rimSize, controlBoxParams.rimSize, controlBoxParams.rimSize);
- wheel_frame_f_left.scale.set(controlBoxParams.rimSize, controlBoxParams.rimSize, controlBoxParams.rimSize);
- wheel_frame_b_right.scale.set(controlBoxParams.rimSize, controlBoxParams.rimSize, controlBoxParams.rimSize);
- wheel_frame_b_left.scale.set(controlBoxParams.rimSize, controlBoxParams.rimSize, controlBoxParams.rimSize);
- });
- }
- // Meshes and other visible objects
- function createMeshes(){
- createPlane(plane);
- createRoad(road);
- createSand(sand);
- createWater(water);
- createSun(sun);
- createMain_frame(main_frame);
- createCtrlBox();
- createWheel_frame_f_right(wheel_frame_f_right, wheel_f_right);
- createWheel_frame_f_left(wheel_frame_f_left);
- createWheel_frame_b_right(wheel_frame_b_right);
- createWheel_frame_b_left(wheel_frame_b_left);
- // createLight_f_right(light_f_right);
- // createLight_f_left(light_f_left);
- // createLight_b_right(light_b_right);
- // createLight_b_left(light_b_left);
- // createSecond_frame(second_frame);
- // createFront_window(front_window);
- // createBack_window(back_window);
- // createDoor_right(door_right);
- // createDoor_left(door_left);
- // createDoor_window_right(door_window_right);
- // createDoor_window_left(door_window_left);
- // createPassenger_window_right(passenger_window_right);
- // createPassenger_window_left(passenger_window_left);
- // createHandle_right(handle_right);
- // createHandle_left(handle_left);
- }
- // Renderer object and features
- function createRenderer(){
- renderer = new THREE.WebGLRenderer({antialias:true});
- renderer.setSize(mainContainer.clientWidth, mainContainer.clientHeight);
- renderer.setPixelRatio( window.devicePixelRatio );
- // renderer.setClearColor(0xEEEEEE);
- mainContainer.appendChild( renderer.domElement );
- renderer.shadowMap.enabled = true;
- renderer.shadowMap.type = THREE.PCFSoftShadowMap; //THREE.BasicShadowMap | THREE.PCFShadowMap | THREE.PCFSoftShadowMap
- mainContainer.appendChild( renderer.domElement );
- //scenos pasviesinimas
- renderer.gammaFactor = 1.5;
- renderer.gammaOutput = true;
- }
- function onWindowResize() {
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
- renderer.setSize( window.innerWidth, window.innerHeight );
- }
- window.addEventListener( 'resize', onWindowResize, false );
- init();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement