2025-04-20 361 字 1 分钟Avalonia构建跨平台项目中安卓项目报错的处理# 第一步 按照 Install .NET for Android dependencies 安装 Android-SDK 然后安装 JDK,去 java 官网安装,同时目前 avalonia 要求的 jdk 版本是 17,注意不要弄错了,虽然可能未来会变吧,当你看到这篇文章的时候 # 第二步 配置项目 将安卓子项目的 csproj...more...
2024-05-01 731 字 1 分钟光线追踪# 实现思路 Whitted-Style 以摄象机为起点,向成像平面发射射线(Ray),透过成像平面所被分成的像素打在最近的模型的点上,并将该点与光源连接,即已知入射方向,观察方向,法线方向,可以着色,并写回像素 加上光线的反射和折射和能量损失 可以一直递归下去 听上去很简单,但实际上一点也不简单 我们将光线的方程定义为一个方向向量与时间 t 相乘加上一个点 光线方程和平面联立求解 但对于发射出的光线,每个像素都要发射一条光线,每条光线的每次反射都要要与场景内每一个面的方程求交 计算量极大 # 优化思路 # AABB...more...
2024-04-22 892 字 1 分钟着色# 定义 对于一个表面定义以下单位向量 法线方向 n⃗\vec{n}n 指向光源方向 l⃗\vec{l}l 指向观察方向 v⃗\vec{v}v 半程向量 h⃗=v⃗+l⃗∥v⃗+l⃗∥\vec{h}=\frac{\vec{v} +\vec{l}}{\left \| \vec{v} +\vec{l} \right \| }h=∥v+l∥v+l 表面属性若干 # Blinn-Phong 模型 近似的经验模型 有三个参量 相加为最终结果 #...more...
2024-04-22 453 字 1 分钟光栅化与抗锯齿# 光栅化 Rasterization 我们目前已经实现的是将场景中的物体经过 MVP 变换 (Model-View-Projection) 变换到二维平面上,接下来就是要进行光栅化。 首先我们需要找一个包围盒,常见的 AABB 包围盒采用该三角形最大最小的 XY 值作为顶点,在包围盒内我们可以应用光栅化函数 取每一个像素的中心,如果中心在三角形内,则着色,反之不着色 但是这样我们会发现图形是硬边缘,锯齿感比较严重 # 抗锯齿 Anti...more...
2024-04-19 2.6k 字 2 分钟模型变换与视图变换对应 Games101 Lecture 3~4 # 模型变换 # 齐次坐标 就是将 点 [xyz]\begin{bmatrix}x\\ y\\ z\end{bmatrix}⎣⎢⎡xyz⎦⎥⎤ 表示为 [xwywzww]\begin{bmatrix}xw\\ yw\\ zw\\ w\end{bmatrix}⎣⎢⎢⎢⎡xwywzww⎦⎥⎥⎥⎤,其中 w0 ≠\ne= 0 向量 [xyz]\begin{bmatrix}x\\...more...
2024-04-19 418 字 1 分钟Games101VisualStudio作业环境搭建虚拟机的方式虽然环境搭建好了 但是网盘要下载很久,虚拟机也相对比较卡顿 需要更多的硬盘空间 # 下载 下载 Visual Studio Installer 选择 C++ 桌面开发 下载完打开 Visual Studio 新建项目,把作业压缩包的文件直接拖到项目里 # 配置包环境 Eigen 可以直接在 nuget 下载 下载完要把源代码里所有 eigen3 删去 至于 opencv,我直接 nuget 下载会报错 所以就直接下载 opencv 手动配置 下载好直接安装 安装完回到 VS,右键项目点击属性 在 链接器 - 输入 - 附加依赖项 中添加 opencv_world490d.lib 在...more...
2024-04-17 91 字 1 分钟透视总结这里会记录我对于 Krenz 老师的课程的个人总结 # 消失点 在透视投影中,所有平行线交与一个消失点 对于相同的平面上的物体,无论如何旋转,每一组平行线的消失点都在地平线上 但空中漂浮的物体随意more...
2024-03-26 614 字 1 分钟原反补码# 有符号整数的原反补码和无符号整数的 无码 无符号整数就是普通的二进制数 有符号整数就不一样了,分为原码、反码、补码 原码为符号位 + 普通二进制的数值位 # 对于负数,即符号位为 1 反码为原码数值位取反 补码为反码加一 反码就纯纯工具人跳板咯 甚至可以不需要这个工具人! 手算可以将从右往左第一个一左侧所有数值为取反 这个算一下就好理解了 不像补码的原理,涉及数论的群论 之前学离散数学还没学到群论,加上自己以后应该不会学密码学,就不踩这个坑了 # 对于正数 啥都不变 #...more...
2024-03-18 367 字 1 分钟虚幻引擎材质渐变效果实现,原理与思路# UV UV 坐标为从左上到右下,映射到从(0,0)到(1,1) TexCoord 默认 UV 为水平和竖直两个方向 从 0 到 1 使用 Mask 节点可以分离这两个分量,获取水平和竖直方向上分别从黑到白(从 0 到 1)的贴图 # 实现思想 对于方形渐变我们通过取特值方便理解和设计 对于贴图黑的地方为 0,白的地方为 1,灰的地方为 0.5 在对目标进行水平和竖直方向的分解 就很容易得出两个向量 我们所需要做的就是找到一个变换,使得一个向量变为另一个向量 当然我们有很多黑科技,而非只有加减乘除去找到这么一个变换 常用节点如下 #...more...