16 AndrewFan

尚未进行身份认证

我要认证

编程是一种艺术

等级
TA的排名 2w+

风之幻想

《风之幻想》是我的一个练习项目,业余时间开发,用于自己的技术练习,同时也希望可以最终成为一款独立游戏。

2020-02-09 16:00:39

扫线法快速判断凹多边形相交

简介:首先给出我的Github页面:ConcaveIntersection这个开源库基于Unity开发,主要实现了凹多边形之间的相交判断,当然也可以应用于顶点与凹凸包、线段与凹凸包、凸包与凸包之间的相交判断,也就是说,这个方案基本可以解决前面两则文章中的所有多边形判断,效率也非常高,复杂度几乎接近O(n),下面解释原理。一、扫线法概念扫线法其实是一种常用的平面空间算法思路,在很多算法...

2020-01-08 00:55:14

点、线段、凹多边形相交判断以及游戏中的常见应用

本文接前文点、线段、多边形相交判断以及在游戏中常见的物理应用前文主要讲解点、线段、凸包之间的相交判断算法,本文主要解释凹多边形(简称凹包)的判断方法。一、简单多边形由于以下论述都是基于简单多边形,因此线解释什么是简单多边形,如下左图是简单多边形,右图则不是。也就是自身无交叉的属于简单多边形,而带有交叉的就不属于简单多边形。左侧是一个典型的凹包。二、如何判断顶点与凹包是否相交...

2020-01-07 23:03:00

点、线段、凸多边形相交判断以及在游戏中的常见应用

本文记录一些常见的相交判断方法,属于游戏开发中比较常见的几何应用。目录一、线段之间的相交判断:二、顶点走向判断三、路径导航四、顶点与凸包相交计算五、线段与凸包的相交计算六、凸包与凸包的相交判断一、线段之间的相交判断:问题,如下图,如何判断线段AB和CD是否相交?解答:线段之间的相交判断一般使用以下夹持法思路:1、假如ABC保持现有位置,D可移动,那么穿透...

2020-01-05 22:09:53

Voronoi图和扫线法

