草庐IT

Cesium 案例(四) Video

BlackCaat 2023-04-15 原文
   Sandcastle-header.js存储在Cesium中Apps/Sandcastle/Sandcastle-header.js的位置,该js文件时用于创建下拉框和带选中框的按钮,引入该文件后,就会有一个Sandcastle全局对象,包含着很多方法。
 
 // videoElement = document.getElementById("trailer");
videoElement = "../images/_DSC0718-239.jpg";(视频导入有问题,尝试用图片替代,完成替代)
      Cesium.Ion.defaultAccessToken =
        "token";
      const viewer = new Cesium.Viewer("cesiumContainer", {
        showRenderLoopErrors: false,
        //如果为 true,如果出现渲染循环错误,
        //此小部件将自动向用户显示包含错误的 HTML 面板。
        shouldAnimate: true,
      });
      const sphere = viewer.entities.add({
        position: Cesium.Cartesian3.fromDegrees(
          104,
          31.75,
          1000 //高度 可选 米为单位
        ),
        //从以度为单位的经度和纬度值返回 Cartesian3 位置。
        ellipsoid: {
          radii: new Cesium.Cartesian3(1000, 1000, 1000),
          //指定椭球半径的 Cartesian3 属性。
          material: videoElement,
        },
      });
      viewer.trackedEntity = sphere;
      //获取或设置相机当前正在跟踪的实体实例。

      let synchronizer;

      Sandcastle.addToggleButton(
        //外部文件引入用于进行ui设计
        "Clock synchronization",
        false,
        function (checked) {
          if (Cesium.defined(synchronizer)) {
            synchronizer = synchronizer.destroy();
            videoElement.playbackRate = 1.0;
            return;
          }
          synchronizer = new Cesium.VideoSynchronizer({
            clock: viewer.clock,
            element: videoElement,
          });
        }
      );
      let isRepeating = true;
      Sandcastle.addToggleButton(
        "Image Repeat",
        isRepeating,
        function (checked) {
          isRepeating = checked;
        }
      );

      sphere.ellipsoid.material.repeat = new Cesium.CallbackProperty(function (
        time,
        result
      ) {
        if (!Cesium.defined(result)) {
          result = new Cesium.Cartesian2();
        }
        if (isRepeating) {
          result.x = 8;
          result.y = 2;
        } else {
          result.x = 1;
          result.y = 1;
        }
        return result;
      },
      false);

      // Like Image, the video element doesn't have to be part of the DOM or
      // otherwise on the screen to be used as a texture.
      Sandcastle.addToggleButton("Video Overlay", true, function (checked) {
        if (checked) {
          videoElement.style.display = "";
        } else {
          videoElement.style.display = "none";
        }
      });

      // Older browsers do not support WebGL video textures,
      // put up a friendly error message indicating such.
      viewer.scene.renderError.addEventListener(function () {
        if (!videoElement.paused) {
          videoElement.pause();
        }
        viewer.cesiumWidget.showErrorPanel(
          "This browser does not support cross-origin WebGL video textures.",
          "",
          ""
        );
      });

