关于贝塞尔曲线/面
贝塞尔曲线/面
环境
windows 10
Unity 2022.3.52f1c1
贝塞尔曲线
在游戏开发的过程中,贝塞尔曲线是一个十分常用的知识。它常用来实现游戏中投掷物的抛物线效果。除此之外,游戏引擎中的动画曲线也是用类似的逻辑来实现。
什么是贝塞尔曲线
贝塞尔曲线(Bézier
curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。贝塞尔曲线于1962年由法国工程师皮埃尔·贝塞尔(Pierre
Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由Paul
de Casteljau于1959年运用de
Casteljau演算法开发,以稳定数值的方法求出贝兹曲线。(上述段落取自百度百科。)虽然上文说是在二维图形中的应用,但是现在贝塞尔曲线在三维中也有广泛的应用。
一次(一阶)贝塞尔曲线
一次贝塞尔曲线是最简单的形式。我们值需要做两点间的线性插值简单的代码如下:
1234public Vector3 OneLevelBezier(Vector3 ...
Unity将预制体渲染到RenderTexture上
Unity将预制体渲染到RenderTexture上
前言
本篇文章会介绍一个简单想法,所以会有很多限制。比如无法设置光源、对预制体中的物体位置有一定的要求和在使用Unity默认的URP材质有一些奇怪的bug。
环境
Windows11
Unity2022.3.56f1c1
正文
本篇文章的想法非常简单简单到我都觉得水的程度。我们只要使用Unity提供的CommandBuffer就可以实现了。首先我们先设定好摄像机。不过我们不是真的要创建一个Camera组件,而是我们设定一个虚拟的摄像机。这个摄像机的屏幕比就是我们要渲染的RenderTexture的长宽比。然后我们再定好摄像机是否要进行透视投影,如果是透视投影的话,fov(Field
of view)是多少。如果是
正交投影的话,它窗口的大小又要是多少等等。最终我们通过这些属性建立我们投影矩阵和视图矩阵。听到这,如果你不了解整体的渲染流程或许你会很懵逼。所以我这边提供给你一个简单方法。我们只需要拿一个空场景设定好这个空场景的中的摄像机参数,千万别忘记将Unity编辑器的 ...
关于图片采样
关于图片采样
前言
在游戏开发中,我们经常会对图片进行采样。比如物体的纹理信息,阴影贴图的信息等等。我们都需要对图片进行采样,以丰富游戏的表现。
我们时常会遇到这样的一个问题,我们需要将一个图片渲染到屏幕上,而图片所覆盖的屏幕像素远大于图片自身的像素。这时候我们就需要对图片进行放大处理。又或是反过来,我们需要对图片进行缩小处理。这些都会涉及到如何对图像本身进行采样。
图像采样的方法和规则
我们假设现在我们有一张256x256的图片。我们需要分别将其渲染成64x64和1024x1024的图片。对于64x64的处理,你或许会觉得很简单,因为256刚好是64的4倍,我们直接按照他们的比例进行像素的选取就好了。但是对于1024x1024的处理,你是否有想法呢?如果我需要的是100x100的图片,那么你又该如何处理呢?
无论是放大(上采样)还是缩小(下采样),我们都可以去做一个映射操作。比如我想知道64x64中坐标为(31,31)(这里我依照程序里面下标从0开始计算)的像素点是什么颜色。我先计算出此坐标在原图中的比例,显 ...
我对直播弹幕游戏的理解
我对直播弹幕游戏的理解
前言
我做直播弹幕类游戏也有一段时间了。这是一个刚刚兴起的游戏类型,我刚开始制作的时候还一头雾水,但现在我也有了一些自己的想法。我正好写一篇文章来阐述自己对于其的理解。下面文章中的大部分数据并没有实际考究,很多也是我从业以来的听闻,如果有错欢迎指正。本篇文章封面由豆包生成。
特别用标题来提醒,本篇文章充满作者个人想法请仔细甄别
对弹幕游戏的简单介绍
什么是直播弹幕游戏?
直播弹幕游戏,是一种以主播直播,观众通过向主播发送弹幕和送礼物的方式来进行游玩的游戏。直播弹幕游戏可以分为两大类:一类是玩家与主播之间的互动,另一类是玩家与玩家之间的互动,在直播平台中又被称为“弹幕互动类玩法”。
玩家与主播之间互动的弹幕游戏,通常是获取主播直播间弹幕和礼物信息转换为对应游戏内的指令。而这游戏本身可以是市场上已有的游戏。比如说,《超级马里奥》、《我的世界》、《黑神话:悟空》等。以《超级马里奥》为例,玩家可以发送弹幕或是送出礼物来对主播的操作进行干扰,从而让主播出洋相或是让其过不了关卡。本质上这属于是通过工具获取直播间信 ...
四元数学习记录
四元数学习记录
前言
如果你去看网络上的游戏开发教程,他们大都告诉你四元数是用来防止欧拉角的万向锁。但是他们都不会去深究或者说讲明。因为四元数确实很困难,但是在开发的过程中,我们确实需要一些关于四元数的知识来为我们的开发做理论基础。这篇文章,我只说明我自己所了解的部分,也算是我对于学习四元数的阶段总结。
特别说明,本文全部的计算都按照右手坐标系法则,所有的旋转都是逆时针旋转。
正文
四元数(Quaternion)是一种扩展复数的数学概念,它可以用来表三维空间中的旋转。它由威廉·罗恩·哈密顿于1843年提出,形式为:
\[q=a+bi+cj+dk\]
其中,\(a,b,c,d\)是实数。\(i,j,k\)是虚数单位,满足以下乘法规则:
\[i^2=j^2=k^2=ijk=-1\]
四元数的实部\(a\)、虚部为\(bi,cj,dk\),所以也有下面这样的表示:
\[q = (a,\vec{v})\]
其中,\(\vec{v}=(b,c,d)\)是三维向量(在我看到的资料中也有\(q =
(\vec{v},a)\)的表 ...
UGUI拖拽效果实现2
UGUI拖拽效果实现2
前言
之前我个人写过一个版本的拖拽效果实现,但是后面在一些场景中发现了一些问题,比如:应用窗口任意变换的时候,拖拽效果的设定显得麻烦,且会照成跟不上鼠标的问题;如果拖拽的物体本身的情况复杂,比如其锚点和其UI对齐格式奇葩或者其父节点也存在问题,那么判断是否在屏幕的方法就会错误,等等。
所以,为了解决这些问题,我又写了一个新的版本,这次我将会详细介绍一下这个版本的实现。
环境
Windows10操作系统 Unity2022.3.34f1c1 Unity UI 1.0.0
正文
这个版本的实现,仍然是基于UGUI本身提供的事件接口IBeginDragHandler、IDragHandler和IEndDragHandler。这次我还额外多加了IPointerDownHandler,这个接口。至于为什么我要多加这个接口,这个我在后面来说明。与前面的版本不同的是,这次的版本我并不考虑是否在屏幕外,我仅考虑UI是否在画布内。如果你要实现是否在屏幕内,其实就是将这个限制移动的画布设定为主画布就好了。 ...
2025.1水文
2025.1
救不了的项目
熬到现在,我的这个项目能改的地方都改了个变,可惜这个项目还是凉了。虽然现在又有海外的人想拿我们项目做测试,但是我觉得机会不大。首先这个海外的平台本就不大,而且这个平台我们之前也合作并上过项目。最终的结果就是连服务器的费用都赚不回来。我认为现在无非就是用这个项目再赚一点点,按照现在的趋势,这个项目估计撑不到今年的三月。我到是想着这个项目起来,然后公司多一份收入进军一下小游戏。我也能去做一下小游戏,看看什么叫做多平台的差异。现在看来,这份想法又是遥遥无期,甚至今年我们的部门撑到结束都是一个问题。现在我都开始想部门结束了也好,那我拿一份离职钱再毫无负担地找下一份工作。现在的我贪图大家的氛围,又嫌弃低价的工资。或许是我太贪心了,想干一份氛围又好,工资又高的工作。可回看现在的世道,那有这么容易。
## 帕鲁开玩
最近帕鲁又进行了一次更新,前面还有传出帕鲁后面不能再玩的新闻。所以朋友在一起不免会说这个话题,于是乎我又和朋友开始玩起了帕鲁。结果我没玩多久就记起来之前我为什么不想玩帕鲁了。没有丝毫意思地收集材料,朋友故意设定的高难度, ...
Unity中广告牌效果实现
Unity中广告牌效果实现
前言
我并非没写过关于广告牌效果的文章,但是那时候我是在写《Unity
Shader入门精要》读书笔记的时候提过。那时候我不明白书中实现的原理,所以我就没给出具体的代码。现在我终于明白了一些便想着补上这个实现。
环境
Unity版本:2022.3.34f1c1
操作系统:Windows 10 Universal RP 14.0.8
广告牌的效果的原理
在了解原理之前,我们首先要了解一下什么是广告牌效果(Billboarding)。在《Real-Time
Rendering 4th Edition》中是这么描述它的:
1234原文:Orienting a textured rectangle based on the view direction is called billboarding, and the rectangle is called a billboard.As the view changes, the orientation of the recta ...
2024-12总结
2024-12总结
浑浑噩噩,时间终于还是到了一年之中的最后一个月————12月。 ##
项目上线
在11月份连续的几个加班下,这个酝酿了很久的项目终于是上线了。但是线上的表现让人大失所望。所以我又开始了新一轮的加班。我本人到是厌烦了现在的项目,实在是现在的项目实在做得太久了,而且没有新意。远不如之前我同事做的项目。至少我觉得都很有意思,可惜他的项目也没能好起来。于是乎12月仍然是我的加班月。不过最近我部门接连亏损,不知道在2025年又能撑到什么时候。
外出交交朋友
我终究还是壮起胆子拿起球拍和楼下公园的小伙子们打起了羽毛球。我之前都在打野球,规则什么的,我一概不知。我到是没想到这些人竟然都是玩规则的,而且一个个看起来都很专业。2小时打球,轮到我也就打了15分钟。不过终究是遇到了一些很有趣的人,来打打球也不错,如果我在场的时间更久就好了。
圣诞好礼
我总感觉今年公司的财政不行。我有这感觉不仅仅是因为我部门已经连续亏损很久了。还是因为我知道其他部门其实也不好过。今年游戏行业宣发大减,特别是在年末这几个月,我几乎 ...
UnityRecorder导出带透明通道的视频和图片
UnityRecorder导出带透明通道的视频和图片
前言
工作久了总是会遇到些问题,比如策划有天突发奇想,想要录制游戏内东西给运营。但是他还想要带透明通道。而我们的项目又是使用URP渲染管线进行开发的,所以当使用Recorder这个插件时,它是导不出带透明通道的视频的和图片。虽然可以让美术用抠图的办法将我们想要的主体独立出来。但是简单的抠图效果并不算好,而好的效果费美术时间。这些都不如直接让Recorder导出带透明通道的图片和视频。
本篇文章仅说明URP和默认渲染管线下的实现效果。
环境
Unity版本:2022.3.34f1c1
Recorder版本:4.0.3
操作系统:Windows 10
Universal RP 14.0.8
具体操作
预准备
无论是导出视频还是导出图片,我们都要将Recorder输入源改为Texture Sampling。然后我们设定活动相机的参数。在默认渲染管线下,我们在相机组件中找到Clear Flags选项,将其设置为Solid Color,并在B ...