`

[转]three.js和webGL

阅读更多

http://bbs.9ria.com/viewthread.php?tid=77910&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000

 


 

 

 

要看到如上图的例子你必须要有一个最新的支持webGL的浏览器。
    正如我在上一个帖子里提到的,我在用Molehill版本的Away3D实现了一个小作品之后,我很想在webGL里重新做一个相同的东西出来。所以当我知道了有一个很棒的支持Javascript的3D引擎来实现webGL之后,我就决定去试试,出来的结果也让我很兴奋。

    首先,开发过程比我预想的要简单很多。Three.js是一个很出色开发框架,下载下来的时候就包含了所有的资源文件和被缩小了的构建文件。所以要找到哪个函数是可以用的简直易如反掌。并且这个框架也包含了许多很棒的实例,从最基本的立方体模型实例到包含很多模型的复杂webGL实例,它都有。

    我现在的要做的事情就比之前做molehill实例的时候简单多了,因为我已经有了建立好的模型,随时准备开始了。所以在这里我只要把模型导入到three.js接着展示到浏览器里就好了。如果你之前在AS3里有用过Papervision3D 或者 Away3D,你将会对这个框架结构非常熟悉,因为它用到了相同的方法来创建场景、摄像机、灯光、渲染器等。又因为在这里我要实现webGL实例,所以我用了WebGLRender。但是如果浏览器不支持webGL,你也可以选择CanvasRenderer。

  1. 1.        camera = new THREE.Camera(70, window.innerWidth / window.innerHeight, 1, 1000);
  2. 2.        camera.position.y = 150;
  3. 3.        camera.position.x = 500;
  4. 4.        camera.target.position.y = 150;
  5. 5.         
  6. 6.        renderer = new THREE.WebGLRenderer();
  7. 7.        renderer.setSize(window.innerWidth, window.innerHeight);
  8. 8.        container.appendChild(renderer.domElement);
  9. 9.         
  10. 10.        car = new THREE.Object3D();
  11. 11.        scene.addObject(car);
复制代码
这些代码被添加进去之后,就只需要再载入对象和指定材质了。多亏three.js框架考虑得很周全,它有很多针对不同3D模型的扩展插件。因为我用的是Blender 3D来制作模型,我只需要安装一个插件之后从Blender里导出模型的各个部分作为.js文件,然后准备导入到我的场景中。Three.js有其他一些可用的方法,比如通过python scripts来把导出的obj文件转换成支持.js文件的.bin文件,或者就干脆转换成普通的.js文件。但就我个人而言,我更喜欢直接从Blender里导出的方法。
  1. 1.        loader = new THREE.JSONLoader(true);
  2. 2.        loader.load({ model: "js/objects/car_body.js", callback: function ( geometry ) { addPart(geometry, 0, 150, 0, carBodyMat)}});
  3. 3.        loader.load({ model: "js/objects/chrome.js", callback: function ( geometry ) { addPart(geometry, 0, 150, -17, chromeMat)}});
  4. 4.        loader.load({ model: "js/objects/glass.js", callback: function ( geometry ) { addPart(geometry, 0, 172, 91, glassMat)}});
复制代码
通过不断创建THREE.JSONLoader 对象和调用load()函数导入我的模型车的每个部分到场景中是很容易的,因为load()函数在模型文件导入的时候就会自动地调用call back函数来把模型添加到场景中而不需要设定listeners等等繁琐的东西。我碰到的惟一问题是在Blender里设定好的各个模型所在的位置坐标在导入到场景中后全部被清零,所以需要自己来重新设定每个部分的位置。所以有些部分可能有些错位,但我觉得总体还看得过去。

    不管怎样,就像我之前有说的,我真的感到很兴奋,不光是因为整个过程很简单,也是为做出的效果挺炫。比如很明显地可以看出,这个模型车的车身材质比molehill例子里要更有金属光泽。但让我大为惊讶的其实是,以我之前用webGL的经验来看,它的表现是不会这么完美的。这个例子做到的效果却比我在很撇的笔记本上做的molehill例子要好很多很多,当然,马上你就会发现,运行这个webGL的时候你的显卡一直在做大量的运算。

    就总体来说,个人觉得还是OK的。

    PS:所有的资源都可以在这里找到。

 

  • 大小: 13.8 KB
分享到:
评论

相关推荐

    Three.js-webgl物联网粮仓3D可视化

    本项目名为"Three.js-webgl物联网粮仓3D可视化",是基于WebGL技术的3D可视化管理系统,利用了Three.js库以及Vue.js框架,旨在实现对粮仓的高效管理和监控。通过JavaScript语言进行编程,结合物联网技术,该系统能够...

    Learning.Three.js.The.JavaScript.3D.Library.for.WebGL

    Learning.Three.js.The.JavaScript.3D.Library.for.WebGL Learning.Three.js.The.JavaScript.3D.Library.for.WebGL

    Three 之 three.js (webgl)透视视角和正交视角,以及透视转正交的视角切换代码

    参考博文:Three 之 three.js (webgl)透视视角和正交视角,以及透视转正交的视角切换 https://blog.csdn.net/u014361280/article/details/124544320?spm=1001.2014.3001.5501 一、简单介绍 Three js 开发的一些...

    使用THREE.js库的 WebGL 火灾模拟器.zip

    THREE.js是一个强大的JavaScript库,专门用于在Web浏览器中创建3D图形,它利用WebGL技术,这是一种基于OpenGL标准的JavaScript API,允许开发者在网页上实现高性能的交互式3D图形。在这个“使用THREE.js库的WebGL...

    WebGL 可视化3D绘图框架:Three.js 零基础上手实战.rar

    WebGL是一种基于OpenGL标准的JavaScript API,用于在任何兼容的Web浏览器中进行2D和3D图形渲染,无需插件支持。它使开发者能够在网页上创建动态、交互式的3D内容,极大地拓宽了Web开发的可能性。Three.js是建立在...

    Three 之 three.js (webgl)基础 第二个入门案例之汽车模型加载和简单模型展示CarShow

    本节介绍, three.js (webgl)入门的第二个代码程序,实现一个汽车模型的加载,以及汽车模型的简单展示,简单的模型汽车行驶,并可以修改汽车模型的颜色等,如果有不足之处,欢迎指出,或者你有更好的方法,欢迎...

    three.js+WebGL流浪地球动效源码.zip

    three.js是一个基于WebGL的JavaScript 3D库,它使得在浏览器中创建复杂的3D图形和动画变得简单易行。WebGL是一种在任何兼容的现代Web浏览器中进行硬件加速的3D图形编程接口,无需插件。 【描述】"three.js+WebGL...

    Vue+three.js+webgl小博客项目.zip

    在这个项目中,Three.js 和 WebGL 结合使用,为博客添加了引人入胜的3D视觉效果,可能是交互式的3D模型或者动画。 cityboy-master 文件夹可能包含了整个项目的源代码结构。在典型的Vue项目中,我们通常会看到以下...

    毕设项目,主要技术为Three.js和WebGL相关技术.zip

    - JavaScript文件:包含Three.js和WebGL相关代码,如场景设置、物体创建、动画实现等。 - GLSL文件:顶点和片段着色器的源代码,定义自定义的图形效果。 - 图形资源:如纹理图像、3D模型文件(.obj、.gltf等格式)。...

    Three.js视频教程源码.rar

    Three.js是基于WebGL的JavaScript库,是目前最流行的浏览器端3D图形渲染库之一,广泛应用于网页游戏、数据可视化、3D建模等领域。本教程围绕"Three.js视频教程源码.rar"展开,深入探讨Three.js的核心概念、使用技巧...

    Three.js入门指南(Three.js教程) Three.js开发指南

    第 1 章介绍 Three.js 和 WebGL 的背景资料,并通过简单的例子帮助读者实现第一个Three.js 应用。 第 2 章介绍照相机的设定。 第 3、4、5 章分别介绍几何形状、材质和网格,即如何在场景中添加物体。 第 6 章介绍...

    基于three.js和webgl开发的3D汽车展厅项目源码

    【标题】:“基于three.js和WebGL开发的3D汽车展厅项目源码”是指一个使用JavaScript库three.js和WebGL图形编程接口构建的三维汽车展示平台。该项目旨在为用户提供一个互动式的、逼真的3D环境,使用户能够在网页上...

    HTML5+Three.js+WebGL实现带重力效果的粒子喷泉动画特效源码.zip

    Three.js是基于WebGL的JavaScript库,它简化了WebGL的复杂性,提供了易于使用的接口,让开发者能够更轻松地创建3D网页内容。Three.js包含了许多3D对象、光源、相机、材质等组件,以及动画控制、加载模型等功能,使得...

    three.js渲染钻石demo

    Three.js是一个基于WebGL的JavaScript库,它允许开发者在浏览器中创建和展示复杂的3D场景。本项目名为“three.js渲染钻石demo”,其主要目标是利用three.js库来呈现一个逼真的钻石模型。 **描述:“three.js+glsl...

    three.js. 3D机房项目

    【描述】"使用three.js开发的3D机房项目"意味着项目的核心是three.js,这是一个开源的JavaScript库,专门用于创建和展示3D计算机图形。通过这个项目,开发者可以构建交互式的、高细节度的机房模型,包括服务器、空调...

    three.js+WebGL实现的3D空间随机球变换动画效果源码.zip

    three.js是一个基于JavaScript的3D库,它为WebGL提供了一个更友好的接口,使得开发者可以更容易地创建复杂的3D场景和动画。 WebGL是一种在网页上渲染3D图形的API,它基于OpenGL标准,但被设计成与JavaScript兼容,...

    Three.js引擎开发:Three.js渲染技术-(10).Three.js性能优化.docxThree.js引擎开发:Three.js渲染技术-(11).Three.js后处理效果.docxT

    Three.js引擎开发:Three.js渲染技术_(16).Three.js在WebGL中的应用.docx Three.js引擎开发:Three.js渲染技术_(17).Three.js与其他前端框架的集成.docx Three.js引擎开发:Three.js渲染技术_(18).Three.js的...

Global site tag (gtag.js) - Google Analytics