Bitbybit Docs
    Preparing search index...

    Class BabylonScene

    作为整体的 BabylonJS 场景:活动相机及其限制、带阴影的灯光、天空盒和环境光照、雾、物理、指针事件、画布背景以及清除所有已绘制内容。场景容纳每个网格、灯光和相机;大多数脚本只在设置光照和相机时接触它一次,然后向其中绘制。

    Index

    Constructors

    background

    • 在场景后面绘制任意 CSS background-image 值,渐变或图像,方法是使场景的清除颜色透明并为画布设置样式。

      Parameters

      Returns { backgroundImage: string }

      已应用的样式

      bitbybit.babylon.scene.canvasCSSBackgroundImage({ cssBackgroundImage: "linear-gradient(to top, #1a1c1f 0%, #93aacd 100%)" });
      
    • 在场景后面沿给定方向绘制两种颜色之间的直线渐变,色标以沿该方向的百分比表示。

      Parameters

      Returns { backgroundImage: string }

      已应用的样式

      bitbybit.babylon.scene.twoColorLinearGradientBackground({ colorFrom: "#1a1c1f", colorTo: "#93aacd", direction: Bit.Inputs.Base.gradientDirectionEnum.toBottom, stopFrom: 0, stopTo: 100 });
      
    • 在场景后面绘制两种颜色之间的圆形渐变,从 position 以给定的 shape 向外扩散,色标以距中心的百分比表示。

      Parameters

      Returns { backgroundImage: string }

      已应用的样式

      bitbybit.babylon.scene.twoColorRadialGradientBackground({ colorFrom: "#1a1c1f", colorTo: "#93aacd", position: Bit.Inputs.Base.gradientPositionEnum.center, stopFrom: 0, stopTo: 100, shape: Bit.Inputs.Base.gradientShapeEnum.circle });
      
    • 在场景后面绘制经过多种颜色的直线渐变,每种颜色有自己的色标百分比;colorsstops 的长度必须相同,否则返回一个错误对象。

      Parameters

      Returns { backgroundImage: string } | { error: string }

      已应用的样式,或当列表长度不一致时的错误信息

      bitbybit.babylon.scene.multiColorLinearGradientBackground({ colors: ["#1a1c1f", "#4a5a7a", "#93aacd"], stops: [0, 50, 100], direction: Bit.Inputs.Base.gradientDirectionEnum.toTop });
      
    • 在场景后面绘制经过多种颜色的圆形渐变,每种颜色有自己的色标百分比;colorsstops 的长度必须相同,否则返回一个错误对象。

      Parameters

      Returns { backgroundImage: string } | { error: string }

      已应用的样式,或当列表长度不一致时的错误信息

      bitbybit.babylon.scene.multiColorRadialGradientBackground({ colors: ["#1a1c1f", "#93aacd"], stops: [0, 100], position: Bit.Inputs.Base.gradientPositionEnum.center, shape: Bit.Inputs.Base.gradientShapeEnum.circle });
      
    • 在场景后面显示一张图像,并用 CSS 背景选项控制它如何重复、缩放、定位和滚动;场景的清除颜色变为透明,使图像透出来。

      Parameters

      Returns {
          backgroundImage: string;
          backgroundRepeat: string;
          backgroundSize: string;
          backgroundPosition: string;
          backgroundAttachment: string;
          backgroundOrigin: string;
          backgroundClip: string;
      }

      已应用的样式

      bitbybit.babylon.scene.canvasBackgroundImage({ imageUrl: "https://example.com/backdrop.jpg", repeat: Bit.Inputs.Base.backgroundRepeatEnum.noRepeat, size: Bit.Inputs.Base.backgroundSizeEnum.cover, position: Bit.Inputs.Base.gradientPositionEnum.center, attachment: Bit.Inputs.Base.backgroundAttachmentEnum.scroll, origin: Bit.Inputs.Base.backgroundOriginClipEnum.paddingBox, clip: Bit.Inputs.Base.backgroundOriginClipEnum.borderBox });
      
    • 用一种纯色填充场景的背景,并移除之前设置的任何画布背景图像或渐变。

      Parameters

      Returns void

      bitbybit.babylon.scene.backgroundColour({ colour: "#1a1c1f" });
      

    camera

    • 使某个相机成为场景渲染所通过的相机,并分离之前活动相机的控制。

      Parameters

      Returns void

      const camera = bitbybit.babylon.camera.arcRotate.create({ radius: 20, target: [0, 0, 0], alpha: 45, beta: 70, lowerBetaLimit: 1, upperBetaLimit: 179, angularSensibilityX: 1000, angularSensibilityY: 1000, panningSensibility: 1000, wheelPrecision: 3, maxZ: 1000 });
      bitbybit.babylon.scene.activateCamera({ camera });
    • 给出场景当前渲染所通过的相机。

      Returns Camera

      当前激活的相机

    • 重新定位默认的公转相机(名为 Camera 的那个),并设置其限制和灵敏度。

      相机被放置在 position 处注视 lookAt;半径、alpha 和 beta 的限制约束它可以缩放和公转的范围,角度以度为单位,灵敏度设置它的响应速度,越低越快。

      Parameters

      Returns void

      bitbybit.babylon.scene.adjustActiveArcRotateCamera({ position: [20, 20, 20], lookAt: [0, 0, 0], lowerRadiusLimit: 5, upperRadiusLimit: 100, lowerBetaLimit: 1, upperBetaLimit: 179, angularSensibilityX: 1000, angularSensibilityY: 1000, panningSensibility: 1000, wheelPrecision: 3, maxZ: 1000 });
      

    environment

    • 从场景中移除绘制的一切:网格、材质、纹理、除默认半球光以外的光源、变换节点、阴影生成器、雾和环境纹理,并在其他相机处于活动状态时恢复默认相机。

      Returns void

      bitbybit.babylon.scene.clearAllDrawn();
      
    • 用内置天空盒之一包围场景,并将其用作反射材质所采用的环境光照。

      blur 柔化可见的天空,environmentIntensity 缩放它照亮场景的程度,hideSkybox 保留光照但隐藏天空本身。

      Parameters

      • inputs: SkyboxDto

        内置天空盒及其尺寸、模糊度、环境强度和可见性

      Returns void

      bitbybit.babylon.scene.enableSkybox({ skybox: Bit.Inputs.Base.skyboxEnum.clearSky, size: 1000, blur: 0.1, environmentIntensity: 0.7, hideSkybox: false });
      
    • 用从你自己的纹理加载的天空盒包围场景,并将其用作环境光照。

      textureUrl 可以指向 .hdr 文件、.env 文件或六张立方体面图像的根路径;没有它时什么也不发生。hideSkybox 保留光照但隐藏天空本身。

      Parameters

      Returns void

      bitbybit.babylon.scene.enableSkyboxCustomTexture({ textureUrl: "https://example.com/env/studio.env", textureSize: 512, size: 1000, blur: 0.1, environmentIntensity: 0.7, hideSkybox: true });
      
    • 用从你自己加载的立方体纹理构建的天空盒包围场景,并将其用作环境光照。

      texture 可以来自 .hdr.env 文件。hideSkybox 保留光照但隐藏天空本身;enableGroundProjection 将天空的下部压平为模型所站立的地面。

      Parameters

      • inputs: SkyboxFromTextureDto

        立方体纹理、天空盒尺寸、模糊度、环境强度、可见性和地面投影

      Returns void

      const texture = new BABYLON.CubeTexture("https://example.com/env/studio", bitbybit.babylon.scene.getScene());
      bitbybit.babylon.scene.enableSkyboxFromTexture({ texture, size: 1000, blur: 0.1, environmentIntensity: 0.7, hideSkybox: false, enableGroundProjection: true, projectedGroundRadius: 20, projectedGroundHeight: 3 });
    • 将远处的几何渐隐为一种颜色,就像雾霾一样。

      linearstartend 渐隐,以场景单位表示;exponentialexponentialSquared 改为按 density 渐隐,忽略距离;none 关闭雾。

      Parameters

      • inputs: FogDto

        雾的模式、颜色、密度以及起始和结束距离

      Returns void

      bitbybit.babylon.scene.fog({ mode: Bit.Inputs.Base.fogModeEnum.linear, color: "#ffffff", density: 0.1, start: 50, end: 300 });
      

    lights

    • drawPointLight 一样向场景添加点光源,但不返回它;适用于只需要光源存在的脚本。

      Parameters

      • inputs: PointLightDto

        灯光的位置、颜色、强度、灯泡半径和阴影设置

      Returns void

      bitbybit.babylon.scene.drawPointLightNoReturn({ position: [10, 20, 10], intensity: 2000, diffuse: "#ffffff", specular: "#ffffff", radius: 0.5, enableShadows: true, shadowGeneratorMapSize: 1024, shadowDarkness: 0, transparencyShadow: false, shadowUsePercentageCloserFiltering: true, shadowContactHardeningLightSizeUVRatio: 0.2, shadowBias: 0.0001, shadowNormalBias: 0.002, shadowMaxZ: 1000, shadowMinZ: 0.1, shadowRefreshRate: 1 });
      
    • 列出通过本库创建的光源的阴影生成器,每个启用了阴影的光源一个;绘制的网格会作为投射体注册到它们。

      Returns ShadowGenerator[]

      阴影生成器,或空列表

    • 添加一个从某点向各个方向发光的光源,像灯泡一样,在其位置可选地带一个发光的小球。

      enableShadows 为 true 时会创建阴影生成器,场景中已有的每个网格都投射和接收阴影;intensity 是光通量,因此数千的值是正常的。

      Parameters

      • inputs: PointLightDto

        灯光的位置、颜色、强度、灯泡半径和阴影设置

      Returns PointLight

      点光源

      const light = bitbybit.babylon.scene.drawPointLight({ position: [10, 20, 10], intensity: 2000, diffuse: "#ffffff", specular: "#ffffff", radius: 0.5, enableShadows: true, shadowGeneratorMapSize: 1024, shadowDarkness: 0, transparencyShadow: false, shadowUsePercentageCloserFiltering: true, shadowContactHardeningLightSizeUVRatio: 0.2, shadowBias: 0.0001, shadowNormalBias: 0.002, shadowMaxZ: 1000, shadowMinZ: 0.1, shadowRefreshRate: 1 });
      
    • drawDirectionalLight 一样向场景添加平行光,但不返回它;适用于只需要光源存在的脚本。

      Parameters

      Returns void

      bitbybit.babylon.scene.drawDirectionalLightNoReturn({ direction: [-100, -100, -100], intensity: 0.5, diffuse: "#ffffff", specular: "#ffffff", enableShadows: true, shadowGeneratorMapSize: 1024, shadowDarkness: 0, transparencyShadow: false, shadowUsePercentageCloserFiltering: true, shadowContactHardeningLightSizeUVRatio: 0.2, shadowBias: 0.0001, shadowNormalBias: 0.002, shadowMaxZ: 1000, shadowMinZ: 0, shadowRefreshRate: 1 });
      
    • 添加一个沿 direction 处处以相同方式照射的光源,像太阳一样。

      enableShadows 为 true 时会创建阴影生成器,场景中已有的每个网格都投射和接收阴影;intensity 是一个普通系数,1 为全强度。

      Parameters

      Returns DirectionalLight

      平行光

      const sun = bitbybit.babylon.scene.drawDirectionalLight({ direction: [-100, -100, -100], intensity: 0.5, diffuse: "#ffffff", specular: "#ffffff", enableShadows: true, shadowGeneratorMapSize: 1024, shadowDarkness: 0, transparencyShadow: false, shadowUsePercentageCloserFiltering: true, shadowContactHardeningLightSizeUVRatio: 0.2, shadowBias: 0.0001, shadowNormalBias: 0.002, shadowMaxZ: 1000, shadowMinZ: 0, shadowRefreshRate: 1 });
      

    system

    • 在 BabylonJS 默认使用的左手坐标系和右手坐标系之间切换场景,右手系是大多数 CAD 工具和 glTF 的约定;活动相机会被刷新以匹配。

      Parameters

      Returns void

      bitbybit.babylon.scene.useRightHandedSystem({ use: true });