diff --git a/src/core/base/BaseRenderer.ts b/src/core/base/BaseRenderer.ts
index e8e48d6..6dc1650 100644
--- a/src/core/base/BaseRenderer.ts
+++ b/src/core/base/BaseRenderer.ts
@@ -7,8 +7,6 @@ import type { LineLike, Object3DLike } from '@/types/ModelTypes.ts'
import { MeshWrap } from '@/core/manager/InstanceMeshManager.ts'
import { getRenderer } from '@/core/manager/ModuleManager.ts'
-debugger
-
/**
* 基本渲染器基类
* 定义了点 / 线如何渲染到 Three.js 场景中.
diff --git a/src/core/manager/EntityManager.ts b/src/core/manager/EntityManager.ts
index 20bb691..7fd4756 100644
--- a/src/core/manager/EntityManager.ts
+++ b/src/core/manager/EntityManager.ts
@@ -473,11 +473,11 @@ export default class EntityManager {
}
}
- appendLineObject(id: string, lines: LineLike) {
+ appendLineObject(id: string, lines: any) {
this.__lineMap.set(id, lines)
}
- findLineObjectById(lineId: string): LineLike | undefined {
+ findLineObjectById(lineId: string): any | undefined {
return this.__lineMap.get(lineId)
}
diff --git a/src/core/manager/WorldModel.ts b/src/core/manager/WorldModel.ts
index 28f9944..9576343 100644
--- a/src/core/manager/WorldModel.ts
+++ b/src/core/manager/WorldModel.ts
@@ -230,5 +230,4 @@ export default class WorldModel {
}
const worldModel = new WorldModel()
-debugger
export { worldModel }
diff --git a/src/editor/ModelMain.vue b/src/editor/ModelMain.vue
index be15ba1..ad5a076 100644
--- a/src/editor/ModelMain.vue
+++ b/src/editor/ModelMain.vue
@@ -12,7 +12,8 @@
+ v-model="worldModelState.runState.currentEnvId">
+
创建运行环境
@@ -21,7 +22,7 @@
+ v-model="worldModelState.runState.timeRate">
@@ -261,12 +262,6 @@ export default {
}
},
watch: {
- 'worldModel.state.project_uuid': {
- handler() {
- this.reloadEnvList()
- },
- immediate: true
- },
hideBottom(value) {
if (value) {
this.$refs.mainSplit.refreshSize([100, 0])
diff --git a/src/example/example1.js b/src/example/example1.js
index 2c72cf1..bbd6389 100644
--- a/src/example/example1.js
+++ b/src/example/example1.js
@@ -376,14 +376,14 @@ export default {
dt: { in: [], out: [], center: [], clxWidth: 1.65, clxDepth: 1.65, clxHeight: 3.393 }
},
{
- id: 'charger1', t: 'charger', v: true,
+ id: 'charger1', t: 'way', v: true,
tf: [[2.696, 0, 8.75], [0, 0, 0], [1, 1, 1]],
- dt: { in: ['8'], out: ['8'], center: [], chargerWidth: 0.53, chargerDepth: 0.275, clxHeight: 0.3 }
+ dt: { in: ['8'], out: ['8'], center: [], isCharger: true }
},
{
- id: 'charger2', t: 'charger', v: true,
+ id: 'charger2', t: 'way', v: true,
tf: [[5.655, 0, 8.75], [0, 0, 0], [1, 1, 1]],
- dt: { in: ['27'], out: ['27'], center: [], chargerWidth: 0.53, chargerDepth: 0.275, clxHeight: 0.3 }
+ dt: { in: ['27'], out: ['27'], center: [], isCharger: true }
},
{
id: 'pallet1122', // 托盘唯一编码
diff --git a/src/modules/measure/MeasureRenderer.ts b/src/modules/measure/MeasureRenderer.ts
index 805158a..083e353 100644
--- a/src/modules/measure/MeasureRenderer.ts
+++ b/src/modules/measure/MeasureRenderer.ts
@@ -7,9 +7,6 @@ import LineSegmentManager, { LineWrap } from '@/core/manager/LineSegmentManager.
import type { LineLike, Object3DLike } from '@/types/ModelTypes.ts'
import InstanceMeshManager from '@/core/manager/InstanceMeshManager.ts'
-debugger
-console.log('MeasureRenderer initialized at', performance.now());
-
/**
* 辅助测量工具渲染器
* 支持 InstanceMesh 和 LineSegment
diff --git a/src/modules/way/WayRenderer.ts b/src/modules/way/WayRenderer.ts
index 594ee71..f655ee2 100644
--- a/src/modules/way/WayRenderer.ts
+++ b/src/modules/way/WayRenderer.ts
@@ -10,6 +10,7 @@ import InstanceMeshManager from '@/core/manager/InstanceMeshManager.ts'
import LineSegmentManager from '@/core/manager/LineSegmentManager.ts'
import { LineMaterial } from 'three/examples/jsm/lines/LineMaterial'
import { getRenderer } from '@/core/manager/ModuleManager.ts'
+import chargerUrl from '@/assets/images/ptr/charger.png'
/**
* AGV行走路线渲染器 point 是二维码站点
@@ -17,7 +18,7 @@ import { getRenderer } from '@/core/manager/ModuleManager.ts'
export default class WayRenderer extends BaseRenderer {
static LABEL_NAME = 'way_label'
static POINT_NAME = 'way_point'
- static LINE_NAME = 'way_line'
+ static CHARGER_POINT_NAME = 'charger'
static GUIDEWAY_LINE_NAME = 'guideway'
static RED_LINE_NAME = 'red_line'
@@ -42,6 +43,7 @@ export default class WayRenderer extends BaseRenderer {
dirGeometry: THREE.PlaneGeometry
dirMaterial: THREE.Material
dir2Material: THREE.Material
+ chargerMaterial: THREE.Material
/**
* 默认点的高度, 防止和地面重合
@@ -58,13 +60,18 @@ export default class WayRenderer extends BaseRenderer {
super.init(),
new THREE.TextureLoader().loadAsync(MoveLinePointPng),
new THREE.TextureLoader().loadAsync(TriangleUrl),
- new THREE.TextureLoader().loadAsync(Triangle2Url)
+ new THREE.TextureLoader().loadAsync(Triangle2Url),
+ new THREE.TextureLoader().loadAsync(chargerUrl)
- ]).then(([_, texture, dirTexture, dir2Texture]) => {
+ ]).then(([_, texture, dirTexture, dir2Texture, chargerTexture]) => {
texture.flipY = false
this.pointGeometry = new THREE.PlaneGeometry(1, 1).rotateX(-Math.PI / 2)
this.pointGeometry.center()
+ this.chargerMaterial = new THREE.MeshLambertMaterial({
+ map: chargerTexture, // 颜色贴图
+ transparent: true // 允许透明纹理
+ })
this.pointMaterial = new THREE.MeshBasicMaterial({
map: texture,
@@ -98,16 +105,35 @@ export default class WayRenderer extends BaseRenderer {
createPointBasic(item: ItemJson, option?: RendererCudOption): Object3DLike {
// 不允许改变高度/角度/大小
- item.tf = [
- [item.tf[0][0], this.defulePositionY, item.tf[0][2]],
- [this.defaultRotation.x, this.defaultRotation.y, this.defaultRotation.z],
- [this.defaultScale.x, this.defaultScale.y, this.defaultScale.z]
- ]
- return this.pointManager.createByItem(item)
+ if (item.dt.isCharger) {
+ return this.createCharger(item)
+
+ } else {
+ item.tf = [
+ [item.tf[0][0], this.defulePositionY, item.tf[0][2]],
+ [this.defaultRotation.x, this.defaultRotation.y, this.defaultRotation.z],
+ [this.defaultScale.x, this.defaultScale.y, this.defaultScale.z]
+ ]
+ return this.pointManager.createByItem(item)
+ }
+ }
+
+ private createCharger(item: ItemJson) {
+ // 创建平面几何体
+ const group = new THREE.Group()
+ group.name = WayRenderer.CHARGER_POINT_NAME
+
+ // 绘制背景矩形框
+ const planeGeometry = new THREE.PlaneGeometry(item.dt.chargerWidth, item.dt.chargerDepth)
+ planeGeometry.rotateX(-Math.PI / 2)
+ const planeMesh = new THREE.Mesh(planeGeometry, this.chargerMaterial)
+ group.add(planeMesh)
+
+ return group
}
createLine(start: ItemJson, end: ItemJson, type: LinkType): Object3DLike {
- if (start.t === this.itemTypeName && end.t === this.itemTypeName) {
+ if ((start.t === this.itemTypeName) && end.t === this.itemTypeName) {
return this._createOrUpdateGuideway(start, end, type)
} else {
// throw new Error('目前只支持二维码站点之间的连接')
@@ -260,6 +286,9 @@ export default class WayRenderer extends BaseRenderer {
*/
afterCreateOrUpdatePoint(item: ItemJson, option: RendererCudOption, object: Object3DLike) {
super.afterCreateOrUpdatePoint(item, option, object)
+ if (item.dt.isCharger) {
+ return
+ }
// 创建一个 id 标签
this.tempViewport.labelManager.createOrUpdateMeshLabel(object, '' + item.id, {