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

岳麓区专业的建设网站公司产品开发的流程

岳麓区专业的建设网站公司,产品开发的流程,网站建设 上海,做网站那个搜索引擎好诡异的问题 下面是给一个材质设置发光颜色周期变化和纹理偏移的代码#xff0c;你能感觉到这里面可能出现的问题吗#xff1f; 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.w-s-a.com/news/256749/

相关文章:

  • 网站建设与优化推广方案内容网站整站下载带数据库后台的方法
  • 做网站PAAS系统外链是什么意思
  • 网页设计专业设计课程googleseo排名公司
  • 网站百度百科那些免费网站可以做国外贸易
  • 做视频的网站有哪些南京计算机培训机构哪个最好
  • ppt做视频 模板下载网站商业街网站建设方案
  • 佛山网站定制开发星光影视园网站建设案例
  • wordpress子站点商务网页设计与制作微课版答案
  • 山东省住房城乡和建设厅网站软件开发主要几个步骤
  • 可以接项目做的网站网站源码php
  • 杭州广众建设工程有限公司网站网页游戏人气排行榜
  • 上海网站开发建设最简单的网站代码
  • 东莞做网站建设免费网站建设案例
  • 莱州建设局网站wordpress的主题下载地址
  • 二级网站域名长沙企业关键词优化服务质量
  • 在家有电脑怎么做网站wordpress 入门主题
  • 什邡建设局网站sem推广是什么意思
  • 西安分类信息网站网站敏感关键词
  • 黑彩网站怎么做建设网站费用分析
  • 网站关键词选取的步骤和方法小程序商城哪家好排行榜
  • 儿童产品网站建设网站建设优化排名推广
  • 做网站的硬件无锡招标网官方网站
  • 做推送好用的网站合肥网站推广培训
  • 网站开发团队简介贵阳双龙区建设局网站
  • 新乡做网站公司哪家好wordpress侧边栏文件
  • 小白建站怎么撤销网站备案
  • 哪个网站做调查问卷赚钱短视频制作神器
  • 上海企业响应式网站建设推荐汕头网络优化排名
  • 怎么建立公司网站平台怎么将网站做成公司官网
  • 培训学校网站怎样快速建设网站模板