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

公司网站格式深圳专业专业网站建设公司

公司网站格式,深圳专业专业网站建设公司,做网站网上接单,网站建设制作费用首先登场 场景中的元素 mirror是镜子,挂着我们的脚本,Quad是一个面片。Camera是用来生成RenderTexture给面片的。里面的test1是我用来调试位置的球。 镜子size是大小,x是-2,为了反转一下贴图 相机直接可以禁用掉,用…

首先登场

场景中的元素
在这里插入图片描述
mirror是镜子,挂着我们的脚本,Quad是一个面片。Camera是用来生成RenderTexture给面片的。里面的test1是我用来调试位置的球。
在这里插入图片描述
在这里插入图片描述
镜子size是大小,x是-2,为了反转一下贴图

在这里插入图片描述
相机直接可以禁用掉,用脚本来调用。

玩家就是一个胶囊,里面的eye位置把玩家视角的相机放上去,其他没什么特别的。

代码的原理就是把相机拍摄到的图给Quad的Texture,脚本根据人物的位置来改变位置,并计算近裁面,这里因为有旋转,所以镜子后面最好不要有东西,否则相机会拍摄到,或者用层来避免拍摄到的问题。

附上代码:


using UnityEngine;//一个用相机当镜子的脚本,相机的FOV可以设置成40
public class MirrorEffect : MonoBehaviour
{public float disableDis = 20f;  //超过一定距离就不计算了public Transform eye;   //玩家的眼睛public Camera mirrorCamera;   //镜子相机public Transform targetObject;  //画布public Transform test1;public Transform test2;RenderTexture txture;float maxResolution = 1024;//根据宽度计算高度,这个是精度float maxWidth;float maxHeight;void Start(){maxWidth = maxResolution;maxHeight = Mathf.Abs(targetObject.localScale.y / targetObject.localScale.x * maxWidth);txture = new RenderTexture((int)maxWidth, (int)maxHeight, 24);Renderer rend = targetObject.GetComponent<Renderer>();if (rend == null){Debug.LogWarning("MirrorEffect找不到Renderer.");return;}mirrorCamera.enabled = false;rend.material.mainTexture = txture;mirrorCamera.targetTexture = txture;}private void Update(){Comput();}private void OnDestroy(){DestroyImmediate(txture, true);}void Comput(){float dis = Vector3.Distance(eye.transform.position, transform.position);if (dis > disableDis){return;}//计算视口高度和宽度float frustumHeight = targetObject.transform.localScale.y;//float frustumWidth = frustumHeight * mainCamera.aspect;//缩放目标面片物体大小//targetObject.transform.localScale = new Vector3(frustumWidth, frustumHeight, 1f);float distance = frustumHeight * 0.5f / Mathf.Tan(mirrorCamera.fieldOfView * 0.5f * Mathf.Deg2Rad);//镜子左右边的位置float sz = Mathf.Abs(targetObject.transform.localScale.x);Vector3 v3l = new Vector3(sz * -0.5f, 0f, 0f);Vector3 v3r = new Vector3(sz * 0.5f, 0f, 0f);v3l = transform.TransformPoint(v3l);v3r = transform.TransformPoint(v3r);//test1.position = v3l;//test2.position = v3r;//计算相机在镜子对象的局部坐标//计算反射位置Vector3 dir1 = (v3l - eye.transform.position).normalized;Vector3 dir2 = (v3r - eye.transform.position).normalized;Vector3 mirDir = -(dir1 + dir2).normalized;Vector3 dirref2 = Vector3.Reflect(mirDir, -transform.forward);//Debug.DrawRay(transform.position, dirref, Color.yellow, 1f);//Debug.DrawRay(transform.position, dirref2, Color.red,1f);//相机位于镜子正后方,要保持相机所有平移要水平与镜子Vector3 dirref3 = Vector3.ProjectOnPlane(dirref2, transform.up);Debug.DrawRay(transform.position, dirref3, Color.green, 1f);Vector3 cameraPlace = transform.position + dirref3.normalized * distance;mirrorCamera.transform.position = cameraPlace;// new Vector3(at2.x, 0f, distance);mirrorCamera.nearClipPlane = distance;Quaternion q = Quaternion.LookRotation((targetObject.transform.position - mirrorCamera.transform.position).normalized);mirrorCamera.transform.rotation = q;mirrorCamera.Render();}
}

画质可以修改maxResolution ,disableDis 是20米距离就不进入Update了,可以节省一些性能,根据自己情况来。

最后放一个效果图。
请添加图片描述
镜面清晰,但是算法还是有点问题,比实时反射来的性能好一点。凑合用还行。

http://www.yayakq.cn/news/405704/

相关文章:

  • 案例学网页设计和网站建设县 住房和城乡建设局网站
  • 网站设计排行榜宝塔一键部署wordpress
  • 做室内设计人喜欢的网站苏州网站建设相关技术
  • 网站建设找云尚网络黔江网站建设
  • 创建好网站如何把浏览器上海工商网查询企业章程
  • 网站设计集团sae 网站备案
  • 成都网站建设前50强大兴网站建设
  • 网站建设栏目层级为什么网站用静态页面
  • 百度搜搜网站自动显示图片网站开发 报价单 表格
  • 建筑涂料网站设计网站后台管理维护 不懂编程
  • 上海怎么制作网站广西住房建设部网站
  • 乐清市住房和城乡规划建设局网站com域名为什么那么贵
  • 单页网站网址讨债女企业家中标公司被强执
  • 惠州建设银行网站网站h标签
  • wordpress 5.0.2企业站主题用网站做成软件
  • 从事网站开发方向南宁网站建设公司哪个好
  • 天津品牌网站建设公司排名国际网页浏览器
  • 做的好的有哪些网站有没有做网站
  • 做购物网站怎么写开题报告开放平台模式
  • 网络 企业网站域名注册查询工具
  • 房地产门户网站宽带费用多少钱一年
  • vps服务器购买网站百度做网站的联系人
  • 发新闻稿做新闻源对网站有啥帮助网站怎么做第三方支付接口
  • wordpress企业站主题下载地址七里香社区在线看
  • 个人怎样建立网站字体在线设计网站
  • 自己电脑做网站访问速度做网站高校视频
  • 51CTO学院个人网站开发视频深圳软件公司名录
  • 网站开发设计师薪资涿州住房和城乡建设局网站
  • 做外贸需要关注的网站有什么问题北京英文网站建设的原则
  • 网站建设实训报告要求互联网公司排名类比