Web 3D 框架简介

前言

3D游戏引擎的历史可以追溯到20世纪80年代末和90年代初。当时,计算机技术迅速发展,人们开始对图形和游戏感兴趣。以下是3D游戏引擎的历史故事:

早期引擎的诞生(1980-1990年代)

在这个时期,一些早期的3D游戏引擎开始出现。其中一个著名的例子是id Software开发的Doom引擎,该引擎是第一个在主流市场上取得成功的3D游戏引擎。它采用了一种被称为"重建"的技术,可以在限制的硬件资源下实现3D效果。

商业化时代的到来(1990-2000年代)

随着3D游戏的普及,商业化的3D游戏引擎开始涌现。其中最著名的是id Software开发的Quake引擎,它是第一个具有实时3D渲染和支持网络游戏的引擎。Quake引擎的成功推动了更多的公司开始开发自己的3D游戏引擎,如Epic Games的Unreal Engine和Crytek的CryEngine。

开源引擎的崛起(2000年代后期)

在2000年代后期,一些开源的3D游戏引擎开始崛起。其中最著名的是Unity引擎,它提供了一个友好的界面和工具,使得游戏开发者可以轻松地创建和发布游戏。此外,还有一些其他开源引擎,如Ogre3D和Godot等,它们也受到了广泛的关注和采用。

HTML5和WebGL的兴起(2010年代)

随着HTML5和WebGL技术的发展,3D游戏引擎开始向Web领域扩展。这使得开发者可以在浏览器中创建和运行高质量的3D游戏,而无需额外的插件。一些主要的Web 3D游戏引擎,如Three.js和Babylon.js,开始出现,并得到了广泛的使用。

Web 3D 框架

Unity 3D ,团结引擎,基于 Unity 2022LTS。是 Unity 中国研发团队推出的 Unity 中国版引擎,专为中国开发者定制的实时3D引擎,它以 Unity 2022 LTS 为研发基础,推出了微信小游戏解决方案、团结引擎车机版,赋予小游戏和智能汽车领域的开发者,以更强劲的创作动能,是 Unity 中国加速本土化进程的里程碑。

f692f8ec80dc44ab8c1aeb7b80e829f7.png

Three.js,基于WebGL,提供了一些简单易用的API,使用户能够轻松地创建和显示3D对象、场景、光照和相机。支持多种渲染效果,如纹理映射、阴影、反射等,可以在网页中实现逼真的3D效果。它还提供了一些辅助功能,例如加载模型和动画、进行交互和控制等。应用于游戏开发、虚拟现实、数据可视化等领域。具有强大的灵活性和可扩展性,用户可以通过自定义着色器和材质来实现更高级的效果,还可以通过添加插件和扩展来增加功能。它的文档齐全且有很多示例和教程可供参考,对于初学者和有经验的开发者来说都是一个很好的选择。

4ca075ba0faa434fa54bb8c21fe7dabf.png

PlayCanvas,基于Web的实时图形引擎,提供了一整套工具和功能,可视化场景设计器 workflow,能够直观地创建和编辑游戏内容。这个编辑器支持实时预览和调试功能,基于WebGL和WebVR,以实现高质量的实时渲染效果。开发者可以利用引擎内置的渲染器和材质系统来创建逼真的光照和阴影效果。集成了物理引擎,可以模拟真实世界中的物理效果,如重力、碰撞和刚体运动。

b8cfe26ce65940e89f920e86e494fed9.png

babylon.js ,巴比伦 js,由微软开发和维护的基于WebGL技术 Web3D 的开源游戏引擎,用于创建高性能、交互式的3D图形应用程序。它提供了一个简单易用的API,可以实现各种效果,如渲染、动画、物理模拟、碰撞检测等。可以创建出丰富、互动性强的3D图形应用程序,如游戏、虚拟现实体验、可视化效果等。

209b507ebc7e440781e62236196f5de0.png

9fb8387fc3574384a84005970348e53e.png

CopperCube ,可视化编辑器类型,使用户可以轻松地创建三维场景。它提供了多种内置工具和特性,包括场景编辑器、物理模拟、碰撞检测、动画编辑器等,使开发人员可以在不编写任何代码的情况下创建复杂的三维应用程序。可以使用JavaScript语言来自定义应用程序的行为和交互。它还支持导入和使用3D模型、贴图和音频文件,以及创建动画效果和粒子效果。

c30491e3e85c4195aac6b9e4fc6d2994.png

a5bf9e5617004086a3cc41c099dc4875.png

​​​​​​A-frame ,用于构建虚拟现实(VR)和增强现实(AR)体验的Web开发框架。使用简单的HTML标签来创建三维图形和交互元素。它提供了一组易于使用的组件和实体,包括摄像机、光源、几何体、材质等,用于构建虚拟世界中的对象和场景。简单易用的API和强大的可扩展性。开发者可以使用JavaScript编写自定义组件,实现更复杂的交互行为和特效。同时,A-Frame也与其他Web技术无缝集成,可以与CSS、HTML、JavaScript和Web API进行交互。

d0216147934c4c6cb6c342425d885d2b.png

使用Babylon.js小试牛刀

