Catlike Coding网站文章解析 -- 2.Procedural Grid

news/2024/5/20 1:09:31/文章来源:https://blog.csdn.net/yinfourever/article/details/89494234

本章内容

  • 创建一个闭合的cube mesh
  • 给cube添加带弧度平滑的边缘
  • 定义法线
  • 使用sub-meshes(子mesh)
  • 创建一个常规shader
  • 合并碰撞体

1.合成一个cube

上一章https://mp.csdn.net/postedit/89474068我们已经实现了一个平面mesh。一个cube由6个平面组成,我们可以由6个上一章实现的平面修改位置和方向后组成一个cube,这种方法看起来挺好,但是其实并不实用,虽然我们也可以过 Mesh.CombineMeshes这个函数合并这6个mesh,但是我们最好还是一次性创建这个cube。

2.创建cube的顶点

一个cube中的顶点可以分为三类。角上的顶点(下图3),边上的顶点(下图2)以及面上的顶点(下图1)

具体每个种类多少其实就是算数学题,具体如何算的可以参考原文,最后计算定点数量代码如下 

 之后再计算每个顶点的位置,最后结果如下

 

 3.添加三角形

 具体实现方法类似之前的文章,但是涉及更多的数学知识,这里不细讲了,大体思路是先计算cube四周的四个面,之后计算上面(top)和下面(bottom)。最后效果如下

4.使边缘圆滑

基于之前的代码,重新创建一个类命名为RoundedCube,并添加一个Roundness变量用于控制圆滑程度

这回我们要自己计算法线。先定义法线数组

创建一个函数,用于计算法线以及使得顶点沿着法线位置变化形成弧度

 计算法线的原理是依据roundness参数形成一个更小的cube,大cube和小cube之间顶点的向量差就是大cube上该点的法线。如下图所示:

 通过roundness参数,来确定大cube上每个顶点对应的小cube位置

最终结果

5.拆分Mesh

如何计算UV使得其可以渲染纹理?我们可以将总的三角形列表拆分成多个子mesh(三角形列表),其之间共用一些相同的顶点,这也使得我们可以使用不同材质去渲染每一组子三角形列表。

创建三个子列表

计算每个三角形列表

不再是设置mesh.triangles  而是设置子mesh

如果只设置一个材质,那么会发现只有两个面会渲染(一组)

 在mesh render中material array设置三个材质,会得到正确结果

 6.渲染Gird

我们可以使用shader,在shader中指定如何计算使用一个纹理而代替在mesh中存储uv信息。

Unity中默认shader的代码如下:

因为我们mesh中没有uv信息,我们需要在shader中计算,所以我们在顶点着色器中计算uv信息,并将其传入到surface shader中

通过使用shader中的keyword,我们可以控制shader的渲染

根据所设置的keyword提供支持 

根据所选keyword设置来进行uv计算

可以看出同一个shader通过设置keyword来提供三个material对应的效果

 但是能看出来grid line没有和四边形完全对应上,更糟的是因为我们使用的是世界坐标系,当我们旋转和移动这个cube的时候效果会更奇怪。

我们需要使用的是在圆滑之前原始的cube中的顶点位置,因此我们通过将其存储在mesh中传入shader。因为我们这个例子中vertex color channel没有用,所以我们就用它来存储这个信息。

在shader中使用color channel存储的信息进行计算

7.添加碰撞体

添加一个碰撞体时候的样子

为平坦的部分添加box collider(共三个) 

为圆滑边缘添加capsule collider(12个)

最后的效果

https://thumbs.gfycat.com/RingedCornyBlesbok-mobile.mp4

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_706888.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux location root访问文件夹404_如何使网站支持https访问?nginx配置https证书

购买SSL证书要想使用https访问你的网址,首先得拥有颁发的SSL证书。我使用的是免费版,有效期为一年,过期后再重新申请。申请SSL证书购买后,可在搜索框输入证书关键字进入到控制台。点击证书申请,按照提示填写完相关信息…

mysql查询网址_bootstrap+flask+mysql实现网站查询

