您的位置:首页 > Web前端 > JavaScript

ThreeJs 从0到1

2017-12-29 15:30 344 查看
最近项目事情较少,抽出来几天研究了webGL的一些知识,选择了简单且比较容易的ThreeJS入手。看了两天,因为资料比较缺乏,文章都是片段式的,特别是在做复杂效果的时候,感觉缺乏思路。经过不懈的探索,终于算入门了,特在此分享一些心得体会和比较好的资料。以下是我根据obj模型渲染出来的demo。只是简单渲染了外壳,内饰还没渲染。本文不讲基础,只讲我再学习过程中的一些疑问以及最后找到的答案。



建议:
1.先下载Threejs官方在GitHub上的源码,里面有一百多个实例,撸一遍,基础知识基本有了。
2.基础概念要扎实:环境光  平行光  物体  材质(这个很懵逼)  贴图。
   我花了几天时间学了以上内容,同时敲了一系列demo,基础有了,但是毕竟学来是要干事情的,当我在思考如何渲染一个复杂模型(比如一辆车)的时候,却是一团雾水。网上的教程最多也是把一个模型导进去,远远满足不了我的需求。甚至大神们做的,还可以开车门等等。
  终于搞了了一个复杂模型,就是图上的车,拿来练手。慢慢有以下收获:
  1.不同格式的模型有不同的解析方式,就是不同的loader,不同的loader拥有完全不同的数据格式和解析方法。
   2.拿obj格式的模型来说,做复杂webGL是需要和设计师紧密配合的,同时必须学习建模知识。
   3.引出第三点,为什么我们再看材质的时候一头雾水,大家也不必过分纠结(我这里纠结了很久,最后发现看不懂是正常的,必须设计师来指导),材质是一个复杂的概念,这里不绕大家,材质带有很多参数,比如:specular sunshine,这些参数其实设计师一眼就明白了,比如你需要把一个平面做成一块镜子,请教设计师,甚至可以让他在软件中把参数导出来,设置好就ok。
 4.复杂模型,在loader解析完的回调中可以取出多个子模型,按照顺序依次渲染每个子模型,最终就完成一个复杂模型的渲染。
 5.最简单的方式,是导出带材质的模型(比如obj的mtl和各种贴图),调调适配就行了,很多公司都不这样做,因为在程序中写更灵活。
 最后缺乏学习资源的可以给我留言。谢谢大家。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ThreeJS