Babylon.js inspector 检查器是一个可视化调试工具,旨在帮助您确定场景中可能存在的问题。
提供多种工具,如:
场景的层次视图
使用多个特性栅格可以动态更改对象特性
特定的辅助对象,如骨架查看器等
 

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Babylon.js 基础</title>
  <style>
    html,
    body {
      overflow: hidden;
      width: 100%;
      height: 100%;
      margin: 0;
      padding: 0;
    }

    #renderCanvas {
      width: 100%;
      height: 100%;
      touch-action: none;
    }
  </style>
  <!--https://doc.cnbabylon.com/3-0-how-to-get-babylon-js/-->
  <!--基础Babylonjs包-->
  <script src="https://cdn.cnbabylon.com/babylon.js"></script>
  <!--用于生成材质-->
  <script src="https://cdn.cnbabylon.com/materialsLibrary/babylonjs.materials.min.js"></script>
  <!--用于加载素材-->
  <script src="https://cdn.cnbabylon.com/loaders/babylonjs.loaders.min.js"></script>
  <script src="https://cdn.cnbabylon.com/postProcessesLibrary/babylonjs.postProcess.min.js"></script>
  <script src="https://cdn.cnbabylon.com/proceduralTexturesLibrary/babylonjs.proceduralTextures.min.js"></script>
  <script src="https://cdn.cnbabylon.com/serializers/babylonjs.serializers.min.js"></script>
  <!--GUI 用户交互页面-->
  <script src="https://cdn.cnbabylon.com/gui/babylon.gui.min.js"></script>
  <script src="https://cdn.babylonjs.com/Oimo.js"></script>
  
</head>

