Godot4.x 几何与绘图
文章平均质量分 77
巽星石
业余编程爱好者,Godot游戏引擎爱好者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Godot4.0】贝塞尔曲线在游戏中的实际应用
之前研究贝塞尔曲线绘制,完全是以绘图函数,以及实现节点连接为思考。并没有实际考虑贝塞尔曲线在游戏中的应用。今日偶然看到悦千简一年多前发的一个用贝塞尔曲线实现追踪弹或箭矢效果,还有玩物不丧志的老李杀戮尖塔系列中的卡牌动态箭头。想起来确实很需要实现和总结动态贝塞尔曲线。可以用在简单的弹道轨迹和卡牌或战旗攻击箭头的生成。可以封装成几个类,无限复用。原创 2025-03-13 00:30:06 · 680 阅读 · 0 评论 -
【Godot4.3】多个多边形求并集函数
多边形求并集是一个非常有用和常见的操作,Geometry2D的方法只能一次求两个多边形的并集。而我想要的一个支持从1个到任意多个多边形的并集求解函数。原创 2025-03-13 00:24:08 · 356 阅读 · 0 评论 -
【Godot4.3】RenderingServer总结
是Godot中“服务器”(*Server)单例中负责渲染的“服务器”。这里的“服务器”并不是网络服务器,而可以理解为底层服务或底层API的集合。使用可以完全绕过场景和节点系统。如果场景系统是瓶颈所在,那么这样做就可以提升性能,否则无法提升性能。因此对学习可以理解为对Godot底层渲染API的学习,学习的目的是绕过场景和节点系统进行渲染优化。截止到Godot4.3,是一个拥有将近500个(我自己数的是495个)方法的庞大单例。原创 2025-03-13 00:18:47 · 806 阅读 · 1 评论 -
【Godot4.0】EasyClock时钟组件
一个纯粹基于_draw简易参数化时钟组件。可以自由缩放,目前支持各种颜色、字体、字号修改以及开启或关闭绘制数字、刻度。基于_process刷新有点浪费,后期可能基于Timer进行修改。原创 2025-03-13 00:11:14 · 528 阅读 · 0 评论 -
【Godot4.2】Vector2向量插值的应用
【代码】【Godot4.2】Vector2向量插值的应用。原创 2025-03-13 00:05:11 · 360 阅读 · 0 评论 -
【Godot4.2】myCanvas静态函数库
(去年4月的文章)在Godot中讲解几何与数学部分时,Godot本身提供的绘图函数可以拿来绘制示意图。而在实际使用中,我根据自己的绘图需要编写了一个名叫myCanvas的静态函数库,最早是在2024年3月27日开始编写,目前为止仍在不断的扩充和完备当中。通过它,你可以比较轻松的绘制带箭头的线段,也就是向量,以及做一些点和角度的标记等。原创 2025-03-12 23:59:08 · 345 阅读 · 0 评论 -
【Godot4.3】Polygon2D详解
去年9月的测试性文章,后续补充完整。原创 2025-03-12 23:53:16 · 621 阅读 · 0 评论 -
【Godot4.3】Geometry2D总结
【Godot4.2】2D辅助类Geometry2D入门本文是去年9月份新总结的。Godot提供了一个名叫Geometry2D的类,它提供了一些用于2D几何图形(包括Polygon、PolyLine等)相关的函数,可以实现诸如多边形与多边形或多边形与折线的布尔运算等。本篇就是简单研究和总结这部分内容的一个简要笔记。Geometry2D的布尔运算方法名起的优点随意,反倒是代表布尔运算的枚举常量更符合原意,所以简单封装一个函数,代表多边形的布尔运算,并用枚举常量值,来进行运算的区分,根据运算类型调用不同的方法。原创 2025-03-12 23:42:21 · 890 阅读 · 0 评论 -
【Godot4.3】斜抛运动轨迹曲线点求取函数
原文写于去年9月。一篇测试性的文章。原创 2025-03-12 23:37:47 · 880 阅读 · 0 评论 -
【Godot4.3】用折线切割多边形
Geometry2D并没有提供直接的多边形切割函数,但是基于折线与多边形求交集、多边形与多边形求交集、差集,我们就可以实现切割的求解。原创 2025-03-12 23:26:43 · 620 阅读 · 0 评论 -
【Godot4.4】Rect2总结
Rect2是2D场景中比较重要的一种数据类型。Rect2的本质含义是2D场景的轴对齐包围盒,而不是可以自由变换的矩形。Rect2提供了一些方法,可以方便的判断Rect2之间是否重叠、包含等,并可以获得重叠的区域。也可以获得两个Rect2的包围盒。结合绘图函数,在区域填色、鼠标框选、布局以及某些交互逻辑方面有很多的应用。原创 2025-03-09 16:36:01 · 501 阅读 · 0 评论 -
【Godot4.3】自定义圆角容器
Godot控件想要完全实现现代UI风格,需要进行大量的自定义组件设计。本篇就依托于笔者自己对现代UI设计中的圆角面板元素模仿来制作圆角容器组件。原创 2025-02-24 21:57:35 · 1130 阅读 · 0 评论 -
【Godot4.3】基于绘图函数的矢量蒙版效果与UV换算
将圆角矩形的每个顶点坐标除以对应圆角矩形所在Rect2的size,就得到了顶点对应的UV坐标。然后使用,便可以做到用图片填充圆角矩形的效果。而且这种计算的效果就是图片随着其填充的图像缩放。这就类似于是在CanvasItem的绘图函数基础上实现了矢量蒙版效果。原创 2025-02-24 21:47:35 · 889 阅读 · 0 评论 -
【Godot4.3】自定义StyleBox
借鉴B站UP主JACKADUX去年8月份的Godot 进阶技法 | 创建自定义的 StyleBox 资源类型中的案例源码,加上自己的简单发挥,搞定了自定义StyleBox。这意味着可以很大程度上不再受限于Godot自己提供的4种StyleBox的限制,尤其是,而StyleBox则是自定义容器和控件样式必备的,也就意味着在UI界面设计上将有更多的可能。StyleBox样式盒基类可以用于:Button、LineEdit、CodeEdit、Tree控件等的背景样式设定分为:空样式盒。原创 2025-02-16 20:21:45 · 1375 阅读 · 0 评论 -
【Godot4.3】复合路径类myPath
之前编写过一个基于指令绘图的类交myPoint,但是只涉及折线段生成。这次我基于SVG的<path>标签路径指令的启发,实现了一个能够获得连续绘制的直线段、圆弧和贝塞尔复合路径的类型myPath。可以使用绘图指令方法或字符串形式的绘图指令解析来创建符合路径。通过points属性可以获取路径的点集,并用于CanvasItem绘图函数绘制。原创 2024-10-04 17:05:29 · 440 阅读 · 0 评论 -
【Godot4.3】模拟平面图形绕轴或点在空间旋转
平面图形,除了常规的线性变换:平移、缩放、旋转、斜切之外。还可以模仿在三维空间旋转、透视等等。原创 2024-10-03 21:24:31 · 1076 阅读 · 0 评论 -
【Godot4.3】用2D网格模拟一点透视
空间的透视是可以在二维平面上参数化计算和模拟的。本篇基于CanvasItem绘制函数自带的UV坐标和贴图功能,实现基础的平行透视效果。或者可以叫做一点透视,由一个消失点决定物体的透视效果。原创 2024-10-03 21:23:14 · 590 阅读 · 0 评论 -
【Godot4.3】基于中心点连线的矩形重叠检测
这个方法是我自己想到的,经典的矩形重叠(碰撞)检测,是一段很复杂的逻辑判断,而根据两个矩形中点连线,与两个矩形宽度和高度之和一半的比较,就可以判断两个矩形是否重叠,并且能够计算出重叠向量。通过给两个矩形施加反向的一半重叠向量,可以将两个矩形“推开”。通过用鼠标自由移动的矩形,可以使用给原本静止的矩形施加重叠向量,从而推动它真实的物理碰撞是要考虑两个物体的质量和速度的,本文和ShapeTest所研究的只是几何上的重叠和重叠部分的向量求取。原创 2024-10-03 12:51:48 · 1365 阅读 · 0 评论 -
【Godot4.3】图形碰撞相关函数库ShapeTests
最近积累了一些图形重叠检测,以及求图形的轴对齐包围盒Rect2,还有求Rect2的外接圆等函数。感觉可以作为一个单独的函数库,提供日常的使用,所以汇总成了ShapeTests。注意:函数名和写法可能会不断改进。原创 2024-10-03 12:11:21 · 1083 阅读 · 0 评论 -
【Godot4.3】简单物理模拟之圆粒子碰撞检测
最近开始研究游戏物理的内容,研究运动、速度、加速度之类的内容。也开始模仿一些简单的粒子模拟。这些都是一些基础、简单且古老的算法,但是对于理解游戏内的物理模拟很有帮助。甚至你可以在js、Python或者其他程序语言中实现它们。图形的碰撞检测是第一个我想要实践的内容,而在碰撞检测中最简单的应该就是圆的碰撞检测了,本篇就简单实践一下圆的碰撞检测。本篇简述在Godot用CanvasItem绘图函数实现简单的圆粒子和元粒子的重叠检测与推开操作这是图形碰撞检测算法的第一篇,后续文章将讨论矩形包围盒的算法。原创 2024-09-29 01:39:17 · 1035 阅读 · 0 评论 -
【Godot4.3】三角形类
在GDSCript中你想要表示一个平面三角形,只需要设定3个点的位置,也就是3个Vector2就行了,或者一个size()==3的。但是想要进一步处理三角形,获得它的一些几何特征,比如:某个内角的角度值,角平分线、垂直平分线、中线、高线,还有对应的内接圆、外接圆圆心与半径等,就会变得比较困难。本篇就讲述如何在Godot4.3中,用类来表示三角形,并获取它的几何特征。本文所述,是三角形几何特性获得的初步,API肯定会大改,只是作为初步试验成功的结果。三角形是一种特殊的多边形,一些几何特性值得深入研究。原创 2024-09-23 23:44:29 · 699 阅读 · 0 评论 -
【Godot4.3】2D程序生成植物概论
Godot的2D程序化植物生成是我一直想要探讨的一个内容,但是一直没有真正开动,在刚过去的中秋节假期期间,在老家无聊,在一个素描本上构思了一系列想法。本篇就基于这些自己的想法介绍一下程序化植物生成的基本思路。不一定对,不一定能实现到什么程度,但是思考、探索和总结的过程,本身可能比结果更重要。初步设想,但可行性比较高。原创 2024-09-22 14:45:19 · 1099 阅读 · 0 评论 -
【Godot4.3】点数据简易表示法和Points2D
在构造多点路径时我们会用到,并使用Vector2()来构造点。在手动创建多点数据时,这种写法其实很难看,有大量重复的Vector2()如果有办法省去重复的Vector2()就好了。代码会显得简洁不少。这也就是本篇文章探讨和实现的内容,用更简单的方式去表示点集(原创 2024-09-22 13:56:43 · 592 阅读 · 0 评论 -
【Godot4.3】数学函数曲线点求取与绘制
曲线可以通过描点,然后连线得来。并不是所有曲线都有数学函数,但是有表达式的数学函数,都可以用描点法求出来。原创 2024-09-22 13:27:29 · 979 阅读 · 0 评论 -
【Godot4.x】Mesh相关知识总结
很早之前发布过一篇关于几何体程序生成的文章,当时对于三角面和网格的构造其实还没有特别深入的认识,直到自己脑海里想到用二维数组和点更新的方式构造2D类型的多边形Mesh结构,也意识到在Godot中其实Mesh不仅是3D网格,也可以构造2D网格。在查看一些文章以及复习Godot相关的内置文档之后,发现基于三角面的Mesh构造,其基本结构包含两种形式,一种是三角扇,一种是三角带。几乎所有的几何图形和三维立体结构,都可以用这两种结构组合生成。原创 2024-09-21 23:42:23 · 1866 阅读 · 0 评论 -
【Godot4.3】堆叠法模拟图片厚度
如果你从事过平面设计行业,在古早的PS海报设计中,会使用一种复制+像素偏移的方式创建一个图形或图片元素的厚度。这是一种很妙的思路。而在本文中,所要讨论的就是基于GDSCript,实现这一过程的程序化和参数化。从而能够为任意图片元素添加参数化的厚度。# 绘制基于堆叠模拟厚度的图片canvas_item:CanvasItem, # 要绘制到的目标 CanvasItemtexture:Texture2D, # 要添加厚度的纹理图片thickness:int = 20, # 厚度(堆叠绘制次数)原创 2024-09-21 21:19:51 · 479 阅读 · 0 评论 -
【Godot4.3】胶囊形的偏移获取法
之前用半圆弧拼接的方式求过胶囊形,在逐渐熟练使用Geometry2D的过程中,发现通过线段求端点是圆角类型的偏移多边形,获得的就是胶囊形。所以我们有了第二种胶囊形求法。# 基于多边形偏移的胶囊形求取函数polygon.append(polygon[0]) # 闭合这只是一个基于Geometry2D改变特殊图形求取思路的案例之一,实际上通过偏移、布尔运算,你可以用几行代码求出一些原先用向量旋转、向量加减法以及线性变换思路弯弯绕半天的图形。原创 2024-09-21 20:43:18 · 505 阅读 · 0 评论 -
【Godot4.3】链条结构图形与生物模拟概论
本篇讨论的内容是笔者基于B站视频《一种简单的程序化动画技术_哔哩哔哩_bilibili》所演示的内容,简单实现的Godot版本。主要探讨如何设计一种关节链条结构,能够跟随鼠标进行位置运动,并用圆形链条结构模拟软体动物动态爬行的过程和其身体本身。本文到发布为止,并没有完全实现视频中全部的内容,后续可能会在本文基础上扩展和更新。原创 2024-09-21 20:21:50 · 1823 阅读 · 0 评论 -
【Godot4.3】多边形的斜线填充效果基础实现
图案(Pattern)填充是一个非常常见的效果。其中又以斜线填充最为简单。本篇就探讨在Godot4.3中如何使用Geometry2D和CanvasItem的绘图函数实现斜线填充效果。本篇简要描述了多边形斜线填充算法的简单思路,当然这里只是初步的测试,只适用于凸多边形在0到90度之间的情况。上面例子中的凹多边形在一定0到90度之间的某些清下也会出现错误,如下图:这种错误其实也可以通过将凹多边形拆解为若干凸多边形求解。0到90度之外的求解本篇并没有补足,但是大致思路是一致的。原创 2024-09-08 01:55:25 · 1105 阅读 · 0 评论 -
【Godot4.3】模拟多边形阴影的方法和函数
在绘图函数的使用过冲中,已经总结出了这样的图形类,并通过将其资源化,可以方便的用于自定义节点。初期的也加入了多边形阴影的绘制选项,不过是简单的复制+偏移形式。本篇在简单复制+偏移形式阴影的基础上,讨论了多边形的平行光阴影、点光源阴影等模拟原理和在Godot4.3中的实际求解。最后给出一个初步的既适用于凸多边形也适用于凹多边形的平行光阴影求解函数。原创 2024-09-07 02:06:24 · 1384 阅读 · 0 评论 -
【Godot4.3】CanvasShape资源化改造
通过把之前自定义的类变成资源类型,将可以同时用于CanvasItem绘图和创建扩展的Node2D和Polygon2D节点等。本篇就完成类的资源化改造,并记录改造过程和思路。通过将CanvasItem绘制的图形编写为自定义类,完成了第一次简单的进化而将变成自定义资源类型,则完成了二次进化,它将可以用于Node2D、Control、Polygon2D以及其他自定义节点上,也可以单独用于代码形式的CanvasItem绘图通过在类、场景节点或自定义节点中设定。原创 2024-09-06 00:35:40 · 1353 阅读 · 1 评论 -
【Godot4.3】基于纯绘图函数自定义的线框图控件
同样是来自2023年7月份的一项实验性工作,基于纯绘图函数扩展的一套线框图控件。初期只实现了三个组件,矩形、占位框和垂直滚动条。本文中的三个控件类已经经过了继承化的修改,使得代码更少。这也是一项很随意的试验性工作,初期并没有采用类的继承,所以参数有很多重复代码,经过改进之后,代码量下降,而且可以很好的进行拓展。你可能会问在Godot这么简单的软件中还需要线框图嘛,直接干不就行了。但其实线框图作为一个设计阶段的工具对整体策划和把握还是有一定作用的。尤其是对UI界面设计。原创 2024-09-02 23:14:52 · 886 阅读 · 0 评论 -
【Godot4.3】基于ShapePoints的Polygon2D扩展
这同样是来自2023年7月份的一项实验性工作,基于最初版本的静态函数库,实现了对Polygon2D节点的扩展,用于创建参数化图形的Polygon2D节点。Polygon2D节点本身只能通过顶点绘制工具,创建很随意的多边形。通过函数库求取对应图形的顶点数据,然后赋值给Polygon2D节点的polygon属性,可以实现特殊几何图形的快速创建。基于函数库所提供的图形,创建了包括矩形、圆、星形等等一些列的参数化图形Polygon2D节点。基于静态函数库对Polygon2D。原创 2024-09-02 18:16:40 · 1248 阅读 · 0 评论 -
【Godot4.3】绘图函数的类化封装尝试——CanvasShape
这是2024年7月份的一项工作,在研究外XML和SVG解析与生成过后,想到可以将自己写的绘图函数库拆分为图形类,于是就有了类。它包含了从填充、轮廓、阴影、虚线、顶点和中心点绘制的全部要素。只需要给定points属性和调用draw()方法就可以在CanvasItem节点上绘制大多数多边形和折线了。是一个可以包含多个或的元素,基于它,可以创建树形的图形元素结构。方便动态管理和输出保存。原创 2024-09-01 16:12:37 · 1391 阅读 · 0 评论 -
【Godot4.2】GodotXML插件 - 解析和生成XML
近期在研究基于Godot的XML和SVG解析,并且在昨天(2024年7月20日)编写了一个简易的SVG文件解析器。在群友的提示下,知道早就存在GodotXML这样的解析器。所以今天就来测试使用并准备研究学习源代码了。和以往一样,看源码里一堆英文注释就手痒,机翻之。并且想要分享出来,供大家一起学习,于是就有了这篇笔记。。GodotXML支持Godot 4.0-4.2,以及可能的未来版本。Godot中的XMLParser。原创 2024-07-21 17:52:27 · 1650 阅读 · 0 评论 -
【Godot4.2】SVGParser - SVG解析器函数库
这是一个基于GDScript内置XMLParser编写的简易SVG文件解析函数库。目的就是可以将SVG文件解析为GDSCript可以处理的字典或DOM形式,方便SVG渲染和编辑。目前还只是一个简易实现版本。还需要一些改进。原创 2024-07-21 01:19:36 · 986 阅读 · 0 评论 -
图解SVG
最近在重温游戏美术的内容,一路从Krita板绘到对矢量绘图,尤其是PS、Krita和InkScape的自由钢笔(或叫自由路径,铅笔)工具感兴趣,再到想用InkScape制作矢量图形模板,然后在Godot中用模板字符串替换形式批量生成SVG矢量图。再到发现InkScape的源文件中不是太纯净的SVG源码,所以转而开始研究SVG。原创 2024-07-18 16:45:05 · 1131 阅读 · 0 评论 -
【Godot4.2】Godot中的贝塞尔曲线
通过指定平面上的多个点,然后顺次连接,我们可以得到折线段,如果闭合图形,就可以获得多边形。通过向量旋转我们可以获得圆等特殊图形。但是对于任意曲线,我们并没有很好的算法去直接实现,好在计算机大神们已经发明了贝塞尔曲线这样的算法。本篇就介绍如何在Godot中绘制贝塞尔曲线,并通过设定控制点来精确控制曲线的走向。原创 2024-07-02 21:45:38 · 2230 阅读 · 0 评论 -
【Godot4.2】太极八卦图绘制
作为中国传统文化符号之一,太极八卦图,无论是哲学还是玄学,都不可能避开。之前在函数库实现了太极的点求取函数。当时采用的时圆弧拼接的方式,但是存在某些尺寸下多边形无法三角化的问题。于是就有了今天的内容。就是采取一种完全不同的思路来绘制太极。并在此基础上补足八卦的绘制。本节介绍了对复杂图形——太极八卦图的求图形顶点和绘制思路可以看到,灵活的利用绘图顺序,进行“盖印”操作,是一种聪明的图形绘制方式另外,也可以看到,有些复杂图形的求解需要使用多重线性变换。原创 2024-04-21 13:53:32 · 980 阅读 · 0 评论 -
【Godot4.2】圆环绘制思路以及函数
在Godot中没有办法直接绘制圆环,利用Geometry2D的布尔运算也无法实现。所以只能另想办法。这个问题其实想了有一段时间了,昨天因为QQ群群友的提问,于是就直接试验了一下,结果就有了本文。对于在Godot中绘制圆环,我自己想到两种办法。这种思路的好处是,通过求一个小梯形,然后旋转变换,就可以绘制出圆环的形状。而且这种方式可以很方便的用颜色插值做出渐变色环效果。这种方法获得的圆环一体性强,可以直接作为单个多边形绘制,顶点数目也相较第一种方式少但缺点是可能没法获得方法1样的效果。原创 2024-04-20 15:27:01 · 1174 阅读 · 0 评论
分享