BDRF经验模型之一:Phong Lighting Model

  • 环境光照(Ambient Lighting):即使在黑暗的情况下,世界上通常也仍然有一些光亮(月亮、远处的光),所以物体几乎永远不会是完全黑暗的。为了模拟这个,我们会使用一个环境光照常量,它永远会给物体一些颜色。
  • 漫反射光照(Diffuse Lighting):模拟光源对物体的方向性影响(Directional Impact)。它是冯氏光照模型中视觉上最显著的分量。物体的某一部分越是正对着光源,它就会越亮。
  • 镜面光照(Specular Lighting):模拟有光泽物体上面出现的亮点。镜面光照的颜色相比于物体的颜色会更倾向于光的颜色。

Read More

Share

VSCode管理CMake项目

久闻LearnOpenGL的环境特别难搭建,今天见识了一番果真如此。初识CMake,开了大口想再VsCode里也舒舒服服地爽一把,而事实上仅仅是创建一个窗口便自闭了若干天。总结一下大致所需要的操作吧。

Read More

Share

USTC-CG|Image Warping

反距离加权插值(IDW)

根据给定的控制点对和控制点的位移矢量(方向和距离),实现图像每一个像素点的位移。反距离加权插值的方法是通过得到每一个像素点和选定控制点对的逼近 关系,以及相对应的权重关系,求得像素点相对应的变化关系,逼近函数可以理解为对像素点p的影响程度,而权重函数则可以看成是对距离的权重,距离越远,权重越小。
$$
f(p)=\sum_{i=1}^n w_i(p)f_i(p)
$$
该函数$f(p)$传入一个像素点的坐标,通过已选定的控制点实现计算插值。f函数返回像素点坐标,$f_i$函数为逼近函数,即
$$
f_i(p)=q_i+T_i(p-p_i)
$$
这里$T$的求解我未进行方程组的计算求解,$T$是一个2*2矩阵,$T$可以取近似值1。将控制点数据代入可以求出每一个局部插值函数。
而$w_i$权重函数,理解为对距离越远,权重越小,这里通过
$$
w_i(p_i)=1,\sum_{i=1}^nw_i(p)=1,andw_i(p)\geq0,~i=1,…,n.
$$

$$
w_i(p)=\frac{\sigma_i(p)}{\sum_{j=1}^n\sigma_j(p)}with~\sigma_j=\frac{1}{d(p,p_i)^\mu}
$$

这里$d(p,p_i)$为$p$和$p_i$的距离,指数$μ$可以取>0的数,这里测试取2最优。通过公式求取权重函数,求和体现多组控制点共同产生影响。

Share

Lo-fi|冰室产酒

意淫成了城市深夜主调,霓虹间做着最精彩的梦。

吃冰

Share

TFG|镜头校准

摄像机(Camera)也是渲染过程中不可缺少的一部分,这个实验将介绍摄像机如何。本文为官方提供的入门项目Camera calibration的阅读笔记,代码均摘自源文件中。

Read More

Share

TFG|已知物体空间位置估计

TensorFlow又出了一个好玩的开源库:Graphics,主要解决从渲染器最终渲染结果逆推出各Mesh的Transform和Rotation。本文为官方提供的入门项目Object pose estimation的阅读笔记,代码均摘自源文件中。

Read More

Share

论当代Kitekii

哈,又遇到了夏日暑假,多事的暴晒日子里,总得寻一处地方,舒爽一番。

正逢迁居,老家却不能无人打理,我只好留下来挤进六十平的屋子敲敲键盘。在犬吠、街坊吵闹与空调嚎叫中,往耳朵里塞个sora,和乔鲁诺·乔巴纳一起缉毒,偶尔几声惊雷把我拉回现实,看窗外几道闪电砸在远处平方的屋顶,为渡劫成功的道友默念一声恭喜。

这样的日子不长,到了周末,也同歇息了一般登了电梯,在十七层吹吹海风,晒晒夕阳。

换了个屋子居住,却不改以往脾性。脚蹬木纹桌面,蜷缩在方圆不到一米的电竞椅中,戳一手苹果牌板子,嘬一口凉茶味冰棍,竟成了空调房中习以为常的特色景观。

等着七月流火,再求生不能求死不得一阵子。

Share

CG Learning Routes

What is CG

计算的方法,将物理世界映射到虚拟数字世界(即,对物体的几何物理属性与规律进行表达仿真,并真实地呈现交互),再通过虚拟世界的计算最终反向作用于现实世界。

传统的,”经典意义”上的图形学,与OpenGL相关,比较侧重渲染,如何在屏幕上画出来一个什么东西,光照怎么算,这些东西在20世纪末21世纪初很火,但是肉比较多的骨头都啃完了。这种经典图形学也带动了游戏的发展,电子海洛因也是那个时候才慢慢出现的。

现代意义上的图形学方向已经很广泛了,例如:

Read More

Share

ShaderGraph自定义节点

原文:Custom Nodes with CodeFunctionNode@Unity Docs

随着Unity发布了ShaderGraph,创建一个Shader比以往都要更加容易。然而无论提供多少个默认节点,都不能满足用户的自定义需求。因此,我们开发了一个自定义节点的API,可以在C#中创建新节点。或许能满足用户们刁钻的需求。

本文将介绍一种最简单的实现方法,称之为Code Function Node,接下来将展示详细细节。

Read More

Share

maven (eclipse|Vs Code) 远程部署docker上的tomcat

在docker上装了个Tomcat,由于container的特性,eclipse不能通过常规手段定位Tomcat,所以进行在本地进行“远程部署”。

docker配置

初始化

1
2
3
$ docker pull tomcat
$ docker run --name tomcat -p 8080:8081 tomcat
$ docker exec -it tomcat bash

-p 8080:8081:将容器的8080端口映射到主机的8081端口

修改配置

修改配置前我们需要确认一下有没有文本编辑器,可以通过apt-get下载一个vim。

修改tomcat/conf/tomcat-user.xml文件,在最末尾对应位置修改加入以下内容:

1
2
3
4
5
<role rolename="manager-gui" />
<role rolename="manager-script" />
<role rolename="admin-gui" />
<role rolename="admin-script" />
<user username="admin" password="kitekii" roles="manager-gui,manager-script,admin-gui,admin-script" />

只有添加用户才能进入localhost:8081/manager,否则会显示403 Access Denied

载入插件

接着我们回到maven,在项目中的pom.xml中<plugins>标签下添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<!-- 指定项目部署的端口 -->
<port>8081</port>
<!-- 指定项目部署的URL,/manager/text是预置的部署接口 -->
<url>http://127.0.0.1:8081/manager/text</url>
<username>admin</username>
<password>kitekii</password>
<update>true</update>
<!-- 指定项目部署路径,如果不设置为默认项目名称 -->
<path>/mobile</path>
</configuration>
</plugin>

即向maven加载了部署所需要的插件,值得注意的是,该tomcat7插件支持部署至tomcat7.*、8.*。

部署

由于是远程部署,调试相关显得更加复杂,此处先对部署进行阐释。

VS Code

只需在shell中键入下文:

1
$ mvn tomcat7:deploy

Eclipse

添加Run Configuration,选择Maven Build项,修改goal为tomcat7:deploy即可。

Share