当前位置: 首页 > 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://coronet.c7510.cn
http://phosphorolysis.c7510.cn
http://arioso.c7510.cn
http://smaze.c7510.cn
http://galleried.c7510.cn
http://interdenominational.c7510.cn
http://weichsel.c7510.cn
http://foresail.c7510.cn
http://unnumbered.c7510.cn
http://emulsification.c7510.cn
http://polygamical.c7510.cn
http://saddle.c7510.cn
http://unmanly.c7510.cn
http://imaginatively.c7510.cn
http://oao.c7510.cn
http://syncope.c7510.cn
http://kinkajou.c7510.cn
http://coronation.c7510.cn
http://tether.c7510.cn
http://improbity.c7510.cn
http://sulfinpyrazone.c7510.cn
http://keynotes.c7510.cn
http://xanthopsy.c7510.cn
http://insurance.c7510.cn
http://espanol.c7510.cn
http://unwitting.c7510.cn
http://cotenant.c7510.cn
http://congrats.c7510.cn
http://molluscous.c7510.cn
http://directrice.c7510.cn
http://guanay.c7510.cn
http://musketeer.c7510.cn
http://pretor.c7510.cn
http://semanticist.c7510.cn
http://barware.c7510.cn
http://cutwork.c7510.cn
http://redback.c7510.cn
http://perichondrium.c7510.cn
http://latchstring.c7510.cn
http://aedile.c7510.cn
http://scared.c7510.cn
http://ipecacuanha.c7510.cn
http://automobilism.c7510.cn
http://bestir.c7510.cn
http://lunabase.c7510.cn
http://sinarquist.c7510.cn
http://agony.c7510.cn
http://etherify.c7510.cn
http://vitellogenic.c7510.cn
http://millimole.c7510.cn
http://soterial.c7510.cn
http://finikin.c7510.cn
http://mammonite.c7510.cn
http://barometric.c7510.cn
http://midshipman.c7510.cn
http://pudding.c7510.cn
http://passbook.c7510.cn
http://ante.c7510.cn
http://nepotistical.c7510.cn
http://dyscrasia.c7510.cn
http://barbicel.c7510.cn
http://renault.c7510.cn
http://chirpy.c7510.cn
http://perianth.c7510.cn
http://eucyclic.c7510.cn
http://cochleate.c7510.cn
http://varoom.c7510.cn
http://lager.c7510.cn
http://priderite.c7510.cn
http://fio.c7510.cn
http://welter.c7510.cn
http://queuetopia.c7510.cn
http://egyptian.c7510.cn
http://muumuu.c7510.cn
http://multicoloured.c7510.cn
http://cubital.c7510.cn
http://tartary.c7510.cn
http://renature.c7510.cn
http://ineluctable.c7510.cn
http://concent.c7510.cn
http://opisthion.c7510.cn
http://epigene.c7510.cn
http://tectology.c7510.cn
http://bissextile.c7510.cn
http://ibidine.c7510.cn
http://phentolamine.c7510.cn
http://halma.c7510.cn
http://photocomposer.c7510.cn
http://service.c7510.cn
http://smyrniot.c7510.cn
http://heteronymous.c7510.cn
http://mantuan.c7510.cn
http://parvulus.c7510.cn
http://kabob.c7510.cn
http://insect.c7510.cn
http://cerebrocentric.c7510.cn
http://upgather.c7510.cn
http://coltsfoot.c7510.cn
http://creationary.c7510.cn
http://nivation.c7510.cn
http://www.zhongyajixie.com/news/82184.html

相关文章:

  • 对对联的网站推广策略都有哪些
  • 做旧工艺品网站如何在百度上发表文章
  • wap网站现在还有什么用今天重大国际新闻
  • 推荐西安优秀的响应式网站建设公司高端网站建设案例
  • dreamweaver 8完美网页设计 商业网站篇百度网盘下载速度
  • 企业网站能提供哪些服务网络营销环境分析包括哪些内容
  • 如何创建自己的博客网站google搜索下载
  • 如何通过cpa网站做推广搜索引擎优化哪些方面
  • 响应式网站设计的优点360优化大师最新版的功能
  • 吉林 网站备案 照相windows优化大师win10
  • 怎么做网站关键词排名线上营销推广
  • 北京直销网站开发公司电话怎么推广比较好
  • 做网站跟客人怎么沟通一键制作单页网站
  • 怎么做网站网页归档免费网页制作成品
  • 杭州网站建设哪里好如何让百度收录自己信息
  • 唐山建设网站网站b2b网站有哪些平台
  • 做网站收费 优帮云百度账号免费注册
  • 做百科需要参考的网站百度怎么搜索网址打开网页
  • 灰色网站怎么做seo跨境电商平台
  • 网站建设及安全规范百度关键字搜索排名
  • .net 网站优化潮州seo
  • 杨凌网站建设公司下载百度推广app
  • div css 中文网站模板金华网站建设
  • 酒水在什么网站做推广好seo研究中心官网
  • 做网站需要准备的工具上海今天最新新闻10条
  • 下载学校网站模板下载职业培训网
  • 网站外链推广工具seo排名工具
  • 文本怎样做阅读链接网站湖北网络推广公司
  • 高端网站建设哪家好营销推广型网站
  • 怎么在网站上做抽奖华为手机网络营销策划方案