|
|
|
@ -7,6 +7,7 @@ import ConveyorToolbox from './ConveyorToolbox.ts' |
|
|
|
import { Line2 } from 'three/examples/jsm/lines/Line2.js' |
|
|
|
import { LineGeometry } from 'three/examples/jsm/lines/LineGeometry.js' |
|
|
|
import { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js' |
|
|
|
import _ from 'lodash' |
|
|
|
|
|
|
|
export default class Conveyor extends ItemTypeLine { |
|
|
|
defaultScale: THREE.Vector3 = new THREE.Vector3(0.25, 0.1, 0.25) |
|
|
|
@ -15,6 +16,8 @@ export default class Conveyor extends ItemTypeLine { |
|
|
|
pointMaterial!: THREE.Material |
|
|
|
|
|
|
|
lineMaterial!: LineMaterial |
|
|
|
lineMaterialTemplate!: LineMaterial |
|
|
|
lineMaterialOutline!: LineMaterial |
|
|
|
|
|
|
|
static POINT_NAME = 'conveyor_point' |
|
|
|
static LINE_NAME = 'conveyor_line' |
|
|
|
@ -28,13 +31,30 @@ export default class Conveyor extends ItemTypeLine { |
|
|
|
alphaToCoverage: true, |
|
|
|
side: THREE.DoubleSide, |
|
|
|
color: 0x0088ff, |
|
|
|
linewidth: 0.8, |
|
|
|
dashed: true, |
|
|
|
resolution: new THREE.Vector2(1, 1), // 需要在afterAddScene中设置
|
|
|
|
dashOffset: 0, |
|
|
|
linewidth: 0.8, |
|
|
|
dashScale: 1, |
|
|
|
dashSize: 0.2, |
|
|
|
gapSize: 0.2, |
|
|
|
worldUnits: true |
|
|
|
// linewidth: 10,
|
|
|
|
// worldUnits: false,
|
|
|
|
// dashSize: 0.2,
|
|
|
|
// gapSize: 0.2,
|
|
|
|
// dashScale: 1
|
|
|
|
}) |
|
|
|
|
|
|
|
this.lineMaterialTemplate = new LineMaterial({ |
|
|
|
color: 0x0088ff, |
|
|
|
linewidth: 0.8, |
|
|
|
worldUnits: true, |
|
|
|
opacity: 0.5, |
|
|
|
transparent: true, |
|
|
|
alphaToCoverage: true, |
|
|
|
depthWrite: false, // 避免深度冲突
|
|
|
|
blending: THREE.NormalBlending |
|
|
|
}) |
|
|
|
|
|
|
|
window['lineMaterial'] = this.lineMaterial // 方便调试查看
|
|
|
|
@ -48,7 +68,7 @@ export default class Conveyor extends ItemTypeLine { |
|
|
|
super.afterAddScene(viewport, scene, objects) |
|
|
|
_.defer(() => { |
|
|
|
const canvas = viewport.renderer.domElement |
|
|
|
this.lineMaterial.resolution.set(canvas.width, canvas.height) |
|
|
|
// this.lineMaterial.resolution.set(canvas.width, canvas.height)
|
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
@ -87,9 +107,14 @@ export default class Conveyor extends ItemTypeLine { |
|
|
|
/** |
|
|
|
* 创建测量线 |
|
|
|
*/ |
|
|
|
createLineBasic(): Line2 { |
|
|
|
createLineBasic(isTemplate?: boolean): THREE.Mesh { |
|
|
|
const geom = new LineGeometry() |
|
|
|
const obj = new Line2(geom, this.lineMaterial) |
|
|
|
let obj: THREE.Mesh |
|
|
|
if (isTemplate) { |
|
|
|
obj = new Line2(geom, this.lineMaterialTemplate) |
|
|
|
} else { |
|
|
|
obj = new Line2(geom, this.lineMaterial) |
|
|
|
} |
|
|
|
obj.frustumCulled = false |
|
|
|
obj.name = Conveyor.LINE_NAME |
|
|
|
obj.uuid = THREE.MathUtils.generateUUID() |
|
|
|
|