不思議な箱


  • 中文 -> EN

  • 首页

  • 关于

  • 搜索
tasiYokan

tasiYokan

14 日志
4 分类
7 标签

利用位运算进行Tilemap的快速模式匹配

发表于 2021-11-13 | 分类于 Dev

背景

最近在做一个地图生成的功能。其中有一个基础功能要先解决:在格子的地图上刷了相关的地形之后,如何根据实际的格子分布自动补全和更新边缘的形状,例如海滩的tile两面接山的情况下,就要有个弧形的边缘,而不是一条直的海岸线。这个功能在早期的2d的游戏中非常常见,因为当时的游戏都是tile-based的。

大概在3年前,unity还没有将2d-tilemap做成一个完整的包的时候,我自己写过一套。不过因为年代过去的有点久了,代码不太找得到了。于是准备重新写一下,看看有没有新思路。而且现在Unity自己的tilemap系统也非常完善了,不如也参考一下。

阅读全文 »

在屏幕空间下制作3D UI

发表于 2020-10-07 | 分类于 Dev

背景

有时候出于一些特殊需求,我们需要在平面的UI中制造出伪的3d感UI,让玩家或用户感受到UI的深度,也可以加深UI的交互性。本篇中,会主要利用插值和视差的方法来制作伪3d效果的UI。
接下来的内容将会涵盖
1.通过插值使得选择平面图像并重采样成为可能
2.通过视差让UI能看出深度

阅读全文 »

UE中的各种depth的解释及应用

发表于 2020-04-21 | 分类于 Dev

背景

有时候我们在绘制透明的人物角色时,既想要其透明,又想要有一个基于fresnel的边缘光。直接写出来的材质会遇到透明面的穿插交叠的问题。如

本文会在解决这个问题的同时,对UE4中的scene depth, pixel depth和custom depth这三个容易混淆的概念做个解释和备注。

阅读全文 »

Pixel shader中的翻页动画

发表于 2020-04-12 | 分类于 Dev

背景

有时候,我们在游戏中需要表现一个书本打开或则翻页的效果。如果很生硬的用一个2D形变动画或者一个淡入淡出,那肯定达不到想要的效果。所以有人想到了用3D UI来制作动画。W.Dana Nuon[1]有一篇文章介绍了一种将2D坐标映射到3D空间来完成一个基于圆锥的翻页顶点动画。由于是顶点动画,所以平面需要进行细分,顶点越多,自然效果也越好。可是有时候,这个需求只是做在UI中的,他们可能没有必要的3D美术或者制作3D UI的经验。他们只能制作2D的素材。这种时候该怎么办呢?
本文中将会提出一种基于片段着色器的方法,在屏幕空间下模拟翻页的动画。本质上其实就是一个ray-tracing的过程,只不过很多地方都进行了化简和hack

阅读全文 »

通过vertex split实现progressive mesh

发表于 2020-03-28 | 分类于 Algorithm

背景

在上一篇文章中,我们依据高斯曲率对mesh进行平滑。但是由于平滑过程中经常会出现过多顶点聚集在一起的情况。另外,对很多顶点做平滑本身也是个相当耗时的操作。所以自然而然的,我们希望减少需要处理的顶点。虽然我们已经有了edge collapse(使用案例见使用Quadric Error Metrics进行mesh简化)但是光化简模型并做平滑本事并没有意义,毕竟我们损失了许多顶点信息。我们真正想做的事情是先减少顶点数->进行平滑操作->再还原出原本那些被删去的顶点,从而还原出整个拓扑结构。
所以,我们需要找出edge collapse的逆操作:vertex split——从一个顶点裂出一条边的两个顶点,并将原来连接至一个顶点的相邻边和点按照原本的结构连接到新的两个顶点上。

关于这个操作的概念,最早是伴随着Hugues Hoppe的Progressive Meshes[1]一文一起提出的。它提出一个progress mesh序列可以表示为从$M^n$到$M^0$的过程,$M^n$即为原始模型,$M^0$则是经过n次edge collapse后化简的模型。这个序列也是可逆的。可以用下面两个过程来表示

阅读全文 »

基于高斯曲率的mesh扁平化

发表于 2020-03-07 | 分类于 Algorithm

背景

在Geometry Processing中,我们有时候需要对一个mesh进行参数化。对于一个开放的含边界的mesh,我们一般会采用planar parameterization。可以想象将一层附于物体表面的“皮”摊平在一个2D泡面。但对于一个genus-0的封闭mesh,直接展平不可避免的会出现许多的畸变和扭曲。所以我们考虑将其参数化到同胚的单位球上。
一般来说,复杂的多面体无法通过stereographic projection(球极平面投影)直接投射到单位球上。换个角度理解,即无法从几何体的几何中心无遮挡的看到三角面上的所有顶点。三角面在单位球上的投影会overlap或者flip。这都会导致参数化的失败。一般问题的发生场所都是在mesh的突出部分,所以在本文中,将会利用curvature-driven faltenning技术完成对mesh不改变拓扑的扁平化。从而能更好的进行参数化。

阅读全文 »

使用Quadric Error Metrics进行mesh简化

发表于 2020-03-07 | 分类于 Algorithm

背景

Hoppe等人在1993年的时候首先提出了一系列的mesh optimization技术[6],其中包括edge collapse, edge split, edge swap等操作。基于edge的操作相比较于之前的模型简化(或者说down-sampling)技术,如triangel collapse,最大的好处是能保证模型原始的拓扑结构,因此可以进一步用于其他的geometry processing操作。
关于模型化简时选择最合适的边进行collapse,我们需要选择那些坍缩后的边对原有的模型影响最小的边。Hoppe在论文中,使用的是能量方程来判断。但实际情况中,计算的成本过高。因此,在1997年的时候,Garland和Heckbert等人提出了一种基于Quaderic Error的度量标准[5]来判断最合适的顶点。

阅读全文 »

大规模建筑内景的渲染:Interior-Mapping

发表于 2019-09-14 | 分类于 Dev

简介

Interior Mapping主要用于在物体表面利用透视错局模拟出格子结构的内部内容。虽然从外部观察起来,物体内部的构造是“真实的”,但一切渲染都没有依靠更多的模型或真实顶点。这在渲染大量模式化的内部结构中会有很大作用。
例如渲染高楼林立的都市时,如果要渲染每个单独的房间就会有大量的性能开销,完全的使用单一的贴图又会有些单调,这个时候就适合用Interior Mapping来伪造出建筑的外观而不让性能下降太多。
它的几个优点:
1.房间的数量不会影响framerate或内存开销
2.并不需要太多的额外资源就可以表现大的场景
3.实现上并不要求高级的shader model特性

阅读全文 »

Weekly Animation Share Vol 2

发表于 2019-09-11 | 分类于 Motion

Egg McMuffin - Director’s Cut

阅读全文 »

Weekly Animation Share Vol.1

发表于 2019-09-07 | 分类于 Motion

作为第一期的每周动画分享(会有几期也不知道…),先简单介绍下做这个系列的动机。之前经常会逛AT! 品赏阿尼墨,通过这个平台看到过不少优秀的作品。但因为网站已经很久没更新了,而如今的动画公众号也缺少一些独立短片的推荐,所以出于个人兴趣爱好,决定(不)定期的更新一些自己发现的有意思的动画短片。这次的三个视频都来自vimeo,由于被墙了,所以国内小伙伴可能看起来不太方便,目前只好提供截图封面,后面我会思考下如何解决这个问题…

CAT DAYS / ねこのひ

阅读全文 »
12
© 2021 tasiYokan
由 Hexo 驱动
主题 - NexT.Pisces