我是新手,开始在网络浏览器中学习3D计算机图形。我有兴趣在浏览器中制作3D游戏。对于那些同时学习了WebGL和three.js的人来说......
使用three.js需要WebGL知识吗?
使用three.js与WebGL有什么好处?
答案 0 :(得分:188)
由于你有雄心壮志,你必须花时间学习基础知识。这不是你首先学到的东西 - 如果你愿意,你可以同时学习它们。 (这就是我所做的。)
这意味着您需要了解:
Three.js。 Three.js可以很好地抽象出WebGL的许多细节,所以我个人建议将Three.js用于你的项目。但请记住,Three.js位于 alpha 中,而且它经常变化,因此您必须为此做好准备。大多数人通过研究这些例子来学习Three.js。避免使用过时的书籍和教程,并避免链接到旧版本库的网络示例。
WebGL。如果你使用Three.js,你不需要知道如何在WebGL中编程,你只需要了解WebGL概念。这意味着,您只需要能够阅读其他人的WebGL代码并了解您所阅读的内容。这比从头开始自己编写WebGL程序要容易得多。您可以使用网络上的任何教程充分了解WebGL概念,例如WebGLFundamentals.org和Learning WebGL的初学者教程。
数学。再次,您至少需要了解这些概念。三本好书是:
Essential Mathematics for Games and Interactive Applications: A Programmer’s Guide
我希望这对你有所帮助。祝你好运。
答案 1 :(得分:21)
在THREE.js上有一个非常好的在线课程 - https://www.udacity.com/course/cs291 的交互式3D图形。本课程还包括作业,以获得实践经验。 它涵盖了Three.js和计算机图形的所有基本概念
答案 2 :(得分:12)
我的个人想法如下:
答案 3 :(得分:11)
无论您选择哪个方向,我建议您学习/提高线性代数技能。然后继续学习或完善您对 MVP维度(模型视图投影)的理解。 Three.JS可以抽象出很多内容,但我认为在认真对待任何3D开发之前,理解这些概念是关键。
当我第一次使用OpenGL学习3D编程时,我写了introductory article about MVP。我意识到,直到我能够解释这些转换矩阵是什么,以及它们与各种维度/空间的关系,我真的根本不知道任何3D编程,尽管我可以将对象渲染到屏幕上。
由于您的目标是创建游戏,我认为您首先要学习一些原始WebGL会受益匪浅,即使您最终使用像Three.js这样的框架来帮助您稍后编写代码。
答案 4 :(得分:9)
“WebGL是2D API,而不是3D API”
http://webglfundamentals.org/webgl/lessons/webgl-2d-vs-3d-library.html
本文介绍了WebGL与Web的基本区别。三维库像three.js。
这让我在WebGL或Three.js之间做出了明智的选择。
答案 5 :(得分:6)
我当天来自Unity3D背景以及Papervision3D,所以我对如何处理3D空间有了很好的理解。 Three.js是您最初学习如何处理WebGL项目的方法。 api是非常好的,它非常强大,如果你来自另一个3D技术,你将在很短的时间内启动并运行。
我花了很多时间在Threejs.org的例子中 - 有很多这样的例子,他们非常擅长让你离开并朝着正确的方向奔跑。文档足够好,特别是如果你将它们与其他webGL 3D api进行比较。
你也可以考虑从他们的应用程序商店(Window> App store)获取Unity3D的免费版本和免费的collada(我拿到它时是免费的)导出器。我发现在Unity中设置我的场景很简单,并将其导出到Collada以便与Three.js一起使用。
另外,我发布了这个名为neo(http://rockonflash.com/webGL/three/neo.js)的Three.js使用的类。只需将它添加到您的项目中,然后调用Neo.JackIntoThree(),它将把方法/属性添加到Object3D以便在您的项目中使用。在调试场景等时,像DrawAllAxis()这样的东西是非常宝贵的。
尽管如此,Three.js是一个很好的方式 - 它足够灵活,可以让你编写自己的着色器/对象等,并且开箱即用,足以帮助你实现目标。答案 6 :(得分:3)
我拿起了三个.js,但也跳进了GLSL并用three.js shaderMaterial进行了很多实验。实现它的一种方法 - three.js仍然为你提取大部分内容,但它也为你提供了一个非常干净,低级别的访问所有渲染(投影,动画)功能。
这样,您甚至可以关注this awesome open-gl tutorial之类的内容。您不必设置矩阵,键入数组,因为三个已经为您设置,在需要时更新它们。然而,着色器,您可以从头开始编写 - 简单的颜色渲染将是两行GLSL。还有一个用于three.js的后期处理插件,用于设置所有缓冲区,全屏四边形以及执行效果所需的内容,但着色器开始时非常简单。
由于可编程着色器是现代3D图形的本质,我希望我的回答不会错过这一点:)迟早,任何做这件事的人都需要至少了解引擎盖下的内容,它是什么?野兽的本质。此外,理解均匀空间中的第四维也许很重要。
答案 7 :(得分:2)
我刚刚学到了两点,我觉得理解webgl的基础知识,我认为对webgl的介绍就足够了,然后跳进三个j。一旦理解了WebGL的基本概念,这将非常容易。 有用的链接: