bill 8 months ago
parent
commit
4b45bc27c6

+ 5 - 1
src/api/tagging-position.ts

@@ -23,6 +23,7 @@ interface ServicePosition {
   mat: string
   fontSize: number,
   lineHeight: number,
+  visibilityRange: number
 }
 
 export enum TaggingPositionType {
@@ -38,6 +39,7 @@ export interface TaggingPosition {
   fontSize: number,
   lineHeight: number,
   globalVisibility: boolean
+  visibilityRange: number
 
   type: TaggingPositionType
   mat: Tagging3DProps['mat']
@@ -58,6 +60,7 @@ const serviceToLocal = (position: ServicePosition, taggingId?: Tagging['id']): T
     scale: 1,
     rotation: 0
   },
+  visibilityRange: position.visibilityRange || 30,
   fontSize: position.fontSize || 12,
   lineHeight: position.lineHeight || 1,
 })
@@ -72,7 +75,8 @@ const localToService = (position: TaggingPosition, update = false): PartialProps
   mat: position.mat && JSON.stringify(position.mat),
   normal: JSON.stringify(position.normal),
   fontSize: position.fontSize,
-  lineHeight: position.lineHeight
+  lineHeight: position.lineHeight,
+  visibilityRange: position.visibilityRange 
 })
 
 

+ 3 - 4
src/components/tagging/sign-new.vue

@@ -105,13 +105,12 @@ watchEffect(() => {
 });
 
 const [toCameraDistance] = useCameraChange(() => {
-  console.log(tag.getCameraDisSquared(), Math.pow(30, 2), props.scenePos.id);
   return tag.getCameraDisSquared && tag.getCameraDisSquared();
 });
-const maxDisSqua = Math.pow(30, 2);
-
 const show = computed(
-  () => props.scenePos.globalVisibility || toCameraDistance.value <= maxDisSqua
+  () =>
+    props.scenePos.globalVisibility ||
+    toCameraDistance.value <= Math.pow(props.scenePos.visibilityRange, 2)
 );
 watchEffect(() => tag.visibility(show.value));
 

+ 1 - 1
src/store/tagging-positions.ts

@@ -27,7 +27,7 @@ export const createTaggingPosition = (position: Partial<TaggingPosition> = {}):
   id: createTemploraryID(),
   taggingId: '',
   globalVisibility: false,
-  altitudeAboveGround: 0.5,
+  visibilityRange: 30,
   mat: {
     scale: 1,
     rotation: 0

+ 13 - 0
src/views/tagging-position/sign.vue

@@ -65,6 +65,19 @@
           />
         </template>
       </SignItem>
+      <SignItem
+        label="可见范围"
+        class="item"
+        v-if="!position.globalVisibility"
+        @apply-global="$emit('applyGlobal', 'visibilityRange')"
+      >
+        <Slider
+          v-model:value="position.visibilityRange"
+          :min="10"
+          :max="1000"
+          :step="0.1"
+        />
+      </SignItem>
       <Button block type="primary" danger ghost size="large" @click="$emit('delete')">
         删除
       </Button>