@@ -336,8 +336,30 @@ export class BabylonScene {
336336
337337 let texture : BABYLON . CubeTexture | BABYLON . HDRCubeTexture ;
338338
339- if ( inputs . skybox === "custom" && inputs . textureUrl ) {
340- // Handle custom HDR/EXR textures
339+ if ( inputs . skybox === Inputs . Base . skyboxEnum . default ) {
340+ texture = new BABYLON . CubeTexture ( "https://cdn.jsdelivr.net/gh/bitbybit-dev/bitbybit-assets@0.20.5/textures/skybox/default_skybox/skybox" , this . context . scene ) ;
341+ } else if ( inputs . skybox === Inputs . Base . skyboxEnum . greyGradient ) {
342+ texture = new BABYLON . CubeTexture ( "https://cdn.jsdelivr.net/gh/bitbybit-dev/bitbybit-assets@0.20.5/textures/skybox/grey_gradient/skybox" , this . context . scene ) ;
343+ } else if ( inputs . skybox === Inputs . Base . skyboxEnum . clearSky ) {
344+ texture = BABYLON . CubeTexture . CreateFromPrefilteredData ( "https://cdn.jsdelivr.net/gh/bitbybit-dev/bitbybit-assets@0.20.5/textures/skybox/clear_sky/environment.env" ,
345+ this . context . scene , false , false ) ;
346+ } else if ( inputs . skybox === Inputs . Base . skyboxEnum . city ) {
347+ texture = BABYLON . CubeTexture . CreateFromPrefilteredData ( "https://cdn.jsdelivr.net/gh/bitbybit-dev/bitbybit-assets@0.20.5/textures/skybox/city/environmentSpecular.env" ,
348+ this . context . scene , false , false ) ;
349+ }
350+
351+ this . createSkyboxMesh ( texture , inputs . size , inputs . blur , inputs . hideSkybox , inputs . environmentIntensity ) ;
352+ }
353+
354+ /**
355+ * Enables skybox with custom texture
356+ * @param inputs Skybox configuration
357+ * @group environment
358+ * @shortname skybox
359+ */
360+ enableSkyboxCustomTexture ( inputs : Inputs . BabylonScene . SkyboxCustomTextureDto ) : void {
361+ if ( inputs . textureUrl ) {
362+ let texture : BABYLON . CubeTexture | BABYLON . HDRCubeTexture ;
341363 const textureUrl = inputs . textureUrl ;
342364 const textureSize = inputs . textureSize || 512 ; // Default size
343365
@@ -346,37 +368,17 @@ export class BabylonScene {
346368
347369 if ( urlPath . endsWith ( ".hdr" ) ) {
348370 // Use HDRCubeTexture for .hdr files
349- if ( inputs . hdrTexture ) {
350- texture = new BABYLON . HDRCubeTexture ( textureUrl , this . context . scene , textureSize , false , true , false , true ) ;
351- }
371+ texture = new BABYLON . HDRCubeTexture ( textureUrl , this . context . scene , textureSize , false , true , false , true ) ;
352372 } else if ( urlPath . endsWith ( ".env" ) ) {
353373 texture = BABYLON . CubeTexture . CreateFromPrefilteredData ( inputs . textureUrl ,
354374 this . context . scene , false , false ) ;
355375 } else {
356376 // Fallback to CubeTexture for other formats
357377 texture = new BABYLON . CubeTexture ( textureUrl , this . context . scene ) ;
358378 }
359- } else {
360- if ( inputs . skybox === Inputs . Base . skyboxEnum . default ) {
361- texture = new BABYLON . CubeTexture ( "https://cdn.jsdelivr.net/gh/bitbybit-dev/bitbybit-assets@0.20.5/textures/skybox/default_skybox/skybox" , this . context . scene ) ;
362- } else if ( inputs . skybox === Inputs . Base . skyboxEnum . greyGradient ) {
363- texture = new BABYLON . CubeTexture ( "https://cdn.jsdelivr.net/gh/bitbybit-dev/bitbybit-assets@0.20.5/textures/skybox/grey_gradient/skybox" , this . context . scene ) ;
364- } else if ( inputs . skybox === Inputs . Base . skyboxEnum . clearSky ) {
365- texture = BABYLON . CubeTexture . CreateFromPrefilteredData ( "https://cdn.jsdelivr.net/gh/bitbybit-dev/bitbybit-assets@0.20.5/textures/skybox/clear_sky/environment.env" ,
366- this . context . scene , false , false ) ;
367- } else if ( inputs . skybox === Inputs . Base . skyboxEnum . city ) {
368- texture = BABYLON . CubeTexture . CreateFromPrefilteredData ( "https://cdn.jsdelivr.net/gh/bitbybit-dev/bitbybit-assets@0.20.5/textures/skybox/city/environmentSpecular.env" ,
369- this . context . scene , false , false ) ;
370- }
371- }
372379
373- this . context . scene . getMeshByName ( "bitbybit-hdrSkyBox" ) ?. dispose ( false , true ) ;
374- const skybox = this . context . scene . createDefaultSkybox ( texture , true , inputs . size , inputs . blur , true ) ;
375- skybox . name = "bitbybit-hdrSkyBox" ;
376- if ( inputs . hideSkybox ) {
377- skybox . isVisible = false ;
380+ this . createSkyboxMesh ( texture , inputs . size , inputs . blur , inputs . hideSkybox , inputs . environmentIntensity ) ;
378381 }
379- this . context . scene . environmentIntensity = inputs . environmentIntensity ;
380382 }
381383
382384 /**
@@ -452,4 +454,15 @@ export class BabylonScene {
452454 }
453455 return angle ;
454456 }
457+
458+ private createSkyboxMesh ( texture : BABYLON . BaseTexture , size : number , blur : number , hideSkybox : boolean , environmentIntensity : number ) {
459+ this . context . scene . getMeshByName ( "bitbybit-hdrSkyBox" ) ?. dispose ( false , true ) ;
460+ const skybox = this . context . scene . createDefaultSkybox ( texture , true , size , blur , true ) ;
461+ skybox . name = "bitbybit-hdrSkyBox" ;
462+ if ( hideSkybox ) {
463+ skybox . isVisible = false ;
464+ }
465+ this . context . scene . environmentIntensity = environmentIntensity ;
466+ }
467+
455468}
0 commit comments