<body>
  <canvas id="renderCanvas"></canvas>
  <script>
  let sphere = null;
  let box = null;
  let ground = null;
  const Assets = {
		materials: {
			checkerboard_basecolor: {
				path: "https://assets.babylonjs.com/materials/checkerboard/checkerboard_basecolor.png",
				rootUrl: "https://assets.babylonjs.com/materials/checkerboard/",
				filename: "checkerboard_basecolor.png"
			},
			checkerboard_metallicRoughness: {
				path: "https://assets.babylonjs.com/materials/checkerboard/checkerboard_metallicRoughness.png",
				rootUrl: "https://assets.babylonjs.com/materials/checkerboard/",
				filename: "checkerboard_metallicRoughness.png"
			},
			checkerboard_normal: {
				path: "https://assets.babylonjs.com/materials/checkerboard/checkerboard_normal.png",
				rootUrl: "https://assets.babylonjs.com/materials/checkerboard/",
				filename: "checkerboard_normal.png"
			}
		},
		meshes: {
			aerobatic_plane: {
				path: "https://assets.babylonjs.com/meshes/aerobatic_plane.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "aerobatic_plane.glb"
			},
			alien: {
				path: "https://assets.babylonjs.com/meshes/alien.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "alien.glb"
			},
			Alien: {
				path: "https://assets.babylonjs.com/meshes/Alien/Alien.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Alien/",
				filename: "Alien.gltf"
			},
			AlphaBlendModeTest: {
				path: "https://assets.babylonjs.com/meshes/AlphaBlendModeTest.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "AlphaBlendModeTest.glb"
			},
			AttenuationTest: {
				path: "https://assets.babylonjs.com/meshes/AttenuationTest/AttenuationTest.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/AttenuationTest/",
				filename: "AttenuationTest.gltf"
			},
			babylonBuoy: {
				path: "https://assets.babylonjs.com/meshes/babylonBuoy.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "babylonBuoy.glb"
			},
			babylonJS_logo_v3: {
				path: "https://assets.babylonjs.com/meshes/BabylonJS-logo/v3/babylonJS_logo_v3.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/BabylonJS-logo/v3/",
				filename: "babylonJS_logo_v3.babylon"
			},
			Babylogo: {
				path: "https://assets.babylonjs.com/meshes/BabylonJS-logo/v1-2/Babylogo.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/BabylonJS-logo/v1-2/",
				filename: "Babylogo.babylon"
			},
			babylonJS_logo_solid_v3: {
				path: "https://assets.babylonjs.com/meshes/BabylonJS-logo/v3/babylonJS_logo_solid_v3.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/BabylonJS-logo/v3/",
				filename: "babylonJS_logo_solid_v3.babylon"
			},
			ballMesh: {
				path: "https://assets.babylonjs.com/meshes/ballMesh.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "ballMesh.glb"
			},
			blackPearl: {
				path: "https://assets.babylonjs.com/meshes/blackPearl.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "blackPearl.glb"
			},
			boombox: {
				path: "https://assets.babylonjs.com/meshes/boombox.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "boombox.glb"
			},
			BoomBox: {
				path: "https://assets.babylonjs.com/meshes/BoomBox/BoomBox.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/BoomBox/",
				filename: "BoomBox.gltf"
			},
			UnlitBoomBox: {
				path: "https://assets.babylonjs.com/meshes/BoomBox/UnlitBoomBox.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/BoomBox/",
				filename: "UnlitBoomBox.gltf"
			},
			both_houses_scene: {
				path: "https://assets.babylonjs.com/meshes/both_houses_scene.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "both_houses_scene.glb"
			},
			box: {
				path: "https://assets.babylonjs.com/meshes/box.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "box.glb"
			},
			Box_extras: {
				path: "https://assets.babylonjs.com/meshes/Box/Box_extras.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Box/",
				filename: "Box_extras.gltf"
			},
			Box: {
				path: "https://assets.babylonjs.com/meshes/Box/Box.obj",
				rootUrl: "https://assets.babylonjs.com/meshes/Box/",
				filename: "Box.obj"
			},
			BrainStem: {
				path: "https://assets.babylonjs.com/meshes/BrainStem/BrainStem.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/BrainStem/",
				filename: "BrainStem.gltf"
			},
			Buggy: {
				path: "https://assets.babylonjs.com/meshes/Buggy/glTF/Buggy.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Buggy/glTF/",
				filename: "Buggy.gltf"
			},
			candle: {
				path: "https://assets.babylonjs.com/meshes/candle.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "candle.babylon"
			},
			car: {
				path: "https://assets.babylonjs.com/meshes/car.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "car.glb"
			},
			CarbonFiberWheel: {
				path: "https://assets.babylonjs.com/meshes/CarbonFiberWheel.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "CarbonFiberWheel.glb"
			},
			Chair: {
				path: "https://assets.babylonjs.com/meshes/Chair/Chair.obj",
				rootUrl: "https://assets.babylonjs.com/meshes/Chair/",
				filename: "Chair.obj"
			},
			Channel9: {
				path: "https://assets.babylonjs.com/meshes/Channel9/Channel9.stl",
				rootUrl: "https://assets.babylonjs.com/meshes/Channel9/",
				filename: "Channel9.stl"
			},
			substanceShaderBall: {
				path: "https://assets.babylonjs.com/meshes/ClearCoatShaderBall/substanceShaderBall.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/ClearCoatShaderBall/",
				filename: "substanceShaderBall.gltf"
			},
			ClearCoatTest: {
				path: "https://assets.babylonjs.com/meshes/ClearCoatTest/ClearCoatTest.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/ClearCoatTest/",
				filename: "ClearCoatTest.gltf"
			},
			cloth_meshV1: {
				path: "https://assets.babylonjs.com/meshes/cloth/cloth_meshV1.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/cloth/",
				filename: "cloth_meshV1.glb"
			},
			cloth_meshV2: {
				path: "https://assets.babylonjs.com/meshes/cloth/cloth_meshV2.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/cloth/",
				filename: "cloth_meshV2.glb"
			},
			cloth_meshV3: {
				path: "https://assets.babylonjs.com/meshes/cloth/cloth_meshV3.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/cloth/",
				filename: "cloth_meshV3.glb"
			},
			cloth_meshV4: {
				path: "https://assets.babylonjs.com/meshes/cloth/cloth_meshV4.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/cloth/",
				filename: "cloth_meshV4.glb"
			},
			cloth_meshV5: {
				path: "https://assets.babylonjs.com/meshes/cloth/cloth_meshV5.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/cloth/",
				filename: "cloth_meshV5.glb"
			},
			cloth_meshV6: {
				path: "https://assets.babylonjs.com/meshes/cloth/cloth_meshV6.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/cloth/",
				filename: "cloth_meshV6.glb"
			},
			cloth_meshV7: {
				path: "https://assets.babylonjs.com/meshes/cloth/cloth_meshV7.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/cloth/",
				filename: "cloth_meshV7.glb"
			},
			cloth_meshV8: {
				path: "https://assets.babylonjs.com/meshes/cloth/cloth_meshV8.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/cloth/",
				filename: "cloth_meshV8.glb"
			},
			cloth_meshV9: {
				path: "https://assets.babylonjs.com/meshes/cloth/cloth_meshV9.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/cloth/",
				filename: "cloth_meshV9.glb"
			},
			clothFolds: {
				path: "https://assets.babylonjs.com/meshes/clothFolds.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "clothFolds.glb"
			},
			generic: {
				path: "https://assets.babylonjs.com/meshes/controllers/generic/generic.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/controllers/generic/",
				filename: "generic.babylon"
			},
			left: {
				path: "https://assets.babylonjs.com/meshes/controllers/oculusQuest/left.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/controllers/oculusQuest/",
				filename: "left.babylon"
			},
			right: {
				path: "https://assets.babylonjs.com/meshes/controllers/oculusQuest/right.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/controllers/oculusQuest/",
				filename: "right.babylon"
			},
			wand: {
				path: "https://assets.babylonjs.com/meshes/controllers/vive/wand.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/controllers/vive/",
				filename: "wand.babylon"
			},
			cornellBox: {
				path: "https://assets.babylonjs.com/meshes/CornellBox/cornellBox.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/CornellBox/",
				filename: "cornellBox.glb"
			},
			D20_Animation: {
				path: "https://assets.babylonjs.com/meshes/D20_Animation.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "D20_Animation.glb"
			},
			anisotropyMesh: {
				path: "https://assets.babylonjs.com/meshes/Demos/anisotropy/anisotropyMesh.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/anisotropy/",
				filename: "anisotropyMesh.glb"
			},
			morphLoader: {
				path: "https://assets.babylonjs.com/meshes/Demos/mograph/morphLoader.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/mograph/",
				filename: "morphLoader.glb"
			},
			lightFixture: {
				path: "https://assets.babylonjs.com/meshes/Demos/nmeGlow/lightFixture.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/nmeGlow/",
				filename: "lightFixture.glb"
			},
			riggedMesh: {
				path: "https://assets.babylonjs.com/meshes/Demos/retargeting/riggedMesh.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/retargeting/",
				filename: "riggedMesh.glb"
			},
			lightPaddle: {
				path: "https://assets.babylonjs.com/meshes/Demos/saber/lightPaddle.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/saber/",
				filename: "lightPaddle.glb"
			},
			BabylonShaderBall_Simple: {
				path: "https://assets.babylonjs.com/meshes/shaderBall/BabylonShaderBall_Simple.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/shaderBall/",
				filename: "BabylonShaderBall_Simple.gltf"
			},
			sign: {
				path: "https://assets.babylonjs.com/meshes/Demos/Snow_Man_Scene/sign.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/Snow_Man_Scene/",
				filename: "sign.glb"
			},
			snowBall: {
				path: "https://assets.babylonjs.com/meshes/Demos/Snow_Man_Scene/snowBall.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/Snow_Man_Scene/",
				filename: "snowBall.glb"
			},
			snowField: {
				path: "https://assets.babylonjs.com/meshes/Demos/Snow_Man_Scene/snowField.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/Snow_Man_Scene/",
				filename: "snowField.glb"
			},
			snowMan: {
				path: "https://assets.babylonjs.com/meshes/Demos/Snow_Man_Scene/snowMan.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/Snow_Man_Scene/",
				filename: "snowMan.glb"
			},
			marineGround: {
				path: "https://assets.babylonjs.com/meshes/Demos/underWaterReflections/marineGround.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/underWaterReflections/",
				filename: "marineGround.glb"
			},
			runeSword: {
				path: "https://assets.babylonjs.com/meshes/Demos/weaponsDemo/meshes/runeSword.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/weaponsDemo/meshes/",
				filename: "runeSword.glb"
			},
			greySnapper_vertColor: {
				path: "https://assets.babylonjs.com/meshes/Demos/UnderWaterScene/fish/greySnapper_vertColor.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/UnderWaterScene/fish/",
				filename: "greySnapper_vertColor.glb"
			},
			underwaterGround: {
				path: "https://assets.babylonjs.com/meshes/Demos/UnderWaterScene/ground/underwaterGround.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/UnderWaterScene/ground/",
				filename: "underwaterGround.glb"
			},
			underwaterSceneNavMesh: {
				path: "https://assets.babylonjs.com/meshes/Demos/UnderWaterScene/navMesh/underwaterSceneNavMesh.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/UnderWaterScene/navMesh/",
				filename: "underwaterSceneNavMesh.glb"
			},
			underwaterSceneShadowCatcher: {
				path: "https://assets.babylonjs.com/meshes/Demos/UnderWaterScene/shadows/underwaterSceneShadowCatcher.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/UnderWaterScene/shadows/",
				filename: "underwaterSceneShadowCatcher.glb"
			},
			underwaterScene: {
				path: "https://assets.babylonjs.com/meshes/Demos/UnderWaterScene/underwaterScene.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/UnderWaterScene/",
				filename: "underwaterScene.glb"
			},
			underwaterSceneRocksBarnaclesMussels: {
				path: "https://assets.babylonjs.com/meshes/Demos/UnderWaterScene/underwaterSceneRocksBarnaclesMussels.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/UnderWaterScene/",
				filename: "underwaterSceneRocksBarnaclesMussels.glb"
			},
			frostAxe_noMorph: {
				path: "https://assets.babylonjs.com/meshes/Demos/weaponsDemo/meshes/frostAxe_noMorph.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/weaponsDemo/meshes/",
				filename: "frostAxe_noMorph.glb"
			},
			frostAxe: {
				path: "https://assets.babylonjs.com/meshes/Demos/weaponsDemo/meshes/frostAxe.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/weaponsDemo/meshes/",
				filename: "frostAxe.glb"
			},
			gemOnly: {
				path: "https://assets.babylonjs.com/meshes/Demos/weaponsDemo/meshes/gemOnly.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/weaponsDemo/meshes/",
				filename: "gemOnly.glb"
			},
			moltenDagger: {
				path: "https://assets.babylonjs.com/meshes/Demos/weaponsDemo/meshes/moltenDagger.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/weaponsDemo/meshes/",
				filename: "moltenDagger.glb"
			},
			sword_noMat: {
				path: "https://assets.babylonjs.com/meshes/Demos/weaponsDemo/meshes/sword_noMat.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Demos/weaponsDemo/meshes/",
				filename: "sword_noMat.glb"
			},
			dude: {
				path: "https://assets.babylonjs.com/meshes/Dude/dude.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/Dude/",
				filename: "dude.babylon"
			},
			dummy2: {
				path: "https://assets.babylonjs.com/meshes/dummy2.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "dummy2.babylon"
			},
			dummy3: {
				path: "https://assets.babylonjs.com/meshes/dummy3.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "dummy3.babylon"
			},
			Elf_allAnimations: {
				path: "https://assets.babylonjs.com/meshes/Elf/Elf_allAnimations.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Elf/",
				filename: "Elf_allAnimations.gltf"
			},
			Elf_die: {
				path: "https://assets.babylonjs.com/meshes/Elf/Elf_die.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Elf/",
				filename: "Elf_die.gltf"
			},
			Elf_run: {
				path: "https://assets.babylonjs.com/meshes/Elf/Elf_run.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Elf/",
				filename: "Elf_run.gltf"
			},
			Elf: {
				path: "https://assets.babylonjs.com/meshes/Elf/Elf.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Elf/",
				filename: "Elf.gltf"
			},
			emoji_heart: {
				path: "https://assets.babylonjs.com/meshes/emoji_heart.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "emoji_heart.glb"
			},
			ExplodingBarrel: {
				path: "https://assets.babylonjs.com/meshes/ExplodingBarrel.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "ExplodingBarrel.glb"
			},
			fish: {
				path: "https://assets.babylonjs.com/meshes/fish.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "fish.glb"
			},
			flightHelmet: {
				path: "https://assets.babylonjs.com/meshes/flightHelmet.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "flightHelmet.glb"
			},
			FlightHelmet: {
				path: "https://assets.babylonjs.com/meshes/FlightHelmetKTX/FlightHelmet.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/FlightHelmetKTX/",
				filename: "FlightHelmet.gltf"
			},
			dragon: {
				path: "https://assets.babylonjs.com/meshes/Georgia-Tech-Dragon/dragon.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Georgia-Tech-Dragon/",
				filename: "dragon.glb"
			},
			dragonUV: {
				path: "https://assets.babylonjs.com/meshes/Georgia-Tech-Dragon/dragonUV.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Georgia-Tech-Dragon/",
				filename: "dragonUV.glb"
			},
			GoldbergScene: {
				path: "https://assets.babylonjs.com/meshes/GoldbergScene.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "GoldbergScene.babylon"
			},
			goldbergTest: {
				path: "https://assets.babylonjs.com/meshes/goldbergTest.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "goldbergTest.babylon"
			},
			l_hand_lhs: {
				path: "https://assets.babylonjs.com/meshes/HandMeshes/l_hand_lhs.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/HandMeshes/",
				filename: "l_hand_lhs.glb"
			},
			l_hand_rhs: {
				path: "https://assets.babylonjs.com/meshes/HandMeshes/l_hand_rhs.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/HandMeshes/",
				filename: "l_hand_rhs.glb"
			},
			r_hand_lhs: {
				path: "https://assets.babylonjs.com/meshes/HandMeshes/r_hand_lhs.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/HandMeshes/",
				filename: "r_hand_lhs.glb"
			},
			r_hand_rhs: {
				path: "https://assets.babylonjs.com/meshes/HandMeshes/r_hand_rhs.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/HandMeshes/",
				filename: "r_hand_rhs.glb"
			},
			haunted_house: {
				path: "https://assets.babylonjs.com/meshes/haunted_house.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "haunted_house.glb"
			},
			studio: {
				path: "https://assets.babylonjs.com/meshes/hdri/studioLighting/blender/blenderStudio/studio.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/hdri/studioLighting/blender/blenderStudio/",
				filename: "studio.gltf"
			},
			hexTile: {
				path: "https://assets.babylonjs.com/meshes/hexTile.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "hexTile.glb"
			},
			holiday2021: {
				path: "https://assets.babylonjs.com/meshes/holiday2021.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "holiday2021.glb"
			},
			house_scene: {
				path: "https://assets.babylonjs.com/meshes/house_scene.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "house_scene.glb"
			},
			HVGirl: {
				path: "https://assets.babylonjs.com/meshes/HVGirl.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "HVGirl.glb"
			},
			KHR_materials_volume_testing: {
				path: "https://assets.babylonjs.com/meshes/KHR_materials_volume_testing.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "KHR_materials_volume_testing.glb"
			},
			lamp: {
				path: "https://assets.babylonjs.com/meshes/lamp.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "lamp.babylon"
			},
			head: {
				path: "https://assets.babylonjs.com/meshes/Lee-Perry-Smith-Head/head.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/Lee-Perry-Smith-Head/",
				filename: "head.glb"
			},
			LevelOfDetail: {
				path: "https://assets.babylonjs.com/meshes/Tests/LevelOfDetail/LevelOfDetail.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/LevelOfDetail/",
				filename: "LevelOfDetail.gltf"
			},
			marble: {
				path: "https://assets.babylonjs.com/meshes/Marble/marble/marble.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Marble/marble/",
				filename: "marble.gltf"
			},
			marbleTower: {
				path: "https://assets.babylonjs.com/meshes/Marble/marbleTower/marbleTower.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Marble/marbleTower/",
				filename: "marbleTower.gltf"
			},
			miniBar2: {
				path: "https://assets.babylonjs.com/meshes/miniBar2.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "miniBar2.glb"
			},
			morphTargetBars: {
				path: "https://assets.babylonjs.com/meshes/morphTargetBars.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "morphTargetBars.glb"
			},
			bars: {
				path: "https://assets.babylonjs.com/meshes/morphTargetDemo/bars.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/morphTargetDemo/",
				filename: "bars.glb"
			},
			"mrtk-fluent-backplate": {
				path: "https://assets.babylonjs.com/meshes/MRTK/mrtk-fluent-backplate.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/MRTK/",
				filename: "mrtk-fluent-backplate.glb"
			},
			"mrtk-fluent-button": {
				path: "https://assets.babylonjs.com/meshes/MRTK/mrtk-fluent-button.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/MRTK/",
				filename: "mrtk-fluent-button.glb"
			},
			octopus_customRig: {
				path: "https://assets.babylonjs.com/meshes/octopus_customRig.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "octopus_customRig.glb"
			},
			PBR_Spheres: {
				path: "https://assets.babylonjs.com/meshes/PBR_Spheres.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "PBR_Spheres.glb"
			},
			pill: {
				path: "https://assets.babylonjs.com/meshes/pill.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "pill.glb"
			},
			cannon: {
				path: "https://assets.babylonjs.com/meshes/pirateFort/cannon.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/pirateFort/",
				filename: "cannon.glb"
			},
			pirateFort: {
				path: "https://assets.babylonjs.com/meshes/pirateFort/pirateFort.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/pirateFort/",
				filename: "pirateFort.glb"
			},
			powerplant: {
				path: "https://assets.babylonjs.com/meshes/PowerPlant/powerplant.obj",
				rootUrl: "https://assets.babylonjs.com/meshes/PowerPlant/",
				filename: "powerplant.obj"
			},
			pumpkinBucketCarved: {
				path: "https://assets.babylonjs.com/meshes/pumpkinBucketCarved.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "pumpkinBucketCarved.glb"
			},
			Rabbit: {
				path: "https://assets.babylonjs.com/meshes/Rabbit.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "Rabbit.babylon"
			},
			roundedCube: {
				path: "https://assets.babylonjs.com/meshes/roundedCube.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "roundedCube.glb"
			},
			roundedCylinder: {
				path: "https://assets.babylonjs.com/meshes/roundedCylinder.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "roundedCylinder.glb"
			},
			seagulf: {
				path: "https://assets.babylonjs.com/meshes/seagulf.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "seagulf.glb"
			},
			shaderBall: {
				path: "https://assets.babylonjs.com/meshes/shaderBall.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "shaderBall.glb"
			},
			shark: {
				path: "https://assets.babylonjs.com/meshes/shark.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "shark.glb"
			},
			Cloth: {
				path: "https://assets.babylonjs.com/meshes/Sheen/Cloth.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Sheen/",
				filename: "Cloth.gltf"
			},
			SheenChair: {
				path: "https://assets.babylonjs.com/meshes/SheenChair.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "SheenChair.glb"
			},
			SheenCloth: {
				path: "https://assets.babylonjs.com/meshes/SheenCloth/SheenCloth.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/SheenCloth/",
				filename: "SheenCloth.gltf"
			},
			shoe_variants: {
				path: "https://assets.babylonjs.com/meshes/shoe_variants.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "shoe_variants.glb"
			},
			skull: {
				path: "https://assets.babylonjs.com/meshes/Skull/skull.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/Skull/",
				filename: "skull.babylon"
			},
			solar_system: {
				path: "https://assets.babylonjs.com/meshes/solar_system.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "solar_system.glb"
			},
			SpecularTest: {
				path: "https://assets.babylonjs.com/meshes/SpecularTest/SpecularTest.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/SpecularTest/",
				filename: "SpecularTest.gltf"
			},
			SSAOcat: {
				path: "https://assets.babylonjs.com/meshes/SSAOcat.babylon",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "SSAOcat.babylon"
			},
			StanfordBunny: {
				path: "https://assets.babylonjs.com/meshes/StanfordBunny.obj",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "StanfordBunny.obj"
			},
			stud: {
				path: "https://assets.babylonjs.com/meshes/stud.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "stud.glb"
			},
			target: {
				path: "https://assets.babylonjs.com/meshes/target.glb",
				rootUrl: "https://assets.babylonjs.com/meshes/",
				filename: "target.glb"
			},
			TeapotsGalore: {
				path: "https://assets.babylonjs.com/meshes/TeapotsGalore/TeapotsGalore.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/TeapotsGalore/",
				filename: "TeapotsGalore.gltf"
			},
			Animation_Node_00: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Node/Animation_Node_00.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Node/",
				filename: "Animation_Node_00.gltf"
			},
			Animation_Node_01: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Node/Animation_Node_01.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Node/",
				filename: "Animation_Node_01.gltf"
			},
			Animation_Node_02: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Node/Animation_Node_02.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Node/",
				filename: "Animation_Node_02.gltf"
			},
			Animation_Node_03: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Node/Animation_Node_03.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Node/",
				filename: "Animation_Node_03.gltf"
			},
			Animation_Node_04: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Node/Animation_Node_04.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Node/",
				filename: "Animation_Node_04.gltf"
			},
			Animation_Node_05: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Node/Animation_Node_05.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Node/",
				filename: "Animation_Node_05.gltf"
			},
			Animation_NodeMisc_00: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_NodeMisc/Animation_NodeMisc_00.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_NodeMisc/",
				filename: "Animation_NodeMisc_00.gltf"
			},
			Animation_NodeMisc_01: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_NodeMisc/Animation_NodeMisc_01.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_NodeMisc/",
				filename: "Animation_NodeMisc_01.gltf"
			},
			Animation_NodeMisc_02: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_NodeMisc/Animation_NodeMisc_02.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_NodeMisc/",
				filename: "Animation_NodeMisc_02.gltf"
			},
			Animation_NodeMisc_03: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_NodeMisc/Animation_NodeMisc_03.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_NodeMisc/",
				filename: "Animation_NodeMisc_03.gltf"
			},
			Animation_NodeMisc_04: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_NodeMisc/Animation_NodeMisc_04.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_NodeMisc/",
				filename: "Animation_NodeMisc_04.gltf"
			},
			Animation_NodeMisc_05: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_NodeMisc/Animation_NodeMisc_05.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_NodeMisc/",
				filename: "Animation_NodeMisc_05.gltf"
			},
			Animation_NodeMisc_06: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_NodeMisc/Animation_NodeMisc_06.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_NodeMisc/",
				filename: "Animation_NodeMisc_06.gltf"
			},
			Animation_NodeMisc_07: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_NodeMisc/Animation_NodeMisc_07.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_NodeMisc/",
				filename: "Animation_NodeMisc_07.gltf"
			},
			Animation_Skin_00: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/Animation_Skin_00.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/",
				filename: "Animation_Skin_00.gltf"
			},
			Animation_Skin_01: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/Animation_Skin_01.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/",
				filename: "Animation_Skin_01.gltf"
			},
			Animation_Skin_02: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/Animation_Skin_02.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/",
				filename: "Animation_Skin_02.gltf"
			},
			Animation_Skin_03: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/Animation_Skin_03.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/",
				filename: "Animation_Skin_03.gltf"
			},
			Animation_Skin_04: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/Animation_Skin_04.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/",
				filename: "Animation_Skin_04.gltf"
			},
			Animation_Skin_05: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/Animation_Skin_05.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/",
				filename: "Animation_Skin_05.gltf"
			},
			Animation_Skin_06: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/Animation_Skin_06.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/",
				filename: "Animation_Skin_06.gltf"
			},
			Animation_Skin_07: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/Animation_Skin_07.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/",
				filename: "Animation_Skin_07.gltf"
			},
			Animation_Skin_08: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/Animation_Skin_08.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/",
				filename: "Animation_Skin_08.gltf"
			},
			Animation_Skin_09: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/Animation_Skin_09.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/",
				filename: "Animation_Skin_09.gltf"
			},
			Animation_Skin_10: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/Animation_Skin_10.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/",
				filename: "Animation_Skin_10.gltf"
			},
			Animation_Skin_11: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/Animation_Skin_11.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_Skin/",
				filename: "Animation_Skin_11.gltf"
			},
			Animation_SkinType_00: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_SkinType/Animation_SkinType_00.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_SkinType/",
				filename: "Animation_SkinType_00.gltf"
			},
			Animation_SkinType_01: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_SkinType/Animation_SkinType_01.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_SkinType/",
				filename: "Animation_SkinType_01.gltf"
			},
			Animation_SkinType_02: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_SkinType/Animation_SkinType_02.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_SkinType/",
				filename: "Animation_SkinType_02.gltf"
			},
			Animation_SkinType_03: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_SkinType/Animation_SkinType_03.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Animation_SkinType/",
				filename: "Animation_SkinType_03.gltf"
			},
			Buffer_Interleaved_00: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Buffer_Interleaved/Buffer_Interleaved_00.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Buffer_Interleaved/",
				filename: "Buffer_Interleaved_00.gltf"
			},
			Buffer_Interleaved_01: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Buffer_Interleaved/Buffer_Interleaved_01.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Buffer_Interleaved/",
				filename: "Buffer_Interleaved_01.gltf"
			},
			Buffer_Interleaved_02: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Buffer_Interleaved/Buffer_Interleaved_02.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Buffer_Interleaved/",
				filename: "Buffer_Interleaved_02.gltf"
			},
			Buffer_Interleaved_03: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Buffer_Interleaved/Buffer_Interleaved_03.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Buffer_Interleaved/",
				filename: "Buffer_Interleaved_03.gltf"
			},
			Buffer_Interleaved_04: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Buffer_Interleaved/Buffer_Interleaved_04.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Buffer_Interleaved/",
				filename: "Buffer_Interleaved_04.gltf"
			},
			Compatibility_00: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Compatibility/Compatibility_00.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Compatibility/",
				filename: "Compatibility_00.gltf"
			},
			Compatibility_01: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Compatibility/Compatibility_01.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Compatibility/",
				filename: "Compatibility_01.gltf"
			},
			Compatibility_02: {
				path: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Compatibility/Compatibility_02.gltf",
				rootUrl: "https://assets.babylonjs.com/meshes/Tests/AssetGenerator/0.6/Compatibility/",
				filename: "Compatibility_02.gltf"
			},
			Co

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/634632.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于微信小程序的校园捐赠系统的设计与实现

