学习WebGL和three.js

时间:2012-08-15 09:16:34

标签: webgl three.js

我是新手,开始在网络浏览器中学习3D计算机图形。我有兴趣在浏览器中制作3D游戏。对于那些同时学习了WebGL和three.js的人来说......

  1. 使用three.js需要WebGL知识吗?

  2. 使用three.js与WebGL有什么好处?

8 个答案:

答案 0 :(得分:188)

由于你有雄心壮志,你必须花时间学习基础知识。这不是你首先学到的东西 - 如果你愿意,你可以同时学习它们。 (这就是我所做的。)

这意味着您需要了解:

  1. WebGL概念
  2. three.js所
  3. 基础数学概念
  4. Three.js。 Three.js可以很好地抽象出WebGL的许多细节,所以我个人建议将Three.js用于你的项目。但请记住,Three.js位于 alpha 中,而且它经常变化,因此您必须为此做好准备。大多数人通过研究这些例子来学习Three.js。避免使用过时的书籍和教程,并避免链接到旧版本库的网络示例。

    WebGL。如果你使用Three.js,你不需要知道如何在WebGL中编程,你只需要了解WebGL概念。这意味着,您只需要能够阅读其他人的WebGL代码并了解您所阅读的内容。这比从头开始自己编写WebGL程序要容易得多。您可以使用网络上的任何教程充分了解WebGL概念,例如WebGLFundamentals.orgLearning WebGL的初学者教程。

    数学。再次,您至少需要了解这些概念。三本好书是:

      Fletcher Dunn和Ian Parberry的
    1. 3D Math Primer for Graphics and Game Development

    2. James M. Van Verth和Lars M. Bishop的
    3. Essential Mathematics for Games and Interactive Applications: A Programmer’s Guide

    4. Eric Lengyel的
    5. Mathematics for 3D Game Programming and Computer Graphics

    6. 我希望这对你有所帮助。祝你好运。

答案 1 :(得分:21)

在THREE.js上有一个非常好的在线课程 - https://www.udacity.com/course/cs291 的交互式3D图形。本课程还包括作业,以获得实践经验。 它涵盖了Three.js和计算机图形的所有基本概念

答案 2 :(得分:12)

我的个人想法如下:

  • 如果你有足够的时间,你可以学到两者,但请注意WebGL的水平远低于Three.js。
  • 对于第一个3D项目,专家建议使用像Three.js这样的库来熟悉术语和一般的3d模型。

答案 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图形的本质,我希望我的回答不会错过这一点:)迟早,任何做这件事的人都需要至少了解引擎盖下的内容,它是什么?野兽的本质。此外,理解均匀空间中的第四维也许很重要。

This book is good for WebGL.

答案 7 :(得分:2)

我刚刚学到了两点,我觉得理解webgl的基础知识,我认为对webgl的介绍就足够了,然后跳进三个j。一旦理解了WebGL的基本概念,这将非常容易。 有用的链接:

  1. 最佳介绍我读过: http://dev.opera.com/articles/view/an-introduction-to-webgl/
  2. 综合教程: http://www.johannes-raida.de/tutorials.htm