From 9261007f12a6250141e30cfc43c37c5a093f1430 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期一, 03 一月 2022 11:20:33 +0800
Subject: [PATCH] #
---
static/js/app.js | 48 +++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 43 insertions(+), 5 deletions(-)
diff --git a/static/js/app.js b/static/js/app.js
index 075903c..3e46db3 100644
--- a/static/js/app.js
+++ b/static/js/app.js
@@ -1,12 +1,18 @@
import {OrbitControls} from './lib/OrbitControls.js';
import { PointerLockControls } from './lib/PointerLockControls.js';
import Stats from './lib/stats.module.js';
+import { EffectComposer } from './lib/EffectComposer.js';
+import { RenderPass } from './lib/postprocessing/RenderPass.js';
+import { ShaderPass } from './lib/postprocessing/ShaderPass.js';
+import { OutlinePass } from './lib/postprocessing/OutlinePass.js';
+import { FXAAShader } from './lib/postprocessing/FXAAShader.js';
import {MTLLoader} from './lib/MTLLoader.js';
import {OBJLoader} from './lib/OBJLoader.js';
import {StoreShelf} from './object/StoreShelf.js';
import {StoreCrn} from './object/StoreCrn.js';
import {StoreConvey} from './object/StoreConvey.js';
import { Sky } from './object/Sky.js';
+
var APP = {
@@ -19,6 +25,7 @@
this.objects = [];//鍦烘櫙涓墍鏈夊璞$殑闆嗗悎
this.firstTime = 1;
this.stats = null;
+ this.outlinePass = null;
this.goodTypes=[];//瀛樺偍鎵�鏈夌殑搴撲綅绫诲瀷
this.crnTasks = [];// 鍫嗗灈鏈哄垪琛�
this.moveForward = false;//鏄惁鍚戝墠杩愯
@@ -45,6 +52,9 @@
this.initStats();
this.initLight();
this.initReSize(this);
+ this.initOutLine();
+ // this.initComposer();
+ this.initObjectSelect();
this.initPointLockControl(this);
this.initFloor();
this.initBuilding();
@@ -53,7 +63,11 @@
this.animate = function () {
requestAnimationFrame(this.animate.bind(this));
this.stats.begin();
- this.renderer.render(this.scene, this.camera);
+ if (this.composer) {
+ this.composer.render();
+ } else {
+ this.renderer.render(this.scene, this.camera);
+ }
this.firstPersonMove();
this.initStoreObjects(this);
this.stats.end();
@@ -83,7 +97,7 @@
// this.renderer.toneMapping = THREE.CineonToneMapping; // 鑹茶皟
this.renderer.setSize(window.innerWidth, window.innerHeight);
this.renderer.setPixelRatio( window.devicePixelRatio );
- this.renderer.shadowMap.enabled = false;
+ this.renderer.shadowMap.enabled = true;
this.renderer.shadowMap.type = THREE.BasicShadowMap;
this.dom = document.getElementById("container");
this.dom.appendChild(this.renderer.domElement);
@@ -94,6 +108,7 @@
let ambient = new THREE.AmbientLight(0xffffff, 1); //AmbientLight,褰卞搷鏁翠釜鍦烘櫙鐨勫厜婧�
ambient.position.set(0, 0, 0);
this.addObject(ambient);
+
// 娣诲姞骞宠鍏�,骞宠鍏夌被浼间簬澶槼鍏�
// let directionalLight = new THREE.DirectionalLight(0xffffff, 0.3);//妯℃嫙杩滃绫讳技澶槼鐨勫厜婧�
@@ -113,9 +128,8 @@
pointLight.castShadow = true;
pointLight.shadow.camera.near = 2000;
pointLight.shadow.camera.far = 10000;
- pointLight.shadow.mapSize.height = 100000;
- pointLight.shadow.mapSize.width = 100000;
- // 灏嗘墍鏈夊垱寤虹殑鐗╀綋鍔犲叆鍒板満鏅腑鍘�
+ pointLight.shadow.mapSize.height = 200000;
+ pointLight.shadow.mapSize.width = 200000;
this.addObject(pointLight);
}
this.initOrbitControl = function () {
@@ -178,6 +192,30 @@
object.renderer.setSize(window.innerWidth, window.innerHeight);
}, false);
}
+ this.initOutLine = function(){
+ this.outlinePass = new OutlinePass( new THREE.Vector2( window.innerWidth, window.innerHeight ), this.scene, this.camera )
+ // this.outlinePass.edgeStrength = 1;//鍖呭洿绾挎祿搴�
+ // this.outlinePass.edgeGlow = 0.1;//杈圭紭绾胯寖鍥�
+ // this.outlinePass.edgeThickness = 1;//杈圭紭绾挎祿搴�
+ // this.outlinePass.pulsePeriod = 2;//鍖呭洿绾块棯鐑佽瘎鐜�
+ // this.outlinePass.visibleEdgeColor.set('#B31985');//鍖呭洿绾块鑹�
+ // this.outlinePass.hiddenEdgeColor.set('#190a05');//琚伄鎸$殑杈圭晫绾块鑹�
+ }
+ this.initComposer = function(){
+ this.composer = new EffectComposer(this.renderer);
+ const renderPass = new RenderPass( this.scene, this.camera );
+ this.composer.addPass( renderPass );
+ this.composer.addPass(this.outlinePass);
+
+ const pixelRatio = this.renderer.getPixelRatio();
+ this.fxaaPass = new ShaderPass( FXAAShader );
+ this.fxaaPass.material.uniforms[ 'resolution' ].value.x = 1 / ( this.dom.offsetWidth * pixelRatio );
+ this.fxaaPass.material.uniforms[ 'resolution' ].value.y = 1 / ( this.dom.offsetHeight * pixelRatio );
+ this.composer.addPass( this.fxaaPass );
+ }
+ this.initObjectSelect = function(){
+ new ObjectSelect(this.scene, this.camera, this.outlinePass);
+ }
this.initPointLockControl = function(object){
this.controls = new PointerLockControls( this.camera, document.body );
this.raycaster = new THREE.Raycaster( new THREE.Vector3(), new THREE.Vector3( 0, - 1, 0 ), 0, 50 );
--
Gitblit v1.9.1