校园捐赠系统是一种便捷的平台&#xff0c;为校园内的各种慈善活动提供支持和便利。通过该系统&#xff0c;学生、教职员工和校友可以方便地进行捐赠&#xff0c;并了解到相关的项目信息和捐助情况。本文将介绍一个基于Java后端和MySQL数据库的校园捐赠系统的设计与实现。 技术…

阿里云ubuntu 24 deb安装mysql5.7问题解决

阿里云最近有了ubuntu24&#xff0c;手欠直接选了24系统来试水&#xff0c;安装mysql这里遇到麻烦了 其它问题参考ubuntu22的即可&#xff0c;以下是3个新问题&#xff1a; 阿里云ubuntu 24 deb安装mysql5.7遇到的3个问题&#xff1a; 1&#xff09;libssl1.1 (&#xff1e; …

TG5032CKN是一种高稳定性晶体振荡器

TG5032CKN的输出频率范围为10 MHz至24 MHz&#xff0c;能够在-40C至105C的温度范围内工作&#xff0c;其频率/温度特性为0.110^-6 Max。这表明该设备具有很好的温度稳定性&#xff0c;适合在极端温度条件下使用。TG5032CKN的尺寸为5.03.21.65 mm&#xff0c;可以选择10针或4针封…

内网安全之搭建ADCS证书服务

