From 9c09d5f124eb1e9e6abc0833da3b464eaeca6c23 Mon Sep 17 00:00:00 2001 From: luoyifan Date: Sat, 5 Jul 2025 10:33:06 +0800 Subject: [PATCH] =?UTF-8?q?Cl2=20/=20Clx=20=E5=A4=A7=E5=B0=8Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/base/BaseRenderer.ts | 4 ++-- src/core/manager/DragManager.ts | 2 +- src/modules/amr/ptr/cl2/Cl2Renderer.ts | 18 ++++++++++++++++++ src/modules/amr/ptr/clx/ClxRenderer.ts | 23 +++++++++++++++++++++-- 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/src/core/base/BaseRenderer.ts b/src/core/base/BaseRenderer.ts index b33f9f6..93bf038 100644 --- a/src/core/base/BaseRenderer.ts +++ b/src/core/base/BaseRenderer.ts @@ -136,7 +136,7 @@ export default abstract class BaseRenderer { // 由基础类创造一个属于自己的点演示 const point = this.createPointBasic(item, option) const matrix = this.calcMeshMatrix(item, option) - point.setMatrix4(matrix) + point.applyMatrix4(matrix) point.visible = ((typeof item.v !== 'undefined') ? item.v : true) return point @@ -262,7 +262,7 @@ export default abstract class BaseRenderer { // point.manager.syncMeshObject3D(point) // } const matrix = this.calcMeshMatrix(item, option) - point.setMatrix4(matrix) + point.applyMatrix4(matrix) point.visible = ((typeof item.v !== 'undefined') ? item.v : true) return point diff --git a/src/core/manager/DragManager.ts b/src/core/manager/DragManager.ts index 95519a2..f884f1f 100644 --- a/src/core/manager/DragManager.ts +++ b/src/core/manager/DragManager.ts @@ -277,7 +277,7 @@ export default class DragManager { const newPosY = shadow.userData.originPosition.y const newPosZ = shadow.userData.originPosition.z + offsetZ - shadow.setMatrix4(new THREE.Matrix4().makeTranslation(newPosX, newPosY, newPosZ)) + shadow.applyMatrix4(new THREE.Matrix4().makeTranslation(newPosX, newPosY, newPosZ)) } } diff --git a/src/modules/amr/ptr/cl2/Cl2Renderer.ts b/src/modules/amr/ptr/cl2/Cl2Renderer.ts index bc8daf5..c1627ee 100644 --- a/src/modules/amr/ptr/cl2/Cl2Renderer.ts +++ b/src/modules/amr/ptr/cl2/Cl2Renderer.ts @@ -2,6 +2,7 @@ import * as THREE from 'three' import BaseRenderer from '@/core/base/BaseRenderer.ts' import Constract from '@/core/Constract.ts' import Cl23dObject from "./Cl23dObject"; +import type { Object3DLike } from '@/types/ModelTypes.ts' /** * ptr侧叉渲染器 @@ -64,6 +65,23 @@ export default class PtrRenderer extends BaseRenderer { } + updatePoint(item: ItemJson, object: Object3DLike, option?: RendererCudOption): Object3DLike { + const group: THREE.Group = object as THREE.Group + + group.position.set(item.tf[0][0], item.tf[0][1], item.tf[0][2]) + group.rotation.set( + THREE.MathUtils.degToRad(item.tf[1][0]), + THREE.MathUtils.degToRad(item.tf[1][1]), + THREE.MathUtils.degToRad(item.tf[1][2]) + ) + + // 禁止缩放, + item.tf[2][0] = this.defaultScale.x + item.tf[2][1] = this.defaultScale.y + item.tf[2][2] = this.defaultScale.z + + return group + } dispose() { super.dispose() diff --git a/src/modules/amr/ptr/clx/ClxRenderer.ts b/src/modules/amr/ptr/clx/ClxRenderer.ts index e10d10b..c99a0bd 100644 --- a/src/modules/amr/ptr/clx/ClxRenderer.ts +++ b/src/modules/amr/ptr/clx/ClxRenderer.ts @@ -1,7 +1,8 @@ import * as THREE from 'three' import BaseRenderer from '@/core/base/BaseRenderer.ts' import Constract from '@/core/Constract.ts' -import Clx3dObject from "./Clx3dObject"; +import Clx3dObject from './Clx3dObject' +import type { Object3DLike } from '@/types/ModelTypes.ts' /** * clx渲染器 @@ -15,7 +16,7 @@ export default class ClxRenderer extends BaseRenderer { * 默认点的高度, 防止和地面重合 */ readonly defulePositionY: number = Constract.HEIGHT_WAY - readonly defaultScale: THREE.Vector3 = new THREE.Vector3(1, 1, 1) + readonly defaultScale: THREE.Vector3 = new THREE.Vector3(1.65, 3.393, 1.65) readonly defaultRotation: THREE.Vector3 = new THREE.Vector3(0, 0, 0) readonly defaultLineWidth: number = 0.15 @@ -59,6 +60,24 @@ export default class ClxRenderer extends BaseRenderer { return group } + updatePoint(item: ItemJson, object: Object3DLike, option?: RendererCudOption): Object3DLike { + const group: THREE.Group = object as THREE.Group + + group.position.set(item.tf[0][0], item.tf[0][1], item.tf[0][2]) + group.rotation.set( + THREE.MathUtils.degToRad(item.tf[1][0]), + THREE.MathUtils.degToRad(item.tf[1][1]), + THREE.MathUtils.degToRad(item.tf[1][2]) + ) + + // 禁止缩放, + item.tf[2][0] = this.defaultScale.x + item.tf[2][1] = this.defaultScale.y + item.tf[2][2] = this.defaultScale.z + + return group + } + dispose() { super.dispose() this.pointMaterial?.dispose()