82 lines
2.1 KiB
JavaScript
82 lines
2.1 KiB
JavaScript
import * as THREE from "./three.module.js";
|
|
|
|
// 3D MODEL
|
|
import { GLTFLoader } from './jsm/loaders/GLTFLoader.js';
|
|
import { DRACOLoader } from './jsm/loaders/DRACOLoader.js';
|
|
import { KTX2Loader } from './jsm/loaders/KTX2Loader.js';
|
|
import { MeshoptDecoder } from './jsm/libs/meshopt_decoder.module.js';
|
|
import { FBXLoader } from './jsm/loaders/FBXLoader.js';
|
|
import { OBJLoader } from './jsm/loaders/OBJLoader.js';
|
|
import { STLLoader } from './jsm/loaders/STLLoader.js';
|
|
// IMAGE
|
|
import { RGBELoader } from './jsm/loaders/RGBELoader.js';
|
|
import { EXRLoader } from './jsm/loaders/EXRLoader.js';
|
|
|
|
export const Pool = {
|
|
|
|
renderer: null,
|
|
manager: new THREE.LoadingManager(),
|
|
|
|
loader:{
|
|
|
|
glb:null,
|
|
fbx:null,
|
|
obj:null,
|
|
stl:null,
|
|
|
|
hdr:null,
|
|
exr:null,
|
|
|
|
},
|
|
|
|
getLoader( type ){
|
|
|
|
if(type==='gltf') type = 'glb';
|
|
if(Pool['l_' + type]) return Pool['l_' + type]();
|
|
|
|
},
|
|
|
|
l_exr(){
|
|
if(Pool.loader.exr === null ) Pool.loader.exr = new EXRLoader( Pool.manager );
|
|
return Pool.loader.exr;
|
|
},
|
|
|
|
l_hdr(){
|
|
if(Pool.loader.hdr === null ) Pool.loader.hdr = new RGBELoader( Pool.manager );
|
|
return Pool.loader.hdr;
|
|
},
|
|
|
|
l_obj(){
|
|
if(Pool.loader.obj === null ) Pool.loader.obj = new OBJLoader( Pool.manager );
|
|
return Pool.loader.obj;
|
|
},
|
|
|
|
l_fbx(){
|
|
if(Pool.loader.fbx === null ) Pool.loader.fbx = new FBXLoader( Pool.manager );
|
|
return Pool.loader.fbx;
|
|
},
|
|
|
|
l_stl(){
|
|
if(Pool.loader.stl === null ) Pool.loader.stl = new STLLoader( Pool.manager );
|
|
return Pool.loader.stl;
|
|
},
|
|
|
|
l_glb(){
|
|
if(Pool.loader.glb === null ){
|
|
const dracoPath = new URL(`./jsm/libs/draco/gltf/`, import.meta.url);
|
|
const dracoLoader = new DRACOLoader().setDecoderPath( dracoPath.href )
|
|
dracoLoader.setDecoderConfig({ type: 'js' });
|
|
|
|
const ktx2Path = new URL(`./jsm/libs/basis/`, import.meta.url);
|
|
const ktx2Loader = new KTX2Loader().setTranscoderPath( ktx2Path.href )
|
|
|
|
Pool.loader.glb = new GLTFLoader( Pool.manager )
|
|
.setCrossOrigin('anonymous')
|
|
.setDRACOLoader(dracoLoader)
|
|
.setKTX2Loader(ktx2Loader.detectSupport(Pool.renderer))
|
|
.setMeshoptDecoder(MeshoptDecoder);
|
|
}
|
|
return Pool.loader.glb;
|
|
}
|
|
|
|
} |