在域控上安装ADCS服务时&#xff0c;默认会自动配置完LDAPS&#xff0c;如果不是在域控上安装ADCS服务&#xff0c;需要手动配置LDAPS 安装证书服务ADCS 打开服务器管理器——>添加角色和功能 选择“基于角色或基于功能的安装”选项&#xff0c;然后点击下一步 选择“从…

rabbitMQ本地启动快捷方式

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c ""%~s0"" ::","","runas",1)(window.close)&&exit COLOR A TITLE 运行RabbitMQ%comspec% /k "C:\Prog…

【C++】位图/布隆过滤器+海量数据处理

目录 一、位图 1.1 位图的概念 1.2 位图的实现 1.3 位图的应用&#xff08;面试题&#xff09; 二、布隆过滤器 2.1 布隆过滤器的引入 2.2 布隆过滤器概念 2.3 布隆过滤器的插入和查找 2.4 布隆过滤器的实现 2.5 布隆过滤器的优点和缺陷 2.6 布隆过滤器的应用&#…

【C++】详解多态

目录 初识多态 多态的条件 接口继承和实现继承 override 和 final 多态原理 继承与虚函数表 析构函数与多态 抽象类 本篇内容关联知识的链接 【C】详解C的继承-CSDN博客 【C】详解C的模板-CSDN博客 【C】C的内存管理-CSDN博客 初识多态 父类被不同子类继承后&#…

