制作可调节的眼镜模型思路分享

眼镜

  大家好,我是阿赵。
  之前和一位朋友聊天的时候,他说最近接触到一个眼镜公司的项目。这个项目的内容是可以通过三维扫描仪,把客户的脸部模型扫码到电脑,然后通过开发一个软件,可以给客户试戴眼镜,客户可以选择眼镜的款式,然后可以调节修改眼镜的一些大小、瞳距、宽度、长度之类的参数,最后眼镜的镜框可以通过3D打印生成出来成品。
  这个项目里面用到的技术,似乎刚好我都懂。我这里来分析一下。
  首先,三维扫描仪,这个东西之前我也曾经介绍过,手持的三维扫描仪几千元有交易,用新款iPhone的激光雷达配合着专业的软件,也能达到同样的效果。所以这一部分问题不大。
  第二部分, 需要制作一款软件,给客户选择镜框款式,并且调节大小。这一部分,是不是很熟悉呢?其实就类似于玩游戏里面的捏脸功能。
  第三部分, 把调节好的眼镜框模型保存下来。这一步的实现,依赖于第二部分的制作方式。最后保存的格式就多种多样了,因为我们只是需要一个网格模型,不需要带其他参数,所以使用最简单的Obj格式就可以了。
  第四部分, 3D打印。这部分实际上涉及到专业的材料。因为镜框的特殊性,肯定不能就简单的使用PLA或者ABS材质来打印了,有专门的树脂或者金属材质。这方面需要专业的3D打印机,就不在我这里的讨论范围内了。不过据说这部分对于眼镜公司来说反而是最不成问题的。
  所以问题就集中在第二和第三部分了。我当时花了半个小时,做了一个demo,就是视频里面的效果,其实已经完全满足了眼镜公司的需求了。当然,我并没有收一分钱,因为这里面涉及到一些细节会比较耗时间,我觉得自己并不能长期提供后续的服务。
  我这里也把思路分享一下。当然做法肯定不止一种,我也只是提供一个我想到的比较简单能实现的方法,也许其他朋友会有更好的想法,也欢迎提出来交流一下。
在这里插入图片描述

  我这个demo里面,由于我只简单的做了一个眼镜框的模型,所以并没有选择款式的步骤。不过其实所谓的选择款式,只是做多几种镜框模型来选择而已,所以这里就先忽略了。
  然后调节颜色就更简单了,只是改变一下材质球的颜色:
在这里插入图片描述

  接下来是重点了,改变眼镜框的各个部位的大小和距离。由于我只是演示,所以只做了3个条件,分别是瞳距、眼镜宽度和柄长度调节。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  这个调节过程的本质是改变模型网格的形状,不能整体的缩放,需要局部的缩放和移动调节。为了达到这个目的,我是使用了骨骼蒙皮的方式实现的。
  在类似于3DsMax或者Maya之类的软件里面,都可以实现这个骨骼蒙皮的操作。根据镜框的形状,然后需要调整的部位,设计好骨骼的分别和父子连接关系,并且蒙皮。
在这里插入图片描述
在这里插入图片描述

  当骨骼移动的时候,镜框的网格就会跟着动:
在这里插入图片描述

  还有一个特性,父节点缩放的时候,子节点是会同时缩放的:
在这里插入图片描述

  知道了这两个特性之后,剩下的问题就是把这个模型导入到三维引擎里面,然后找到各个需要调整的部位,并且通过代码去控制对应骨骼的移动、旋转和缩放了。
  最后,需要把模型保存下来。由于是蒙皮骨骼,所以在调整后,其实是可以把Mesh给bake下来变成一个新的Mesh模型。
  整个过程就是这么短,但这里面有一个比较难的点,就是怎样去设计骨骼的父子连接关系。不同的骨骼需要对应不同的可调整点,然后父节点可以同时控制自己的子节点。虽然原则很简单,但如果需要调整的局部位置有所变化,那么骨骼的设计方式就要跟着改变。我图里面的骨骼摆放和连接方式,只是我的随手摆放,其实如果需求要我任意的改变镜框的形状,这个摆放方法也是不行的,需要重新设计。这方面需要多次的尝试,比较耗费时间。
  其实游戏里面的捏脸功能也同样可以这样实现的。当年在首师大的三维培训班里面,老师在毕业时就给我们讲了一套人头骨骼控制肌肉的分布方式,可以通过骨骼带动角色做各种表情,同样的也能通过骨骼调整模型脸部的各个部位。如果可以调节的脸部部位不是很多的情况下,在调节完成后,把参数保存一下。下次需要显示的时候,简单的读取这些参数,然后把对应的骨骼位移旋转缩放一下,就能得到捏脸的效果了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值