广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    Three.js实现人体模特加贴图的效果

    来源:网络收集  点击:  时间:2024-05-17
    【导读】:
    Three.js是一款开源的主流3D绘图JS引擎(名字Three就是3D的含义),用来简化WebGL编程,也提供了非常多的3D显示功能来实现很多炫酷的实例。本文利用Three.js实现人体模特加贴图的效果(重点功能是Collada文件加载器),最终效果如下图:工具/原料moreSublime TexChrome浏览器调试编写静态页面1/1分步阅读

    html代码和css样式如下图,这一块比较简单,也不是本文重点,代码可自行查看下图。

    实现过程1/6

    声明变量,详细代码如下图,具体用途说明都已经有备注。

    2/6

    新建渲染器(initRenderer)和相机(initCamera),详细代码如下图:

    1.渲染器设置抗锯齿为有效(antialias: true),使物体更光滑;

    2.PerspectiveCamera的视角设置为10,使人体模特看起来变大(源文件太小);

    4.为了观察效果,相机的位置定位到(-5,20,5),设置z轴向上(摆正人体模特的源文件),且焦点为人体模特的位置(camera.lookAt(child.position))。

    3/6

    新建场景(initScene)和光源(initLight),详细代码如下图:

    1.新建环境光(ambientLight),光源的颜色会叠加到物体的颜色上(不加上环境光,人体模特会显示纯黑色)。

    Tips:环境光没有位置的概念。

    4/6

    新建物体(initObject),这一块比较复杂,详细分析如下:

    1.新建3D对象(group),用于包含贴图和人体模特,作为一个整体;

    2.新建平面模型(plane),使用贴图(texture)的纹理,且位置(plane.position)、大小(plane.scale)和角度(plane.rotation)对比人体模特进行调整,然后添加到group(最佳效果是平面模型换为加载人体模特中间一块,贴合性更好);

    3.新建Collada文件加载器(loader),在加载(loader.load)人体模特(avatar.dae)时,遍历所有对象(collada.scene.traverse),如果存在蒙皮网孔对象,则对该对象进行角度(child.rotation)和大小(child.scale)的调整,使人体模特摆正显示,然后添加到group;

    4.把group添加到场景中(scene),并在加载完毕执行渲染(setTimeout(animation, 100));

    5.添加轴辅助功能,方便理解场景中的维度。

    5/6

    执行上面的函数,并把最终效果渲染到网页上。

    6/6

    新建轨道控制器,可以使用鼠标对人体模特进行360观察、放大缩小和进行移动,详细代码如下图。

    注意事项

    three.js只要加载数据都需要发布后才能正常查看;

    常用的构造器、属性和方法可参考《实例介绍three.js常用的构造器、属性和方法》,这里只分析特殊的代码。

    人体模特贴图
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_783849.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-06 04:02:59  耗时:0.025
    0.0248s