STM32控制HC-SR04超声模块获取距离

欢迎入群共同学习交流 时间记录&#xff1a;2024/5/23 一、模块介绍 &#xff08;1&#xff09;引脚介绍 VCC&#xff1a;电源引脚&#xff0c;接单片机3.3/5V GND&#xff1a;电源地 Trig&#xff1a;超声信号触发引脚 Echo&#xff1a;超声信号接收引脚 &#xff08;2&…

多商户消费券系统源码(ThinkPHP+FastAdmin+微信公众号)

打造智能促销新体验 一、引言&#xff1a;消费券系统的时代意义 在当今这个数字化高速发展的时代&#xff0c;电子商务和移动支付已经成为人们日常生活的重要组成部分。随着市场竞争的加剧&#xff0c;多商户消费券系统作为一种创新的促销手段&#xff0c;正逐渐受到商家和消…

安全工程师考试摸拟试题

安全工程师考试摸拟试题安全工程师是指在工程项目中负责安全管理和安全技术服务的专业人员。他们需要具备扎实的理论知识和丰富的实践经验&#xff0c;能够有效预防和控制各类安全风险… 1 安全工程师考试摸拟试题 安全工程师是指在工程项目中负责安全管理和安全技术服务的专业…

基于windows通过kind部署轻量级便携式k8s集群

