SceneUtils.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import {
  2. Group,
  3. Mesh
  4. } from '../../../build/three.module.js';
  5. class SceneUtils {
  6. static createMeshesFromInstancedMesh( instancedMesh ) {
  7. const group = new Group();
  8. const count = instancedMesh.count;
  9. const geometry = instancedMesh.geometry;
  10. const material = instancedMesh.material;
  11. for ( let i = 0; i < count; i ++ ) {
  12. const mesh = new Mesh( geometry, material );
  13. instancedMesh.getMatrixAt( i, mesh.matrix );
  14. mesh.matrix.decompose( mesh.position, mesh.quaternion, mesh.scale );
  15. group.add( mesh );
  16. }
  17. group.copy( instancedMesh );
  18. group.updateMatrixWorld(); // ensure correct world matrices of meshes
  19. return group;
  20. }
  21. static createMultiMaterialObject( geometry, materials ) {
  22. const group = new Group();
  23. for ( let i = 0, l = materials.length; i < l; i ++ ) {
  24. group.add( new Mesh( geometry, materials[ i ] ) );
  25. }
  26. return group;
  27. }
  28. static detach( child, parent, scene ) {
  29. console.warn( 'THREE.SceneUtils: detach() has been deprecated. Use scene.attach( child ) instead.' );
  30. scene.attach( child );
  31. }
  32. static attach( child, scene, parent ) {
  33. console.warn( 'THREE.SceneUtils: attach() has been deprecated. Use parent.attach( child ) instead.' );
  34. parent.attach( child );
  35. }
  36. }
  37. export { SceneUtils };