之前那篇文章是flaskredis的,如果用flaskmysql怎么实现呢?创建数据库:CREATE DATABASE web12306 DEFAULT CHARACTER SET utf8;创建表:CREATE TABLE web12306 (user_email varchar(100) NOT NULL DEFAULT ,user_pass varchar(100)…

网络连接异常、网站服务器失去响应_网站常见故障解决办法

网站在运行过程中,常常遇到各种服务器问题,虽然有服务器厂商的维护,但是往往耗时耗工小编对常见的服务器问题,进行了归纳整理,下面跟各位分享一下。常见故障分析一、恶意攻击在我平时管理网站时,可能会遭到…

搜索引擎提交软件_增加SEO超级外链须知的高权重网站目录提交方法

做SEO的朋友对开放式网站目录应该不陌生吧。网站目录就是按一定的分类方法把收录的网站进行分类归档。网站目录本身是不主动抓取网页的,一般只记录网站的名称,网址和有限的说明文字。和网址站、导航站、酷站网址大全等如同一辙。一般高质量的聚合目录网站…

c主线程如何等待子线程结束 linux_使用互斥量进行同步 - Linux C进程与多线程入门_Linux编程_Linux公社-Linux系统门户网站...

互斥简单地理解就是,一个线程进入工作区后,如果有其他线程想要进入工作区,它就会进入等待状态,要等待工作区内的线程结束后才可以进入。基本函数(1) pthread_mutex_init函数原型:int pthread_mutex_init ( pthread_mut…

xshell搭建宝塔没有远程命令密码框框弹出来_服务器安装宝塔控制面板+wordpress搭建个人网站...

准备工作服务器一台:服务器购买域名一个:随便买一个就行软件环境:宝塔面板第1步:SSH远程连接服务器通过ssh远程连接工具进行服务器主机连接(Xshell、Putty等,百度下载)需要更加详细的关于ssh远程…

php教育网站设计案例_酒店装修,精品酒店设计装修案例,酒店设计网站

酒店设计需要考虑:设计酒店的时候也要顺应市场潮流,不再单一的提供休息、洗漱、睡觉的空间,还要能提供社交、商务等功能,同顾客产生情况共鸣。这样能够引领生活方式的、能够互动,有仪式感的酒店,是很吸引人…

html5手机电商网页设计代码_Html5网站制作,干货!20个视觉体验和内容俱佳的优秀网页设计...

如何创建一个网页?“Html5网站制作”和“灵感干货!20个视觉、体验和内容俱佳的优秀网页设计”有什么关系和内在关联?在图片方面,有三个具体方案:图片地图、Css Sprites、内联图片三种,最值得关注的是 Css S…

asp网站本地测试服务器,小旋风asp服务器,asp本地环境调试必备

学习asp,要在本地搭建一个asp服务器调试环境吧,那么必不可少的要找asp本地调试环境软件,超级小旋风AspWebServer是一个不错的选择。超级小旋风AspWebServer系统基于NetBox开发,可以跟IIS媲美的服务器。小旋风asp服务器 该软件是由…

将虚拟主机加入到netskills.net域环境_网站建设阿里云虚拟主机、ECS服务器、企业邮箱选择购买指南...

对于刚接触阿里云的人来说可能看到阿里云的产品介绍页面会比较头晕,各种产品分类,而且同一个产品在不同的分类目录下都能看到,下面简单介绍一下制作网站过程中常用的阿里云的产品。阿里云在网站建设方面常用的服务主要有云虚拟主机、ECS云服务…

seo黑帽劫持用的php,黑帽seo 论坛:黑帽seo防止网站被k的js劫持跳转代码

由于目前百度搜索百度搜索引擎对于js代码还没有办法完全辨别,因此也就出现了运用js代码跳转的黑帽优化提升手法。现如今在网络上有关js跳转代码不计其数,但是作为黑帽优化提升的seo手法之一,如何确保有效降低跳转的网址被k危害性,…

本机用域名不能访问_域名注册申请网站域名注意事项

互联网用户越来越多,也有越来越多人搭建网站,做个人博客也好、搭建企业官网也好,数量都在逐步上升。做网站的数量在上升,域名注册量肯定也在上升。有的朋友头一次注册域名,对域名不了解也不知道申请网站域名该注意哪些…

eclipse的tomcat如何运行自动弹网页_4个国外网页设计网站案例欣赏

原标题:4个国外网页设计网站案例欣赏要想把自己的网站制作得更加美观、吸引人,你需要多参考一些高质量的网站设计案例。今天就给大家看几个比较好的国外网页设计网站,你可以从中学习这些国外网页设计的思路。1.礼盒电商网站如何让自己的网站更…

vue seo关键词设置_SEO关键词优化排名的几个技巧

关键词是优化网站必须要思考分析的,SEO网站优化过程中,网站的文章内容及标题优化,那么必须要考虑到网站的主关键词与长尾关键词了。那么,SEO关键词优化排名的技巧有哪些?下面眼前一亮就跟大家分享下SEO关键词快速排名技…

未备案域名临时跳过备案提示_做好了网页,有域名和服务器,还要怎么搭建网站?...

不知道你选择的服务器是国内大陆的还是国外或者香港的,如果是国内大陆的服务器我们的网站域名还需要备案,你的服务器提供商是那家就在那家备案,备案流程跟着提示走就可以了,接下来我们开始正式进入将网站三要素(域名、…

angular语言前端开发_web前端开发入门全套学习方法路径,兼职在家做网站也能月入上万...

前端学习路径1.WEB前端快速入门在本阶段,我们需要掌握 HTML 与 CSS 基础,当然,也包含 H5 和 C3 的新特性。这个部分内容非常简单,而且非常容易掌握。相信你也更愿意学习这个部分,毕竟他可以让你最直观的感受到前端的魅…

h5首页加载慢_H5网站制作注意了

H5自适应网站越来越受到企业的追捧,不同于原来的建站模式,H5网站可以很好是调整来达到PC端和移动端的良好展示效果,获得更友好用户体验。H5网站作为网站优化人员,小编第一个想到的并不是H5带来的炫酷效果,认识它解决了…

网站搭建从零开始(三)域名解析

前面介绍了网站搭建所需要的两大要素:域名和服务器,这次要说的是域名解析,也就是把域名和服务器进行绑定的过程。 我们在访问网络时,网址会被发送到DNS服务器,然后由DNS服务器返回我们所要访问的服务器IP地址&#xff…

网站搭建从零开始(四) 服务器的配置

域名解析设置好了,通常我们就可以访问我们的站点了,上篇里面没有详细讲服务器绑定域名的过程,可能不够清楚,这篇里面再做一下介绍。同时对服务器端的配置进行介绍(由于各种服务器各不相同,这里也没法一一介…

网站搭建从零开始(五) WordPress的安装

前面说了很多废话,现在终于转到正题,WordPress的安装。 1、WordPress安装很简单 如果你的服务器能通过应用中心一键安装WordPress,这一节就很轻松了,基本上不需要做什么。但是考虑到那种新手的方式,以后如果换了服务器…