感谢老师的视频教程&#xff1a; 基于windows通过kind部署轻量级便携式k8s集群 wsl windows下的linux wsl --set-default-version 2 wsl --help wsl --list --online wsl --install -d Ubuntu wsl -l -v &#xff08;看看版本是不是2&#xff0c;否则docker那边识别不到&…

vite+ts+mock+vue-router+pinia实现vue的路由权限

0.权限管理 前端的权限管理主要分为如下&#xff1a; 接口权限路由权限菜单权限按钮权限 权限是对特定资源的访问许可&#xff0c;所谓权限控制&#xff0c;也就是确保用户只能访问到被分配的资源 1.项目搭建 创建vite项目 yarn create vite配置别名 npm install path -…

查看cpu

cpu是几核的怎么查看_windows查看cpu核数-CSDN博客文章浏览阅读1.4w次&#xff0c;点赞11次&#xff0c;收藏24次。cpu是几核的怎么查看_windows查看cpu核数https://blog.csdn.net/llg___/article/details/125317223?ops_request_misc&request_id&biz_id102&utm_t…

多模态大模型新进展——GPT-4o、Project Astra关键技术丨青源Workshop第27期

青源Workshop丨No.27 多模态大模型新进展—GPT-4o、Project Astra关键技术主题闭门研讨会 刚刚过去的两天&#xff0c;OpenAI、Google纷纷发布了多模态大模型的最新成果&#xff0c;GPT-4o、Project Astra先后亮相。 本周五&#xff08;北京时间5月17日&#xff09;18点&#x…

