123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import * as THREE from 'three'
- import {clearFids} from '../core/dyWoker'
- import {threeLayer, vector} from './initScene3D'
- const frustum = new THREE.Frustum();
- const cameraViewProjectionMatrix = new THREE.Matrix4();
- function meshStatus() {
- let camera = threeLayer.getCamera();
- if (!camera) return
- camera.updateMatrixWorld();
- camera.matrixWorldInverse.getInverse(camera.matrixWorld);
- cameraViewProjectionMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);
- frustum.setFromMatrix(cameraViewProjectionMatrix);
- let scene = threeLayer.getScene()
- let children = scene.children
- for (let i = 0; i < children.length; i++) {
- let m = children[i]
- if (m.type === 'Mesh') {
- let viewMesh = frustum.intersectsObject(m)
- if (!viewMesh) {
- scene.remove(m)
- m.isRemove = true
- vector.removeGeometry(m.texts)
- clearFids(m.fids)
- i--
- }
- }
- }
- }
- function unMeshAll () {
- let scene = threeLayer.getScene()
- let children = scene.children
- for (let i = 0; i < children.length; i++) {
- let m = children[i]
- if (m.type === 'Mesh') {
- scene.remove(m)
- m.isRemove = true
- vector.removeGeometry(m.texts)
- clearFids(m.fids)
- i--
- }
- }
- }
- export {
- unMeshAll,
- meshStatus
- }
|