Personal Profile
Contact me:
Name:
Ziqin Gao
Email:
anki1667791793@gmail.com
Contact me:
Name:
Ziqin Gao
Email:
anki1667791793@gmail.com
经过两天研究,是时候总结下unity的数据存储方式了。
之前我们的工程里全部用类或者静态类保存数据,维护起来很不方便,尤其对于策划来说没有直接的工作流,所以我们得提供一个配表解决方案,让策划能够通过修改Excel或者其它文本格式的文件来完成属性的配置。而且有时候需要用网络传输数据文件,我们程序里的数据是不能直接传输的,这就涉及到序列化和反序列化。下面我看看Unity中一般有哪些存储数据的方式。
关于软渲染器,框架已经差不多了,现在让我们进入新的内容,阴影。今天我们尝试给模型加上硬阴影,注意不是软阴影。这就是最后一节内容。
我已经迫不及待进入渲染器的实现了,上一节简述了各种原理,要记住它们十分重要,值得反复理解。接下来的工作就是重构代码,让它更加灵活,更加可用。包括之前一节遗留了一些问题,下面也会做出解释。
算上Unity Shader部分,这已经是第三次记录MVP变换的内容了,感兴趣可以翻一翻我关于Unity Shader的部分博客,或者其他地方学习。如果你学过Games101或虎书,这也对你不是难事,我将简述Lesson4的内容,然后快速进入实际应用,不在正交视图而是透视图下绘制之前的人头模型。
继光栅化之后的一大问题是,如何判断每个面谁被渲染,谁被遮挡。前一节的工作中我们绘制了所有的三角形面,但是并没有判断遮挡关系,也没有插值处理像素,这次我们解决这两个问题。
这次课程我们来想办法绘制三角形,也就是著名的光栅化,介绍两种方法实现,扫描线法和重心坐标法。Games101中使用的方法和这里介绍的不同,后面再具体说明。
经过大约一年时间的学习,深感图形学内容的丰富,加上接触了游戏引擎,从底层API到上层如unity shader都有了一定认识,但是由于之前没有系统整理,现在决定从头梳理一遍知识目录,作为日后参考使用,保持更新或修改。
TinyRenderer是一个计算机图形学课程项目,旨在通过500行的C++代码来自行编写一个渲染器,它能够读取模型,应用纹理,基础光照,以便深入理解OpenGL的运行机制,而不是讲述如何编写OpenGL的应用程序。课程共分为九部分,这里我会根据个人学习的进度来划分,学过Games101的朋友上手会很快。
到最后,我们会将整个项目集合成一个类似shader语法的渲染器,你就可以为所欲为了。
这次填上前面的坑,之前我们使用Unity-Chan的免费插件spring-bone做布料模拟,比较繁琐,这里也不选择它来介绍了,我们改用他家的Magica Cloth,操作简单方便,效果也好。输入系统Input System跟前面是一个插件,不过前面我们使用的方式最简单,但会带来问题,下面会介绍推荐使用的Asset方法。