文章列表

12k11 分钟

# 使用 MinVer + NuGet + GitHub Actions 实现 .NET 库自动化发布 # 前言 利用 MinVer、NuGet 和 GitHub Actions 实现一套完整的自动化发布流程 只需打一个 Git Tag 自动完成版本计算、打包和发布到 NuGet。 # 整体架构 Git Tag (v1.0.0) ↓ GitHub Actions 触发 ↓ MinVer 从 Git 历史计算版本号 ↓ dotnet pack 生成 NuGet 包 ↓ 自动发布到 NuGet.org # 一、MinVer:基于 Git Tag 的版本管理 #
4891 分钟

# 第一步 按照 Install .NET for Android dependencies 安装 Android-SDK 然后安装 JDK,去 java 官网安装,同时目前 avalonia 要求的 jdk 版本是 17,注意不要弄错了,虽然可能未来会变吧,当你看到这篇文章的时候 # 第二步 配置项目 将安卓子项目的 csproj 文件用文本编辑软件打开,在 l<PropertyGroup></PropertyGroup>之中加入 l<AndroidSdkDirectory>你的SDK路径</AndroidSdkDirector
7891 分钟

# 实现思路 Whitted-Style 以摄象机为起点,向成像平面发射射线(Ray),透过成像平面所被分成的像素打在最近的模型的点上,并将该点与光源连接,即已知入射方向,观察方向,法线方向,可以着色,并写回像素 加上光线的反射和折射和能量损失 可以一直递归下去 听上去很简单,但实际上一点也不简单 我们将光线的方程定义为一个方向向量与时间 t 相乘加上一个点 光线方程和平面联立求解 但对于发射出的光线,每个像素都要发射一条光线,每条光线的每次反射都要要与场景内每一个面的方程求交 计算量极大 # 优化思路 # AABB 包围盒 给每一部分都确定一个包围盒,每个包围盒的范围要大于那一部分,如果没有
8561 分钟

# 定义 对于一个表面定义以下单位向量 法线方向 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 模型 近似的经验模型 有三个参量 相加为最终结果 # 漫反射 Ld=kdIr2max(0,n⃗⋅l⃗)L_{d} = k_{d}\frac{I}{
4871 分钟

# 光栅化 Rasterization 我们目前已经实现的是将场景中的物体经过 MVP 变换 (Model-View-Projection) 变换到二维平面上,接下来就是要进行光栅化。 首先我们需要找一个包围盒,常见的 AABB 包围盒采用该三角形最大最小的 XY 值作为顶点,在包围盒内我们可以应用光栅化函数 取每一个像素的中心,如果中心在三角形内,则着色,反之不着色 但是这样我们会发现图形是硬边缘,锯齿感比较严重 # 抗锯齿 Anti Aliasing 方案有对原图形进行模糊再光栅化等 常用的有 MSAA 将每一个像素进行细分,用子像素在三角形内存在的数量决定该像素的颜色 FXAA T
2.1k2 分钟

对应 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\\ y\\ z\end{bmatrix}⎣⎢⎡​xyz​⎦⎥⎤​ 表示为 [xyz0]\begin{bmatrix}x\\ y\\ z\\ 0\end{b
5601 分钟

虚拟机的方式虽然环境搭建好了 但是网盘要下载很久,虚拟机也相对比较卡顿 需要更多的硬盘空间 # 下载 下载 Visual Studio Installer 选择 C++ 桌面开发 下载完打开 Visual Studio 新建项目,把作业压缩包的文件直接拖到项目里 # 配置包环境 Eigen 可以直接在 nuget 下载 下载完要把源代码里所有 eigen3 删去 至于 opencv,我直接 nuget 下载会报错 所以就直接下载 opencv 手动配置 下载好直接安装 安装完回到 VS,右键项目点击属性 在 链接器 - 输入 - 附加依赖项 中添加 opencv_world490d.li