力扣1809 没有广告的剧集(postgresql)

需求 Table: Playback ----------------- | Column Name | Type | ----------------- | session_id | int | | customer_id | int | | start_time | int | | end_time | int | ----------------- 该表主键为&#xff1a;session_id &#xff08;剧集id&#xff09; customer_…

v-md-editor和SSE实现ChatGPT的打字机式输出

概述 不论是GPT还是文心一言&#xff0c;在回答的时候类似于打字机式的将答案呈现给我们&#xff0c;这样的交互一方面比较友好&#xff0c;另一方面&#xff0c;当答案比较多、生成比较慢的时候也能争取一些答案的生成时间。本文后端使用express和stream&#xff0c;使用SSE将…

WXML模板语法-数据绑定

1.数据绑定的基本原则 (1)在data中定义数据 (2)在WXML中使用数据 2.在data页面中定义数据&#xff1a;在页面对应的.js文件中&#xff0c;把数据定义在data对象中即可 &#xff08;这里打错了 应该是数组类型的数据... 报意思啊&#xff09; 3.Mustache语法的格式 把data中的…

容器组件:栅格布局,侧边栏容器(HarmonyOS学习第四课【4.5】)

栅格布局 栅格布局可以为布局提供规律性的结构&#xff0c;解决多尺寸多设备的动态布局问题&#xff0c;保证不同设备上各个模块的布局一致性。 栅格容器组件&#xff0c;仅可以和栅格子组件(GridCol)在栅格布局场景中使用。 说明 该组件从API Version 9开始支持。后续版本…

WordPress主题 7B2 PRO 5.4.2 免授权开心版源码

本资源提供给大家学习及参考研究借鉴美工之用&#xff0c;请勿用于商业和非法用途&#xff0c;无任何技术支持&#xff01; WordPress主题 7B2 PRO 5.4.2 免授权开心版源码 B2 PRO 5.4.2 最新免授权版不再需要改hosts&#xff0c;和正版一样上传安装就可以激活。 直接在Word…

计算机精选期刊特辑

文章目录 一、征稿简介二、合作期刊三、投稿咨询四、咨询 一、征稿简介 艾思科蓝依托互联网信息与数据库技术、整合渠道与合作资源&#xff0c;提供EI/SCI/SCIE/SSCI期刊论文的内容审查、发表支持等服务。艾思科蓝与多所知名出版社达成战略合作关系&#xff0c;持续开展合作征…