我是新手,开始学习Web浏览器中的3D计算机图形。我对在浏览器中制作3D游戏感兴趣。对于同时学习WebGL和three.js的任何人...
使用three.js是否需要WebGL知识?
使用three.js与WebGL相比有什么优势?
我是新手,开始学习Web浏览器中的3D计算机图形。我对在浏览器中制作3D游戏感兴趣。对于同时学习WebGL和three.js的任何人...
使用three.js是否需要WebGL知识?
使用three.js与WebGL相比有什么优势?
Answers:
由于您有雄心壮志,因此您必须花费时间来学习基础知识。这与您首先学习的内容无关,您可以同时学习它们。(这就是我所做的。)
这意味着您需要了解:
Three.js。Three.js在抽象WebGL的许多细节方面做得非常出色,因此我个人建议在您的项目中使用Three.js。但是请记住,Three.js在alpha中,并且它经常更改,因此您必须为此做好准备。大多数人通过研究示例来学习Three.js。避免使用过时的书籍和教程,并避免使用网络中链接到旧版本库的示例。
WebGL。如果您使用Three.js,则无需了解如何在WebGL中进行编程,只需了解WebGL概念即可。这意味着,您只需要能够阅读他人的WebGL代码并理解您所阅读的内容。这比从头开始编写WebGL程序要容易得多。您可以使用网上的任何教程(例如,WebGLFundamentals.org上的初学者教程和Learning WebGL)来充分学习WebGL概念。
数学。同样,您至少需要了解概念。三本好书是:
Fletcher Dunn和Ian Parberry的图形和游戏开发3D数学入门
游戏和互动应用程序的基本数学: James M. Van Verth和Lars M. Bishop的程序员指南
Eric Lengyel的3D游戏编程和计算机图形学数学
希望对您有帮助。祝好运。
在THREE.js 上的https://www.udacity.com/course/cs291上有一门非常好的在线课程-交互式3D图形。该课程还包括一些作业,以获得实践经验。它涵盖了Three.js和计算机图形学的所有基本概念
“ WebGL是2D API,而不是3D API”
http://webglfundamentals.org/webgl/lessons/webgl-2d-vs-3d-library.html
本文介绍了WebGL和3d库(例如three.js)之间的根本区别。
这使我在WebGL或Three.js之间进行选择变得轻而易举。
那天我既来自Unity3D背景,也来自Papervision3D,所以我对如何处理3D空间有很好的了解。Three.js是您初步了解如何处理WebGL项目的方法。该API非常好,它非常强大,如果您使用其他3D技术,则只需很少的时间即可启动并运行。
我花了很多时间在Threejs.org的示例上-有很多示例,它们非常擅长引导您朝正确的方向前进。这些文档足够不错,尤其是当您将它们与其他webGL 3D api进行比较时。
您可能还考虑从他们的应用程序商店(“窗口”>“应用程序商店”)获得免费版本的Unity3D和免费的collada(我领取时是免费的)导出程序。我发现在Unity中设置场景并将其导出到Collada以与Three.js一起使用非常容易。
另外,我发布了与Three.js一起使用的此类类,称为neo(http://rockonflash.com/webGL/three/neo.js)。只需将其添加到您的项目中,然后调用Neo.JackIntoThree(),它将把方法/属性添加到Object3D中以在您的项目中使用。调试场景等时,诸如DrawAllAxis()之类的东西是无价的。
不过,Three.js是一个不错的选择-它足够灵活,可以让您编写自己的着色器/对象等,并且功能强大,可以帮助您实现目标。
我选择了three.js,但同时也跳入GLSL,并尝试了Three.js shaderMaterial。一种解决方法-three.js仍为您抽象了很多内容,但它还为您提供了一种非常干净的低级访问所有渲染(投影,动画)功能的方法。
这样一来,您甚至可以遵循类似这个很棒的open-gl教程的内容。您不必设置矩阵,类型数组,因为三个已经为您设置好了,可以在需要时进行更新。不过,着色器可以从头开始编写-简单的彩色渲染将是两行GLSL。还有一个针对Three.js的后期处理插件,用于设置所有缓冲区,全屏四边形以及您需要用来制作效果的内容,但着色器一开始可能非常简单。
由于可编程着色器是现代3D图形的本质,因此我希望我的答案不会错过重点:)迟早要这么做的人至少需要了解引擎盖下发生的事情,这就是野兽的本质。同样,了解均匀空间中的第四维也可能很重要。
我刚刚学到了两者,并且我觉得了解webgl的基础知识,我认为对webgl的介绍就足够了,然后跳入三个js。一旦了解了WebGL的基本概念,这将非常容易。有用的链接: