我对Three.js 3D JavaScript库非常熟悉,我知道如何添加对象,灯光,纹理,将它们分组并将它们移动一点点,然后可以用相机来玩。
我想知道的是如何通过了解内部运作将其提升到新的水平。我已经很好地了解了矩阵之类的信息,但我发现的只是复杂的数学例子。
我想知道是否有人可以指向任何有助于我学习如何在three.js中执行更复杂操作的网站或书籍,例如将对象添加到对象上的特定顶点,或者如何找到一个球体的边缘并让另一个球体围绕它滚动。
然后使用向量,我可以学习如何让对象以特定方式移动吗?我愿意付出努力,但我不知道我应该阅读什么以及这种类型的库会有什么相关性。
答案 0 :(得分:5)
查看linear algebra for computer graphics。有很多资源可供选择。尝试找到更贴近你背景的东西。如果数学不是你的背景的一部分,没有问题,转向更多与游戏开发相关的领域。
我个人推荐3D Math Primer,因为它是由经验丰富的游戏开发者以易于理解的方式编写的。使用数字开始在1D计数羊,就这么简单!这本书详细解释了数学(线性代数,几何)和矢量,矩阵,四元数等概念背后的代码。本书使用C ++,但如果您已熟悉javascript,则理解语法会相当简单。关键是要熟悉这些概念,因为three.js已经实现了向量,矩阵,四元数等等。这是理解它们的作用,特别是如何使用它们。
如果有帮助,您还可以查看Khan Academy resources on Linear Algebra(例如Vectors,matrices等,但计算机图形方面的数学方面的焦点越来越少。 Mathematics tutorials from Game Institute很棒,但遗憾的是不是免费的。
从基础知识开始:什么是向量,什么是典型的向量运算(使用叉积获得2个向量之间的垂直,使用点积得到两个向量之间的角度等),然后查看自己的步调那里。矩阵可能看起来很可怕,但是在你理解了向量之后它们会更有意义。
由于three.js已经提供了很多功能,你可以阅读有关数学的内容并直接在three.js中进行尝试 - 边做边学。
只是要补充一下,mr.doob添加了一个链接到一个非常酷(和免费)的课程,在Interactive 3D Graphics上讲授三个.js,涵盖了向量和矩阵。我热烈推荐它,它非常好解释,很容易理解。