几何运算
文章平均质量分 83
VT LI
VTL
展开
-
UE5-Nanite构建
在MeshBuilderModule.cpp的FMeshBuilderModule::BuildMesh中执行到StaticMeshBuilder.cpp的BuildNanite会执行nanite的构建NaniteBuilderModule.Build执行到NaniteBuilder.cpp的FBuilderModule::Build分线程构建三角形首先从Sections中拿到材质索引设置到MaterialIndices中。执行BuildNaniteData,根据三角形的数据执行C.原创 2022-04-10 23:10:25 · 2988 阅读 · 0 评论 -
csg体素构造表示形式(Constructive Solid Geometry)
csg的全称是Constructive Solid Geometry,也就是体素构造表示形式。godot引擎中有支持。主要用于一些形状间的结合,通过联合,相交,相减的操作来组成一个新的网格体。这种技术在有号距离场的形状距离识别中也有相应的应用。Prototyping levels with CSG — Godot Engine (stable) documentation in English核心方法是mergeBrushesintersectsInclusiveintersects原创 2022-02-01 13:40:19 · 2787 阅读 · 0 评论 -
unity各种形状正确描边方式
描边在卡通渲染中经常会用到,最常见的做法是法线外扩,这种方式有一个问题是如果顶点的两个边的法线变化不连续或者说变化比较大,则会出现分叉,入正方体的法线外扩就会有这个问题。其他解决方式:然后有一些做法可以解决这种问题,比如顶点放大,然后后处理把中间角色的颜色剔除来模拟描边。这种的问题就在于有一个全屏后处理的消耗,对于手机带宽有一定的影响。当然还有卷积处理等等都会增加一定的带宽消耗。而之前有尝试过一种解决方式,能够类似多一个pass描边来解决问题而不需要其他多余的消耗。本方案核心思路:...原创 2021-09-02 10:55:14 · 1990 阅读 · 1 评论 -
有号距离场(SDF)
什么是有号距离场(SDF)?有号距离场(SDF)是指建立一个空间场,这个空间场中每个像素或体素记录自己与周围像素或体素的距离,如果在物体内,则距离位负,如果是在外面则记录相差的距离,在边上刚好位0在2D上的演示如下原图:SDF简而言之他是一个记录空间距离的信息。SDF能做什么?1.高清文字(TMP)2.形变动画3.序列帧动画柔和过度4.碰撞检测5.软阴影6.环境遮蔽(AO)TMP:用过TMP的人可能会有印象,..原创 2021-08-09 20:52:03 · 8083 阅读 · 0 评论 -
unity 多视角下的鱼眼效果
比较多的鱼眼效果是用屏幕坐标下的z坐标来做y轴的距离差值。得到的效果如:参考:https://zhuanlan.zhihu.com/p/359178010?ivk_sa=1024320u但是,因为他是屏幕空间下的模拟,所以假如你要转换视角时物体的y轴就会不断改变,因为物体在屏幕中的像素改变了。那么如果要让物体不会因为转视角而改变高度的话,就需要一个统一标准。1.那么可以想象的就是在世界坐标下,大家的坐标都时确定不变的。2.根据物体顶点与摄像机的距离来作为半径,来模拟出摄像机为中心的,原创 2021-06-21 16:13:30 · 1500 阅读 · 0 评论 -
urp下computeshader步进点光源遮蔽
如果点光源不做遮蔽,那么他后面的墙会被照亮现实中是不会这样的,如果不考虑间接光照的话,他后面应该是被遮蔽的,也就是不会照亮的。1.builtin下的遮蔽:在builtin下点光源可以做阴影,而他的阴影的实现方式跟直接光照的实现方式有一些差异。直接光照是直接采样一张(如果有级联则会多张同一方向的)shadowmap,然后根据深度判断遮蔽。而builtin下的点光源是采样6个方向的深度信息存入cubemap中。然后在采样时取cubemap中的点来确定深度是否足够遮蔽。计算深度..原创 2021-06-16 19:18:51 · 519 阅读 · 0 评论 -
平面运算方式的反射渲染
现在的反射的做法有好多,有静态的做法也有动态的做法。其中包括cubemap的方式或者reflectionprobe的方式,这两种方法都是要做预处理的,其中的reflectionprobe可以做实时反射,但是效率就比较低了。另外还有planar reflect的倒影做法,planar reflect是利用另一个摄像机然后用平面几何的方式来计算的,当然需要重新计算裁剪空间的范围,这个方法也比较适合用在手机上,他的消耗相对来说是比较低的,但是他只适用以平直的平面。还有一种就是ssr了,这个效果是在屏幕原创 2021-06-03 16:59:32 · 450 阅读 · 0 评论 -
Mesh Slicer 切割人体的原理分析
介绍:下载地址:https://assetstore.unity.com/packages/tools/modeling/mesh-slicer-59618Mesh Slicer 是一个可以进行切割人体或者切割其他物体的能力的,他比较好的一点是组织三角面的能力,不会像其他切割网格的方式会产生把多个原本独立的网格连接起来(因为这样索引设置简单)。而介绍的Mesh Slicer 则比较好的解决这个问题,他原理是丢弃一些顶点信息然后重建了三角形网格。以下介绍一下他的工作流程:..原创 2021-03-18 16:57:09 · 1443 阅读 · 2 评论 -
computeshader+gpuinstance优化地形工具
一:获取terrain信息1.首先要看我们要组成多大的尺寸的地形碎片,比如32x32的或64x64的。就从terrain中获得指定尺寸大小的信息。2.然后这里需要建立四个mipmap,从一个四边形的四个边继续细化三角形。四个对象就是他的子节点。也就时如果我们确定32x32的话,mip就是16x16,8x8,4x4二:根据摄像机距离获取具体mesh1.根据摄像机与node的距离,以100为分割距离选择不同的mipmap,比如距离在100以内用mip为0的,...原创 2021-03-04 16:32:56 · 779 阅读 · 1 评论 -
三维曲线
三维曲线的表示方式有几种方式:包括参数多项式曲线,艾特肯多项式算法,拉格朗日基多项式,埃尔米特形式曲线,贝塞尔曲线等。最后我们会讨论样条曲线的方式。一:参数多项式曲线:说道曲线,我们很自然的想到一种应用最广的曲线函数,就是圆的参数描述方式:而多项式参数的表示形式是类似如下形式:其中n被称为多项式的次数。这也是一个单项式形式或叫幂形式。二:艾特肯算法:他是利用一种分而治之的方式实现的额曲线,也就是一条仅插入前n-1个点的曲线,忽略最后的点;另一条插入最后n-1...原创 2021-01-28 00:10:03 · 3140 阅读 · 1 评论 -
向量运算实现碰撞系统
1.physx物理系统我们在制作游戏时经常会用到碰撞检测,像当前主流的两大3D游戏引擎中的物理系统都是集成了physx物理系统。Unity是通过collider确定形状,也是有physx所拥有的几个形状,椭圆碰撞体,圆碰撞体,正方碰撞体,网格碰撞体,地板碰撞体,三角面碰撞体,还有一些2d相关的碰撞体。然后用rigidbody来确定动态碰撞体,有了rigidbody就产生了trigger或者collider事件并且可以产生多个碰撞体之间的约束。UE4中同样也是有physx所拥有的几个形状,椭.原创 2021-01-27 17:46:34 · 983 阅读 · 0 评论 -
unity实现太空场景
虚空场景效果显示上的要求是:左右两边是虚空的太空场景 太空和可行走路径间有一个宽度的雾的效果。 中间是可行走路径 地板上的物品一部分是需要被裁剪的,一部分是不能裁剪的。 角色不能越界行走,怪物死亡也只能再区域内。工具的要求是:要能用笔刷方式画出可行走区域 自动生成虚空和边缘区域 边缘区域的透明和范围要可控然后看看生成的场景的节点布局:这里解释下:Ground是地板物品Hollow是虚空效果HollowEdge是虚空边缘效果TerrainMa..原创 2021-01-19 10:12:33 · 1340 阅读 · 0 评论 -
固定视角的特效优化方式(2)屏幕空间特效显示限制
固定视角的游戏有个特点就是摄像机的角度是一致的,不会有变化。但因为我们的某款游戏在游戏过程中会有大量的粒子特效出现,overdraw会非常高,drawcall数量同样也会很高。这样的话在手机上会由于带宽问题而产生消耗过大的问题。如果是比较低端的机型还可能会导致卡死等严重的情况。我们要避免这样的情况,除了上一章说的特效rt化的方式(只能解决固定的效果),我们还得控制特效的数量。...原创 2020-03-31 14:50:20 · 282 阅读 · 0 评论 -
lwrp聚光灯实现方式
聚光灯有许多用途,他们可以用来模拟路灯, 壁灯,或许多创意用法,例如模拟手电筒,因为投射区域能精确的控制,因此很适合用来模拟打在角色身上的光或是模拟舞台灯光效果等等在项目中我们自己实现了一套聚光灯的方法(没有体积光的计算),整体思路是比较像素点与光照原点的位置得到的向量和光照方向的向量点乘,再跟spotAngle的一半的cos做比较。如果大于spot的一半的cos则说明超过了限制,是不属于聚光灯...原创 2020-01-15 11:42:21 · 842 阅读 · 0 评论 -
unity 蒙皮的实现方式
原理:蒙皮,三维动画术语,也用于3D游戏中。三维动画的一种制作技术。在三维软件中创建的模型基础上,为模型添加骨骼。由于骨骼与模型是相互独立的,为了让骨骼驱动模型产生合理的运动。把模型绑定到骨骼上的技术叫做蒙皮。因为蒙皮动画要改动的是我们的骨骼的缩放,平移,渲染。是跟骨骼有关系的。但是我们的模型是一个mesh,是由很多顶点组成的,那么要让骨骼改动的时候mesh也变化的话就需要改动mesh上的...原创 2020-01-10 17:11:22 · 5118 阅读 · 0 评论 -
点到平面距离完整推导
前几天跟同事讨论一个几何知识时遇到了一些疑问,后面经过推导弄明白了,其实这道题不难,但是里面有些基本的原理深究的话一开始还是没想明白,在这里记录下:点到面的距离一般还说时最短距离,但一个平面一般是有界限的,所以需要先把一个平面用截距式方程显示为:Ax+By+Cz+D=0借用这张图来表示:可以看到要求d(最短距离)需要知道q点到p点(p点时平面的点)的距离(也就是他的模),以及这...原创 2019-12-13 10:13:43 · 11134 阅读 · 0 评论