| | |
| | | import * as THREE from 'three'; |
| | | |
| | | |
| | | |
| | | import rotatingAperture from '@/assets/map/texture/rotatingAperture.png'; |
| | | import rotatingPoint from '@/assets/map/texture/rotating-point2.png'; |
| | | import circlePoint from '@/assets/map/texture/circle-point.png'; |
| | | import sceneBg from '@/assets/map/texture/scene-bg2.png'; |
| | | export default class Enviroment { |
| | | constructor(experience) { |
| | | this.experience = experience; |
| | | this.scene = this.experience.scene; |
| | | this.setSunLight(); |
| | | constructor(experience) { |
| | | this.experience = experience; |
| | | this.scene = this.experience.scene; |
| | | // this.setSunLight(); |
| | | this.setBackground(); |
| | | } |
| | | setSunLight() { |
| | | this.sunLight = new THREE.DirectionalLight('#ffffff', 4); |
| | | this.sunLight.castShadow = true; |
| | | this.sunLight.shadow.camera.far = 15; |
| | | this.sunLight.shadow.mapSize.set(2048, 2048); |
| | | this.sunLight.shadow.normalBias = 0.05; |
| | | this.sunLight.position.set(-1.3, 7, 10); |
| | | this.scene.add(this.sunLight); |
| | | } |
| | | |
| | | setBackground() { |
| | | const texture = new THREE.TextureLoader(); |
| | | const rotatingApertureTexture = texture.load(rotatingAperture); |
| | | const rotatingPointTexture = texture.load(rotatingPoint); |
| | | const circlePointTexture = texture.load(circlePoint); |
| | | const sceneBgTexture = texture.load(sceneBg); |
| | | let meshConfig1 = { |
| | | width: 100, |
| | | height: 100, |
| | | texture: rotatingApertureTexture, |
| | | positionList: [0, 0.13, 0.3], |
| | | scaleList: [0.048, 0.048, 0.048], |
| | | rotateList: [-Math.PI / 2, 0, 0] |
| | | }; |
| | | let meshConfig2 = { |
| | | width: 100, |
| | | height: 100, |
| | | texture: rotatingPointTexture, |
| | | positionList: [0, 0.1, 0.3], |
| | | scaleList: [0.04, 0.04, 0.04], |
| | | rotateList: [-Math.PI / 2, 0, 0] |
| | | }; |
| | | this.hola1 = this.createMesh(meshConfig1); |
| | | this.hola2 = this.createMesh(meshConfig2); |
| | | |
| | | this.scene.add(this.hola1); |
| | | this.scene.add(this.hola2); |
| | | } |
| | | |
| | | createMesh(config) { |
| | | let { width, height, texture, positionList, rotateList, scaleList } = config; |
| | | let plane = new THREE.PlaneGeometry(width, height); |
| | | let material = new THREE.MeshBasicMaterial({ |
| | | map: texture, |
| | | transparent: true, |
| | | opacity: 1, |
| | | depthTest: true, |
| | | }); |
| | | let mesh = new THREE.Mesh(plane, material); |
| | | mesh.position.set(...positionList); |
| | | mesh.scale.set(...scaleList); |
| | | mesh.rotation.set(...rotateList); |
| | | return mesh; |
| | | } |
| | | |
| | | update() { |
| | | if (this.hola1) { |
| | | this.hola1.rotation.z += 0.001; |
| | | } |
| | | setSunLight() { |
| | | this.sunLight = new THREE.DirectionalLight('#ffffff', 4); |
| | | this.sunLight.castShadow = true; |
| | | this.sunLight.shadow.camera.far = 15; |
| | | this.sunLight.shadow.mapSize.set(2048, 2048); |
| | | this.sunLight.shadow.normalBias = 0.05; |
| | | this.sunLight.position.set(-1.3, 7, 10); |
| | | this.scene.add(this.sunLight); |
| | | if (this.hola2) { |
| | | this.hola2.rotation.z -= 0.001; |
| | | } |
| | | } |
| | | } |