人类学家已经使用Voronoi图来描述不同文化的影响区域。由晶体学家解释某些晶体和金属的结构;由生态学家研究植物之间的竞争;由经济学家为美国经济中的市场建模...介绍假设您生活在沙漠中,那里唯一的水源是到零星散布各处的泉水。对于每个泉水,您都想确定最接近该泉水的位置。结果可能是一张地图,如此处所示,其中地形被划分为最接近各个泉水的位置区域。{每块区域所对应的最接近的泉水,即为其包含其内的...

2019-12-24 21:11:20

BowyerWatson算法

不规则三角网(Triangulated Irregular Network,TIN)在表示地形的形态方面具有较好的表现,其生成算法一直备受关注。Delaunay三角剖分生成的网格正则性好,因此在实际工程计算中应用很广。生成 Delaunay 三角网格的方法中,目前大都基于 Bowyer-Watson法,它是一种逐点插入法,基本思路是 :先由给定的点集生成一初始网格,再根据 Delaunay 剖分原...

2019-12-11 15:10:15

MALI Tile-based rendering简单原理介绍

写在最前关于mali的架构的一点深入了解,将现有的GPU的基本流程和mali的做对比,提出其中的优点与缺点。原文地址:https://developer.arm.com/graphics/developer-guides/tile-based-rendering传统GPU传统GPU的架构一般被称为Immediate mode GPU.主要的流程就是vertex shader 和 fra...

2019-12-10 17:35:16

MarchingCubes算法

概述  之前的博文已经完整的介绍了三维图像数据和三角形网格数据。在实际应用中,利用遥感硬件或者各种探测仪器,可以获得表征现实世界中物体的三维图像。比如利用CT机扫描人体得到人体断层扫描图像,就是一个表征人体内部组织器官形状的一个三维图像。其中的感兴趣的组织器官通过体素的颜色和背景加以区别。如下图的人体足骨扫描图像。医生通过观察这样的图像可以分析病人足骨的特征,从而对症下药。  这类应用...

2019-12-07 23:06:50

Triangulation by Ear Clipping

Triangulation by Ear ClippingDavid Eberly, Geometric Tools, Redmond WA 98052https://www.geometrictools.com/This work is licensed under the Creative Commons Attribution 4.0 International License. To ...

2019-12-07 22:43:00

Ear Clipping算法简介

背景偶尔翻出来几个以前的老游戏玩了一下,其中包括了孢子。说实话,以前作为玩家的时候感觉这个游戏也就一般。但是现在作为游戏开发者发现这个游戏涉及到一些很酷的技术,包括自定义的肢体(Skin方面)、动画的泛化(Animation Retargeting方面)以及IK结算的泛化。因此查找了一些这方面的资料,尝试了解一些这方面的知识。搜索了一些资料之后,决定挨个的去补一补对应的知识点。有些知...

2019-12-03 21:31:31

Shader内置函数和变量

内置函数radians(degree) : 角度变弧度;degrees(radian) : 弧度变角度;sin(angle), cos(angle), tan(angle)asin(x): arc sine, 返回弧度 [-PI/2, PI/2];acos(x): arc cosine,返回弧度 [0, PI];atan(y, x): arc tangent, 返回弧度 [-PI,...

2019-12-03 14:27:08

GJK 算法

GJK 算法(Gilbert–Johnson–Keerthi)翻译自:http://www.dyn4j.org/2010/04/gjk-gilbert-johnson-keerthi/今天,我将讨论dyn4j项目随附的其他碰撞检测算法。您可以找到很多GJK文档,但是其中很多实际上是技术性的,主要是因为它们是研究论文。我强烈推荐该视频教程,老实说,看完之后,您甚至不需要进一步阅读。但是,如果...

2019-09-29 15:29:42

Broccoli Tree Creator 使用说明 5_2、Branch Mapper Node(分支映射节点)

Branch Mapper Node 分支映射节点此映射器用于为树的分支结构网格的设置UV映射。为了使用材质正确渲染网格,进行映射是必要的。Use Custom Material使用自定义材质Checking this option allows the selection of a custom material to be applied to the branch struct...

2019-08-25 22:28:55

Broccoli Tree Creator 使用说明 5_1、Sprout Mapper Node (萌芽映射节点)

Sprout Mapper Node萌芽映射节点萌芽映射节点将材质应用到萌芽网格,该节点有一个映射器列表,每个映射器应该分配给一个萌芽组,以便为属于指定组的所有网格应用材质。萌芽组的映射器列表Sprout Group 萌芽组将映射器分配给指定的萌芽组,然后映射器上的所有指令都将会应用于属于该组的萌芽网格。有两种模式可供选择,自定义材质模式或者纹理模式。颜色预览模式下的...

2019-08-19 13:55:38

Broccoli Tree Creator 使用说明 4_2、Sprout Mesh Generator Node (萌芽网格生成器节点)

Sprout Mesh Generator Node 萌芽网格生成器节点此元素包含有关如何在树结构上对各种萌芽组进行网格化的说明。在显示树的萌芽网格时应用了灯光和纹理。标记树的网格,有两个萌芽组(绿色和蓝色)。Meshes 网格网格条目列举了某个萌芽组上的网格指令。须将这些网格条目分配给指定的萌芽组,以便为​​属于该组的萌芽产生网格,该组的颜色将显示在每个条目的左侧。条...

2019-08-18 21:36:37

Broccoli Tree Creator 使用说明 4_1、Branch Mesh Generator Node (分支网格生成器节点)

Branch Mesh Generator Node 分支网格生成器节点此元素为树的所有分支结构创建网格。Min and Max Polygon Sides 最小和最大多边形边数用于对一系列后续分支进行网格化的多边形边数。当最小和最大多边形边相同时,分支的所有截面将具有相同数量的多边形边;如果最小值和最大值不同,那么会在分支周长的范围内计算边数(较细的分支将分得到较少的多边形边)。...

2019-08-18 21:18:24

Broccoli Tree Creator 使用说明 3_4、Sparse Transform Node (稀疏变换节点)

Sparse Transform Node (稀疏变换节点)稀疏用于修改树上已定义的分支结构。使用该指令时需要绑定到树的特定层次结构级别;例如,级别0表示根分支的子分支将接收修改。Levels List(分层列表)保存要应用于每个层次结构级别的指令。该列表最多可定义5个层次结构级别;如果树结构上不存在层次结构级别,则不会处理该指令。每个层次结构级别的稀疏属性列表。Reo...

2019-08-18 01:11:06

Broccoli Tree Creator 使用说明 3_3、Girth Transform Node (周长变换节点)

Girth Transform Node(周长变换节点)此元素用于为树枝分配周长值。周长值用于创建表示树皮的网格,并且也是指定芽的表面上的芽的参考值。基地周长树的主干级别的周长值(分支层次结构0)。在基数= 1的周长的树在基地= 3周围的树顶部的周长树顶部分支的周长值(最后一个分支层次结构)。顶部周长的树= 2,基部的周长= 1曲线过渡曲线控制如...

2019-08-18 01:05:25

Broccoli Tree Creator 使用说明 3_2、Branch Bender Transform Node(分支弯曲变换节点)

Branch Bender Transform Node(分支弯曲变换节点)BranchBender 单元通过向现有分支添加弯曲点来进行工作。沿着分支长度分布的每个弯曲点可以施加方向变化,从而在整体上修改分支的形状。Max and Min Bend Points(最大和最小弯曲点数)最大和最小弯曲点值设置分支上可能的弯曲点数,将使用分布曲线计算最终弯曲点数。Length Distr...

2019-08-18 00:07:26

Broccoli Tree Creator 使用说明 3_1、Length Transform Node(长度变换节点)

Length Transform Node(长度变换节点)长度变换元素是流水线上的一种结构变换元素;它对树上现有分支的长度和长度缩放执行修改。树上的每个分支的绝对位置插值介于0和1之间,具体取决于它们相对于父级的位置以及在整体树上的分层位置。该位置插值将被应用到分支的长度或长度因子(0表示最小值,1表示最大值)。Curves(曲线)这些曲线用于控制绝对位置值在其位置和水平分量上的分布...

2019-08-17 10:08:21

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享精英
    分享精英
    成功上传11个资源即可获取