Skip to content

pezy/Basic3D

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Basic3D

3D Graphics Library (Basic Classes) for learning

##Introductions(介绍)

在实际应用中, 构建 3D 场景都会基于比较成熟的图形库, 如OpenSceneGraphOrge, 或是为了追求效率直接使用 OpenGL 或是 Direct3D. 但无论用哪一种方案, 都毋需操心最底层的数学计算问题. 因为这些库已经或多或少的封装了一些必备数学运算操作, 尤其是关于线性代数方面的运算操作.

然而, 即使直接使用封装好的API, 有些地方还是会让人费解. 譬如旋转问题, 到底是如何旋转的, 往哪个方向旋转? 我们常常写下了代码, 却无法事先预知那些 3D 图件最终会以什么样的形式呈现. 这个现象很大程度上是因为我们对底层的实现没有一个大致的把握, 故作为使用者, 很难顺着创造者的思路进行开发. 所以, 尝试阅读源代码是一个非常必要的习惯.

源代码里, 了无秘密

如果尝试阅读过源代码, 会发现这个办法其实门槛很高. 真相就在眼前, 而迷雾却挥之不去. 对于一些数学上的公理, 定律, 源代码不会事无巨细的交代. 没有扎实的数学基础, 恐怕以上种种皆为高屋建瓴. 于是, 我们知道了, 阅读源码之前, 应该先读书.

3D数学基础: 图形与游戏开发 (原书介绍)

此书是一本绝佳的入门书籍, 它在介绍线性代数之际辅之以解释其几何含义, 让一些费解的公式更容易理解. 更令人称赞的是, 此书还结合一些实际代码, 来辅助讲解 3D 底层库中如何具体实现一些常用的计算方法.

我尝试顺着本书的思路, 从底层构建一个简单的 3D 图形计算库, 姑且命名为 Baisc3D. 而单元测试代码(*UTest.cpp)则撷取该书中课后习题作为测试用例, 顺便也验证一下我的答案是否正确. 倒也相得益彰.

注意, 本代码仅作为学习使用, 不能用于生产环境.

##Progress(进展)

标量构成了向量(B3D::Vec3), 向量的线性变换需要矩阵.

未完待续.

About

🍼 3D Graphics Library (Basic Classes) for learning

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages