|
|
@ -8,7 +8,7 @@ import { loadGlbModule, loadTexture, processModel } from '@/core/ModelUtils.ts' |
|
|
import InstanceMeshManager from '@/core/manager/InstanceMeshManager.ts' |
|
|
import InstanceMeshManager from '@/core/manager/InstanceMeshManager.ts' |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 货架货位渲染器 |
|
|
* 托盘渲染器 |
|
|
*/ |
|
|
*/ |
|
|
export default class PalletRenderer extends BaseRenderer { |
|
|
export default class PalletRenderer extends BaseRenderer { |
|
|
static POINT_NAME = 'pallet_point' |
|
|
static POINT_NAME = 'pallet_point' |
|
|
@ -24,34 +24,38 @@ export default class PalletRenderer extends BaseRenderer { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
palletGeometry: THREE.BufferGeometry |
|
|
palletGeometry: THREE.BufferGeometry |
|
|
palletMaterial: THREE.Material |
|
|
palletMaterial: THREE.MeshPhongMaterial |
|
|
|
|
|
private _isInitialized = false |
|
|
|
|
|
|
|
|
|
|
|
async init() { |
|
|
|
|
|
await super.init() |
|
|
|
|
|
|
|
|
init() { |
|
|
const [glbGroup, palletTexture] = await Promise.all([ |
|
|
return Promise.all([ |
|
|
|
|
|
super.init(), |
|
|
|
|
|
loadGlbModule(MODULE_PALLET_GLB), |
|
|
loadGlbModule(MODULE_PALLET_GLB), |
|
|
loadTexture(MODULE_PALLET_TEX) |
|
|
loadTexture(MODULE_PALLET_TEX) |
|
|
|
|
|
]) |
|
|
|
|
|
|
|
|
]).then(([_, glbGroup, palletTexture]) => { |
|
|
const mesh = glbGroup.children[0] as THREE.Mesh |
|
|
const mesh = glbGroup.children[0] as THREE.Mesh |
|
|
|
|
|
|
|
|
|
|
|
this.palletGeometry = processModel(mesh) |
|
|
this.palletGeometry = processModel(mesh) |
|
|
this.palletMaterial = new THREE.MeshPhongMaterial({ color: 0x2b5d94 }) |
|
|
this.palletMaterial = new THREE.MeshPhongMaterial({ color: 0x2b5d94 }) |
|
|
|
|
|
|
|
|
palletTexture.flipY = true |
|
|
palletTexture.flipY = true |
|
|
palletTexture.wrapS = THREE.RepeatWrapping |
|
|
palletTexture.wrapS = THREE.RepeatWrapping |
|
|
palletTexture.wrapT = THREE.RepeatWrapping |
|
|
palletTexture.wrapT = THREE.RepeatWrapping |
|
|
palletTexture.repeat.set(0.5, 0.5) |
|
|
palletTexture.repeat.set(0.5, 0.5) |
|
|
|
|
|
|
|
|
//@ts-ignore
|
|
|
this.palletMaterial.color.set(this.defaultUserData.color) |
|
|
this.palletMaterial.color.set(this.defaultUserData.color) |
|
|
this.palletMaterial.map = palletTexture |
|
|
//@ts-ignore
|
|
|
this.palletMaterial.needsUpdate = true |
|
|
this.palletMaterial.normalMap = palletTexture |
|
|
|
|
|
}) |
|
|
this._isInitialized = true |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
createPointBasic(item: ItemJson, option?: RendererCudOption): Object3DLike { |
|
|
createPointBasic(item: ItemJson, option?: RendererCudOption): Object3DLike { |
|
|
|
|
|
if (!this._isInitialized) { |
|
|
|
|
|
throw new Error('Renderer not initialized') |
|
|
|
|
|
} |
|
|
return this.pointManager.createByItem(item) |
|
|
return this.pointManager.createByItem(item) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -59,6 +63,9 @@ export default class PalletRenderer extends BaseRenderer { |
|
|
if (!this.tempViewport) { |
|
|
if (!this.tempViewport) { |
|
|
throw new Error('tempViewport is not set.') |
|
|
throw new Error('tempViewport is not set.') |
|
|
} |
|
|
} |
|
|
|
|
|
if (!this._isInitialized) { |
|
|
|
|
|
throw new Error('Renderer not ready') |
|
|
|
|
|
} |
|
|
return this.tempViewport.getOrCreateMeshManager(this.itemTypeName, () => |
|
|
return this.tempViewport.getOrCreateMeshManager(this.itemTypeName, () => |
|
|
// 构建 InstanceMesh 代理对象
|
|
|
// 构建 InstanceMesh 代理对象
|
|
|
new InstanceMeshManager(this.itemTypeName, |
|
|
new InstanceMeshManager(this.itemTypeName, |
|
|
|