项目中有使用到视频融合,记录实现过程。
视频融合简单来讲就是在地图中接入一个视频。视频如地图中的要素一般。
效果图如下:
实现基础
ArcGIS JS API 提供了一个类,externalRenderers,可以在地图中接入第三方的WebGL(原生WebGL,或者是WebGL的库,如three)。
three中可以轻松的实现,用WebGL加载视频。
实现思路
分两步,第一步:在three中实现加载视频;第二步:把写好的three程序集成到地图中。
实现过程
这是第一次接触three,所以照官网写了一个入门例子,一个旋转的正方体。代码放在附件(附1)中。
需要理解three中的一些概念:
- Scene:场景
- Camera:相机
- Geometry:图形(骨架)
- Material:材质(衣服)
- Mesh:三维模型(骨架+衣服)
- Light:光源
three提供了一个类,VideoTexture,可以将视频作为纹理贴图到三维模型上。代码放在附件(附2)中。
通过externalRenderers 将three程序集成到地图中。代码放在附件(附3)中。
参数说明写到了代码注释中。
每当地图视图更新时,会进入到externalRenderer 的render函数进行渲染。如果是three中模型的动画,则要放到这个函数中处理,添加了一个three动画的示例代码,放在附件(附4)中。
附件
注:THREE-123dev,ArcGIS JS API-4.16
附1:旋转的正方体
1 |
|
附2:视频贴图
1 |
|
附3:视频融合
1 | <html> |
附4:简易动画
1 | <html> |