From 91d53d8be6563add488c4fe32b49eb02efc97056 Mon Sep 17 00:00:00 2001 From: goynov Date: Thu, 26 Mar 2026 11:42:43 +0200 Subject: [PATCH] #74 --- src/components/AssetsManagement/AssetPreview.vue | 8 +++++--- src/lib/GameEngine.js | 8 ++++---- src/lib/Hero.js | 5 ++++- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/components/AssetsManagement/AssetPreview.vue b/src/components/AssetsManagement/AssetPreview.vue index dbc49b6..ffbcf39 100644 --- a/src/components/AssetsManagement/AssetPreview.vue +++ b/src/components/AssetsManagement/AssetPreview.vue @@ -81,9 +81,11 @@ export default{ name: a.name, id: a.uuid })); engine.meshUtils.autoScale(gltf.scene); - let bb = new engine.$.Box3().setFromObject(gltf.scene); - engine.camera.position.set(bb.max.x, bb.max.y, bb.max.z*3); - engine.orbitControls.target.set((bb.max.x + bb.min.x) / 2, (bb.max.y + bb.min.y) / 2, (bb.max.z + bb.min.z) / 2) + let bb = engine.meshUtils.getBoundingBox(gltf.scene); + let ln = engine.meshUtils.getBoundingBoxMaxLength(bb); + let cp = engine.meshUtils.getBoundingBoxCenterPoint(bb); + engine.camera.position.set(cp.x, cp.y*1.77, ln*1.5); + engine.orbitControls.target.set(cp.x,cp.y*1.77,cp.z) engine.orbitControls.update(); engine.activeObjects.add(gltf.scene); } diff --git a/src/lib/GameEngine.js b/src/lib/GameEngine.js index 733c842..29bb9fb 100644 --- a/src/lib/GameEngine.js +++ b/src/lib/GameEngine.js @@ -48,8 +48,11 @@ class GameEngine extends EventManager{ const scene = new THREE.Scene(); this.sceneWrapper = new THREE.Group(); - this.sceneWrapper.scale.setScalar(this.scale); scene.add(this.sceneWrapper); + this.activeObjects = new THREE.Group(); + this.sceneWrapper.add(this.activeObjects); + this.activeObjects.scale.setScalar(this.scale); + //this.camera.scale.setScalar(0.1); this.scene = scene; @@ -89,9 +92,6 @@ class GameEngine extends EventManager{ this.camera.add(this.listener); this.ambientSound = new THREE.Audio(this.listener); - this.activeObjects = new THREE.Group(); - this.sceneWrapper.add(this.activeObjects); - if (this.opts.gizmo) { this.orbitControls = new OrbitControls(this.camera, this.renderer.domElement); this.orbitControls.enableZoom = false; diff --git a/src/lib/Hero.js b/src/lib/Hero.js index a65dd29..343b6ee 100644 --- a/src/lib/Hero.js +++ b/src/lib/Hero.js @@ -250,6 +250,8 @@ class Hero{ this.walkDirection.applyAxisAngle(this.rotateAngle, this.direction) this.walkDirection.normalize(); this.model.rotation.y = this.direction; + }else if (this.fpv){ + this.model.rotation.y = this.camera.rotation.y; } this.walkDirection.x = this.walkDirection.x * velocity * delta// + this.model.position.x @@ -301,6 +303,7 @@ class Hero{ this.model.position.z + this.#cameraZ* Math.cos(0+ Math.PI + this.cameraDelta + this.cameraIdleDelta) ) } + cameraDesiredPosition.multiplyScalar(this.engine.scale) cameraPosition.lerp(cameraDesiredPosition, this.cameraMode == 'fixed' ? delta*2 : delta*2) //cameraPosition.lerp(cameraDesiredPosition, this.fpv ? 1 : delta*2) @@ -308,7 +311,7 @@ class Hero{ if (!this.fpv){ this.camera.lookAt( this.engine.scale * this.model.position.x, - this.engine.scale * (this.cameraY -this.size.y * 0.5 + this.model.position.y), + this.camera.position.y,//this.engine.scale * (this.cameraY -this.size.y * 0.5 + this.model.position.y), this.engine.scale * this.model.position.z ) }