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

网站建设意见征求表dede如何手机网站和电脑网站的数据同步更新

网站建设意见征求表,dede如何手机网站和电脑网站的数据同步更新,一个网站绑定2个域名,wordpress底部信息修改倒影是在自然界中非常常见的一种现象#xff0c;例如水面倒影、镜子。我们都知道#xff0c;眼睛之所以能够看到某个物体#xff0c;是因为物体本身能够发光或者物体能够反射其它的物体所发的光#xff0c;这些光进入到我们的眼里就形成了该物体影像。倒影形成也是一种光学…倒影是在自然界中非常常见的一种现象例如水面倒影、镜子。我们都知道眼睛之所以能够看到某个物体是因为物体本身能够发光或者物体能够反射其它的物体所发的光这些光进入到我们的眼里就形成了该物体影像。倒影形成也是一种光学的现象其原理是物体发射或者反射的光经过倒影平面的反射后进入到我们的眼里我们所看到的在倒影平面形成的虚像就是该物体的倒影。不管是做数据可视化还是游戏我们经常需要在3D场景中来实现这种自然现象给水面、镜面等物体增加倒影的效果来提高视觉效果。那么在3D渲染中这种效果是怎么实现的那WebGL的渲染引擎threejs给我们提供了一个很好的倒影实现的封装通过对threejs提供的代码进行分析希望能够和大家一起学习一下。大概的思路是构建一个虚拟的相机对需要倒影的物体进行渲染然后将渲染的结果当作纹理映射到倒影平面上这样就可以实现倒影的效果了。这里面我们需要解决两个问题第一个是如何构建这个虚拟的相机第二个是怎么将通过纹理相机渲染出来的结果正确的映射到倒影平面上。使用threejs来实现倒影我们只需要引入threejs的倒影引擎该文件位于threejs项目example/js/objects目录下然后创建一个接受倒影的几何体其他的交给threejs来完成就可以来这里我们创建了一个圆形来接收阴影。script srcjs/objects/Reflector.js/scriptvar geometry new THREE.CircleBufferGeometry(40, 64); var groundMirror new THREE.Reflector(geometry, {textureWidth: WIDTH * window.devicePixelRatio,textureHeight: HEIGHT * window.devicePixelRatio }); 第一步构建虚拟的相机得到倒影面和真实相机的位置reflectorWorldPosition.setFromMatrixPosition( scope.matrixWorld ); cameraWorldPosition.setFromMatrixPosition( camera.matrixWorld ); 得到反射面的旋转矩阵rotationMatrix.extractRotation( scope.matrixWorld ); 先定义一个默认的法向量乘以上一步得到的反射面的旋转向量得到反射面现在的法向量normal.set( 0, 0, 1 ); normal.applyMatrix4( rotationMatrix ); 计算相机位置// 计算相机位置到反射平面位置到向量 view.subVectors( reflectorWorldPosition, cameraWorldPosition ); // 当向量与反射面当法向量夹角说明相机在反射面的背面则直接返回不进行倒影的渲染 if ( view.dot( normal ) 0 ) return; // 得到反射向量的反向量 view.reflect( normal ).negate(); // 投影面位置加上该向量得到虚拟相机的位置 view.add( reflectorWorldPosition ); 与计算相机位置类似的步骤计算相机的视点位置rotationMatrix.extractRotation( camera.matrixWorld ); lookAtPosition.set( 0, 0, - 1 ); lookAtPosition.applyMatrix4( rotationMatrix ); lookAtPosition.add( cameraWorldPosition );target.subVectors( reflectorWorldPosition, lookAtPosition ); target.reflect( normal ).negate(); target.add( reflectorWorldPosition ); 根据计算的相机位置和相机视点位置构建虚拟相机virtualCamera.position.copy( view ); virtualCamera.up.set( 0, 1, 0 ); virtualCamera.up.applyMatrix4( rotationMatrix ); virtualCamera.up.reflect( normal ); virtualCamera.lookAt( target ); virtualCamera.far camera.far; virtualCamera.updateMatrixWorld(); virtualCamera.projectionMatrix.copy( camera.projectionMatrix ); 第二步如何将虚拟相机的渲染结果映射到投影面上初始化一个默认矩阵这是初始化的矩阵主要是为了把屏幕坐标和[-1, 1]映射到[0, 1]的纹理坐标textureMatrix.set(0.5, 0.0, 0.0, 0.5,0.0, 0.5, 0.0, 0.5,0.0, 0.0, 0.5, 0.5,0.0, 0.0, 0.0, 1.0 ); 然后将该矩阵乘以模型、视图、投影矩阵经过模型、视图、投影矩阵变换的坐标为屏幕坐标再经过上述矩阵后就可以映射为纹理坐标了textureMatrix.multiply( virtualCamera.projectionMatrix ); textureMatrix.multiply( virtualCamera.matrixWorldInverse ); textureMatrix.multiply( scope.matrixWorld ); 将该矩阵在着色器中使用可以得到倒影面各坐标点对应的纹理坐标这样就可以把渲染结果正确的映射到投影平面上vUv textureMatrix * vec4( position, 1.0 ); 进一步的完善调整虚拟相机渲染时的投影矩阵将相机的近裁剪面重置为投影面避免对倒影面下方对物体进行投影clipBias参数是对裁剪面进行了一个偏移具体对算法请参考Oblique View Frustum Near-Plane Clippinghttp://www.terathon.com/lengyel/Lengyel-Oblique.pdfreflectorPlane.setFromNormalAndCoplanarPoint( normal, reflectorWorldPosition ); reflectorPlane.applyMatrix4( virtualCamera.matrixWorldInverse );clipPlane.set( reflectorPlane.normal.x, reflectorPlane.normal.y, reflectorPlane.normal.z, reflectorPlane.constant );var projectionMatrix virtualCamera.projectionMatrix;q.x ( Math.sign( clipPlane.x ) projectionMatrix.elements[ 8 ] ) / projectionMatrix.elements[ 0 ]; q.y ( Math.sign( clipPlane.y ) projectionMatrix.elements[ 9 ] ) / projectionMatrix.elements[ 5 ]; q.z - 1.0; q.w ( 1.0 projectionMatrix.elements[ 10 ] ) / projectionMatrix.elements[ 14 ];clipPlane.multiplyScalar( 2.0 / clipPlane.dot( q ) );projectionMatrix.elements[ 2 ] clipPlane.x; projectionMatrix.elements[ 6 ] clipPlane.y; projectionMatrix.elements[ 10 ] clipPlane.z 1.0 - clipBias; projectionMatrix.elements[ 14 ] clipPlane.w; 最主要对几个步骤在已经完成了下面进行对就是通过构建对虚拟相机和新的投影矩阵对整个场景进行渲染将渲染结果当作纹理映射到投影平面上就完成了。
http://www.huolong8.cn/news/48192/