有关Cesium 案例(四) Video的更多相关文章

  1. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

  2. ruby &&= 边缘案例 - 2

    有点边缘情况,但知道为什么&&=会这样吗?我正在使用1.9.2。obj=Object.newobj.instance_eval{@bar&&=@bar}#=>nil,expectedobj.instance_variables#=>[],soobjhasno@barinstancevariableobj.instance_eval{@bar=@bar&&@bar}#ostensiblythesameas@bar&&=@barobj.instance_variables#=>[:@bar]#whywouldthisversioninitialize@bar?为了比较,||=将实例变量初始

  3. Cesium源码解析一(terrain文件的加载、解析与渲染全过程梳理) - 2

    快速导航(持续更新中…)Cesium源码解析一(terrain文件的加载、解析与渲染全过程梳理)Cesium源码解析二(metadataAvailability的含义)Cesium源码解析三(metadata元数据拓展中行列号的分块规则解析)Cesium源码解析四(Quantized-Mesh(.terrain)格式文件在CesiumJS和UE中加载情况的对比)目录1.前言2.本篇的由来3.terrain文件的加载3.1更新环境3.2更新和执行渲染命令3.3数据优化3.4结束当前帧4.总结1.前言  目前市场上三维比较火的实现方案主要有两种,b/s的方案主要是Cesium,c/s的方案主要是u

  4. ruby - 使用散列或案例陈述 [Ruby] - 2

    一般来说哪个更好用?:casenwhen'foo'result='bar'when'peanutbutter'result='jelly'when'stack'result='overflow'returnresult或map={'foo'=>'bar','peanutbutter'=>'jelly','stack'=>'overflow'}returnmap[n]更具体地说,什么时候应该使用案例陈述,什么时候应该只使用散列? 最佳答案 散列是一种数据结构,而case语句是一种控制结构。当你只是检索一些数据时,你应该使用散列(就像你

  5. Ruby:案例使用对象 - 2

    有没有办法在case语句的对象上隐式调用方法?即:classFoodefbar1enddefbaz...endend我希望能够做的是这样的事情......foo=Foo.newcasefoowhen.bar==1then"something"when.bar==2then"somethingelse"when.baz==3then"anotherthing"end...其中“when”语句正在评估case对象上方法的返回。这样的结构可能吗?如果是的话,我还没有弄清楚语法...... 最佳答案 FWIW,您根本不需要将对象传递给1.8

  6. ruby - 我可以做 hash.has_key 吗? ('video' 或 'video2' ) ( ruby ) - 2

    或者我可以做得更好hash.has_key?('videox')wherexis''什么都没有或一个数字?所以'video'、'video1'、'video2'会通过条件吗?当然我可以有两个条件,但万一我将来需要使用video3,事情会变得更复杂...... 最佳答案 如果您想要video的一般情况后跟一个数字而不明确列出所有组合,可以使用Enumerable中的几种方法。您可以将其与正则表达式结合使用。hash.keys是来自hash的键数组,^video\d$匹配视频后跟一个数字。#trueiftheblockreturnstr

  7. BigData/Cloud Computing:基于阿里云技术产品的人工智能与大数据/云计算/分布式引擎的综合应用案例目录来理解技术交互流程 - 2

    BigData/CloudComputing:基于阿里云技术产品的人工智能与大数据/云计算/分布式引擎的综合应用案例目录来理解技术交互流程目录一、云计算网站建设:部署与发布网站建设:简单动态网站搭建云服务器管理维护云数据库管理与数据迁移云存储:对象存储管理与安全超大流量网站的负载均衡二、大数据MOOC网站日志分析搭建企业级数据分析平台基于LBS的热点店铺搜索基于机器学习PAI实现精细化营销基于机器学习的客户流失预警分析使用DataV制作实时销售数据可视化大屏使用MaxCompute进行数据质量核查使用Quick BI制作图形化报表使用时间序列分解模型预测商品销量三、云安全云平台使用安全云上服务

  8. ruby-on-rails - 关于这个 Rails 关联案例中的 "<<"运算符 - 2

    我是RubyonRails的新手。在Rails应用程序中,我看到了如下代码:在模型中,有一个类Car:classCar在controller中,有一个方法“some_method”classCarsController我有三个问题要问:1.在Controller的代码中@my_car.components,它有什么作用?什么是什么意思?2.“3.是否Car类必须显式定义has_many关联Componentclassif""isused或者是""可用于向Car添加新关联,即使关联未在Car中定义显式类? 最佳答案 编辑后:第1点@m

  9. Spring Security详细讲解(JWT+SpringSecurity登入案例) - 2

    本篇博文目录:一.SpringSecurity简介1.SpringSecurity2.SpringSecurity相关概念二.认证和授权1.认证(1)使用SpringSecurity进行简单的认证(SpringBoot项目中)(2)SpringSecurity的原理(3)SpringSecurity核心类(4)认证登入案例(JWT+SpringSecurity实现登入案例)2.授权(1)加入权限到Authentication中(2)SecurityConfig配置文件中开启注解权限配置(3)给接口中的方法添加访问权限(4)用户权限表的建立3.自定义失败处理(1)创建异常处理类(2)配置移除处理

  10. ruby-on-rails - Ruby on Rails 案例/开关。如何匹配对象? - 2

    我正在开发ruby​​onrails应用程序。对于sessionController,我想用一个案例来检查用户的帐户是否被锁定或禁止。我正在尝试使用类的对象作为案例,并使用when来检查属性。例如,user=Profile.find(1)caseuserwhenuser.banredirect_to()whenuser.lockredirect_to()elseredirect_to()end唯一的问题是它不起作用。这是什么工作:caseuser.banwhentrueredirect_to()elseredirect_to()end关于如何使用开关检查用户对象是否被禁止或锁定,有什么

随机推荐