当前位置: 首页 > news >正文

建一个收费网站 怎么收费网站建设方案内容

建一个收费网站 怎么收费,网站建设方案内容,遵义网站开发,蕲春住房和城乡建设局网站诡异的问题 下面是给一个材质设置发光颜色周期变化和纹理偏移的代码,你能感觉到这里面可能出现的问题吗? var passTime 0;var uOffset 0;var deltaTime 0;function SetEmissiveColor() {passTime scene.deltaTime * 0.05;if(passTime > 6.2…

诡异的问题      

        下面是给一个材质设置发光颜色周期变化和纹理偏移的代码,你能感觉到这里面可能出现的问题吗?

        var passTime = 0;var uOffset = 0;var deltaTime = 0;function SetEmissiveColor() {passTime += scene.deltaTime * 0.05;if(passTime > 6.2832) passTime -= 6.2832;var multi = (Math.sin(passTime) + 1) * 0.5;material.emissiveColor = new BABYLON.Color3(9 * multi, 2.75 * multi, 0);var offset = scene.deltaTime * 0.001;material.diffuseTexture.uOffset -= offset;material.opacityTexture.uOffset -= offset;}scene.onBeforeRenderObservable.add(SetEmissiveColor);

        实际在浏览器中运行时,你会发现有可能完全没有实现预期的效果。如果你打印一下passTime的值,可能是一直都是NaN,所以最终会导致material.emissiveColor 的值完全不可用。

        这是咋回事呢?原来scene.deltaTime  在场景的第一帧渲染之前是  undefined,这导致 passTime变量在下面这行代码

passTime += scene.deltaTime * 0.05;

执行的时候就变成了NaN,然后NaN的自增就一直是NaN了,所以计算得到的颜色值也就一直错了,哈哈。

       下面说说解决方法。

解决方法一

        添加if语句检查scene.deltaTime的值是否可用,参考代码如下:

        var passTime = 0;var uOffset = 0;var deltaTime = 0;function SetEmissiveColor() {if (scene.deltaTime !== void 0 && !isNaN(scene.deltaTime)){passTime += scene.deltaTime * 0.05;if(passTime > 6.2832) passTime -= 6.2832;var multi = (Math.sin(passTime) + 1) * 0.5;material.emissiveColor = new BABYLON.Color3(9 * multi, 2.75 * multi, 0);var offset = scene.deltaTime * 0.001;material.diffuseTexture.uOffset -= offset;material.opacityTexture.uOffset -= offset;}}scene.onBeforeRenderObservable.add(SetEmissiveColor);

        上述代码在执行passTime的自增的之前通过 if 语句对scene.deltaTime进行了检查,这样就不会在scene.deltaTime不可用的时候进行计算了。

        知识点:scene.deltaTime !== void 0 这个判断里面也可以写成 scene.deltaTime !== undefined,但是这里为啥用的是 void 0 而没有用undefined 呢,下面这个链接讲了这个问题:

 关于void 0 与 undefined。

解决方法二

        使用定时器,由于scene.deltaTime只是在第一帧渲染完成之前有问题,就没有必要每帧判断,下面的代码在定时器中判断scene.deltaTime的值,待其合理之后再把SetEmissiveColor方法添加到scene.onBeforeRenderObservable事件中,与此同时移除了这个定时器,这样就避免了每帧都要检查scene.deltaTime的合理性。参考代码如下:

        var passTime = 0;var uOffset = 0;var deltaTime = 0;function SetEmissiveColor() {passTime += scene.deltaTime * 0.05;if(passTime > 6.2832) passTime -= 6.2832;var multi = (Math.sin(passTime) + 1) * 0.5;material.emissiveColor = new BABYLON.Color3(9 * multi, 2.75 * multi, 0);var offset = scene.deltaTime * 0.001;material.diffuseTexture.uOffset -= offset;material.opacityTexture.uOffset -= offset;}var checkDeltaTime = setInterval(function () {if (scene.deltaTime !== void 0 && !isNaN(scene.deltaTime)) {scene.onBeforeRenderObservable.add(SetEmissiveColor);//scene.deltaTime可用之后再添加到事件中clearInterval(checkDeltaTime); // 清除定时器}}, 20); // 每20毫秒检查一次

解决方法三

        不使用scene.deltaTime,改用engine.getDeltaTime()方法,参考代码如下:

        var passTime = 0;var uOffset = 0;var deltaTime = 0;function SetEmissiveColor() {passTime += engine.getDeltaTime() * 0.05;console.log(engine.getDeltaTime());if(passTime > 6.2832) passTime -= 6.2832;var multi = (Math.sin(passTime) + 1) * 0.5;material.emissiveColor = new BABYLON.Color3(9 * multi, 2.75 * multi, 0);var offset = engine.getDeltaTime() * 0.001;material.diffuseTexture.uOffset -= offset;material.opacityTexture.uOffset -= offset;}scene.onBeforeRenderObservable.add(SetEmissiveColor);

        这里的engine.getDeltaTime()在第一帧渲染完成之前会被赋值为0,不会出现值为NaN的情况(scene.deltaTime为啥就不能这么干呢???)。

        好了,就到这里,通过这个问题又学会了一些东西,大家共勉。

http://www.khdw.cn/news/270.html

相关文章:

  • 南海网站设计电话投放小网站
  • 集团做网站需要多大的带宽优化设计卷子答案
  • 搭建简单的网站论述搜索引擎优化的具体措施
  • 怎样在建立公司网站杭州网站建设技术支持
  • 大良网站建设dwxw百度指数查询手机版
  • 总结网站推广策划书的共同特点营销失败案例分析
  • 腾龙官方网站做号软件市场监督管理局投诉电话
  • 新冠疫情防控措施优化友情链接seo
  • 潍坊营销型网站建设今日最新国内新闻重大事件
  • 潍坊网站排名公司电商网站建设公司
  • 企业网站建设怎么做b站软件推广大全
  • 广州网站建设业务免费b站软件下载
  • 淘宝上做网站可靠吗怎么申请一个网站
  • linux做网站优势百度免费下载安装百度
  • 海南做网站的技术公司电商平台的营销方式
  • 网页制作教程网站千锋教育
  • 齐齐哈尔网站seo温州高端网站建设
  • 移动端网站开发论文厨师培训机构 厨师短期培训班
  • 有没有做的很炫的科技型网站磁力天堂最新版地址
  • 在一个城市做相亲网站百度开户
  • 制作网站要步骤进入百度app
  • 巴彦淖尔市 网站建设搜索引擎关键词怎么优化
  • 那个网站做扑克牌便宜软文案例300字
  • 阿里云网站备案需要多久2024年2月新冠疫情又开始了吗
  • 二级域名网站优化百度推广总部客服投诉电话
  • 全国疫苗接种率最新数据云seo关键词排名优化软件
  • 微信如何申请小程序商店郑州网站优化外包顾问
  • 购物网站开发周期百度模拟搜索点击软件
  • 天津外贸营销型网站建设公司百度推广销售员好做吗
  • wordpress if长治seo顾问