From 23152b23d372a601695e7e8676d05023b9725b2d Mon Sep 17 00:00:00 2001
From: liupeng <511646242@qq.com>
Date: Thu, 29 May 2025 14:29:56 +0800
Subject: [PATCH] =?UTF-8?q?=E8=BE=93=E9=80=81=E7=BA=BF=E6=A8=A1=E5=9E=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/assets/images/conveyor/shapes/arrow-right.svg | 1 +
src/assets/images/conveyor/shapes/move.svg | 1 +
src/designer/model3DView/Model3DView.vue | 37 +++++++++++++++++++++--
3 files changed, 36 insertions(+), 3 deletions(-)
create mode 100644 src/assets/images/conveyor/shapes/arrow-right.svg
create mode 100644 src/assets/images/conveyor/shapes/move.svg
diff --git a/src/assets/images/conveyor/shapes/arrow-right.svg b/src/assets/images/conveyor/shapes/arrow-right.svg
new file mode 100644
index 0000000..1e84bea
--- /dev/null
+++ b/src/assets/images/conveyor/shapes/arrow-right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/conveyor/shapes/move.svg b/src/assets/images/conveyor/shapes/move.svg
new file mode 100644
index 0000000..ca40a24
--- /dev/null
+++ b/src/assets/images/conveyor/shapes/move.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/designer/model3DView/Model3DView.vue b/src/designer/model3DView/Model3DView.vue
index 2adf674..a9fa332 100644
--- a/src/designer/model3DView/Model3DView.vue
+++ b/src/designer/model3DView/Model3DView.vue
@@ -85,6 +85,10 @@ import Split from '@/components/split/split.vue'
import SplitArea from '@/components/split/split-area.vue'
import { renderIcon } from '@/utils/webutils.js'
import textureUrl from '@/assets/images/conveyor/shapes/RibSideSkirtThumbnail.jpg'
+import textureUrl2 from '@/assets/images/conveyor/shapes/logo.png'
+import moveUrl from '@/assets/images/conveyor/shapes/move.svg'
+import arrowRightUrl from '@/assets/images/conveyor/shapes/arrow-right.svg'
+// import pointImg from '@/assets/images/logo.png' arrow-right.svg
// DOM refs
const canvasContainer = ref(null)
@@ -165,7 +169,7 @@ watch(() => restate.mode, (newVal) => {
}
})
-function addConveyor(){
+function addConveyor(){//输送线
// 1. 创建几何体:长 10 米,宽 0.8 米
const length = 20; // 长度 (X轴)
const width = 0.8; // 宽度 (Y轴)
@@ -202,8 +206,11 @@ function addConveyor(){
// 放置到合适的位置(如果需要)
conveyorBelt.position.y = height / 2; // 让底部贴地
+ // // 示例:在输送线不同位置添加多个标记
+ addMarkerAt(-9.5, height,0,moveUrl); // 起点
+ addMarkerAt(0, height,0,arrowRightUrl); // 中间
+ addMarkerAt(9.5, height,0,moveUrl); // 终点
scene.add(conveyorBelt)
-
// 动画函数
let offsetSpeed = 0.01; // 控制滚动速度
function animate() {
@@ -225,8 +232,32 @@ function addConveyor(){
}
animate();
});
+}
-
+function addMarkerAt(x, y,z,textUrl, scale = 1) {
+ const loader = new THREE.TextureLoader();
+ loader.load(textUrl, (texture) => {
+ // 创建一个平面作为标记(大小可以调整)
+ const markerGeometry = new THREE.PlaneGeometry(.6 * scale, 0.5 * scale); // 宽高比例保持一致
+
+ const markerMaterial = new THREE.MeshBasicMaterial({
+ map: texture,
+ transparent: true,
+ opacity: 1,
+ depthWrite: false,
+ side: THREE.DoubleSide
+ });
+
+ const marker = new THREE.Mesh(markerGeometry, markerMaterial);
+ let yHeight=y+0.01
+ // 设置位置:位于输送线表面(Y轴略高于输送线一点)
+ marker.position.set(x, yHeight, z); // Y = 输送线高度 + 一点间距
+
+ // 旋转为 X/Z 平面方向(与输送线一致)
+ marker.rotation.x = -Math.PI / 2; // 和 conveyorBelt 一样旋转角度
+ marker.rotation.z = Math.PI / 2; // 在平面上旋转 90 度
+ scene.add(marker);
+ });
}
function initThree() {