相关文章:

  • 农村电子商务网站建设做网站 零基础从哪里开始学
  • 沈阳做网站开发公司京东门户网站怎么做
  • 河南焦作有做网站开发的公司吗上海环球金融中心介绍
  • 网站内容维护更新方法在线培训系统搭建方案
  • 如何判断网站程序使用asp还是php无货源跨境电商怎么开店铺
  • 代码怎么做网站wordpress到底是什么
  • 营销类网站建设需要注意的问题酒托做哪个网站好
  • wordpress插件的作用广州百度推广优化
  • 网站弹出信息怎么做的建设官方网站的请示
  • 做网站公司济南美食网页设计模板中文
  • 网站的用户登录一般怎么做的中国十大电商排行榜
  • 公众号微信商城推广关键词优化公司
  • 山东省菏泽市城乡建设局网站建筑行业招聘网站排行榜
  • 怎么样黑进网站后台专业数据分析网站
  • 网站建设脚本如何做网站首页
  • 网站外链平台网站上传后
  • 榆社县济南网站建设公司 大学青岛住房和城乡建设厅网站首页
  • 做网站找哪家公司好上海简约网站建设公司
  • 网站没被收录怎么办天津市建筑信息网
  • 网站建设创新互联公司来年做哪些网站致富
  • 南京林业大学实验与建设网站网络竞价
  • 网站开发可以用gif吗wordpress会员设置有效期
  • 内蒙古住房城乡建设部网站pr培训
  • 网站开发外包公司坑asp.net做的网站要放到网上空间去要放哪些文件上去
  • 广州天河区建设网站企业风险查询平台
  • 行业网站作用石家庄网站建设咨询
  • 爱尚网站建设wordpress功能小工具栏
  • 国内亲子游做的最好的网站新农村建设举报网站
  • 产品网页的制作外贸网站优化软件
  • 潼南区做网站的公司com域名注册7元